lumify-ai · Schema

GradeSlipRequest

CompanySportsAIReal-timeBetting

Properties

Name Type Description
legs array Structured legs (preferred). Cap 8.
text object Free-text slip (e.g. "Chase over 74.5 receiving yards tonight"). Date words (today, tonight, yesterday, last night, last Wednesday, this Thursday, or an ISO date) narrow the event window. A roster-tea
clues object Optional sport / league / event_id / team_id / team_text clues for free-text mode.
options object
View JSON Schema on GitHub

JSON Schema

lumify-ai-grade-slip-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/lumify-ai/json-schema/lumify-ai-grade-slip-request-schema.json",
  "title": "GradeSlipRequest",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/lumify-ai-openapi.json#/components/schemas/GradeSlipRequest",
  "properties": {
    "legs": {
      "items": {
        "$ref": "#/$defs/GradeSlipLegInput"
      },
      "type": "array",
      "title": "Legs",
      "description": "Structured legs (preferred). Cap 8."
    },
    "text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Text",
      "description": "Free-text slip (e.g. \"Chase over 74.5 receiving yards tonight\"). Date words (today, tonight, yesterday, last night, last Wednesday, this Thursday, or an ISO date) narrow the event window. A roster-team mention (CIN, Niners) is resolved first — a unique team_id scopes the player; ambiguous/not_found stays on team_resolve. vs/at on a player prop is the opponent and narrows the event, not the player's team. Game phrases also include Yankees to win, Yankees over 4.5 runs (team_total), and Over 52.5 Syracuse vs Pittsburgh. A colliding nickname plus a date promotes only the unique in-window team; a football-sized line will not pick a baseball club, and vs plus that date keeps the unique matchup. A tennis moneyline with a full player name (Novak Djokovic ML) binds as a player, not a team; vs names the opponent player. Last-name-only tennis stays unmapped. A last-name-only player prop (Bergeron over 1.5 shots on goal last night) grades when a date is present and that surname is unique in scope — a named sport, team, or event narrows it (Johnson nhl last night); with no such clue, uniqueness is across every prop sport visible to the key. No date, or a surname shared by more than one player in that scope, still stays unmapped unless a date is present and exactly one of those candidates played in the window (optionally vs a named opponent). \"anytime goal\"/\"anytime assist\" implies soccer_goals/soccer_assists over 0.5 with no explicit number; \"over a hit\"/\"over a homer\" implies hits/home_runs over 1.0. Graded only when player and event resolve uniquely. Otherwise unmapped with candidates on resolve / team_resolve / event_resolve — free text never invents a grade."
    },
    "clues": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Clues",
      "description": "Optional sport / league / event_id / team_id / team_text clues for free-text mode."
    },
    "options": {
      "$ref": "#/$defs/GradeSlipOptions"
    }
  },
  "additionalProperties": true,
  "type": "object",
  "$defs": {
    "GradeSlipLegInput": {
      "properties": {
        "event_id": {
          "type": "integer",
          "title": "Event Id",
          "description": "Lumify event id."
        },
        "player_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Player Id",
          "description": "Lumify player id from resolve_player or GET /v1/players. Required on player-prop markets. Forbidden on h2h, spreads, totals, and team_total."
        },
        "team_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Team Id",
          "description": "Lumify team id from resolve_team or GET /v1/teams. Required on team_total. Forbidden on player-prop, h2h, spreads, and totals (those use side=home|away, not a team id)."
        },
        "market_key": {
          "type": "string",
          "title": "Market Key",
          "description": "Settleable player-prop slug (e.g. receiving_yards), game market h2h | spreads | totals, or team_total. Common aliases are accepted: player_reception_yds -> receiving_yards, moneyline/ml -> h2h, spread -> spreads, total/ou -> totals, team totals/tt -> team_total."
        },
        "line": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Line",
          "description": "Submitted ticket line to grade against the official score. Required on player-prop, spreads, totals, and team_total legs — signed to the side on the ticket (e.g. side=home with a home -3.5 favorite is line=-3.5, not 3.5). Omit on h2h."
        },
        "side": {
          "type": "string",
          "title": "Side",
          "description": "Player-prop, totals, and team_total: over | under (o | u also accepted). Spreads: home | away — matches the signed line above, not the favorite. Moneyline: home | away, or draw on soccer three-way."
        }
      },
      "additionalProperties": true,
      "type": "object",
      "required": [
        "event_id",
        "market_key",
        "side"
      ],
      "title": "GradeSlipLegInput"
    },
    "GradeSlipOptions": {
      "properties": {
        "include_branding": {
          "type": "boolean",
          "title": "Include Branding",
          "description": "Attribution block is always present in this version.",
          "default": true
        },
        "max_legs": {
          "type": "integer",
          "maximum": 8.0,
          "minimum": 1.0,
          "title": "Max Legs",
          "description": "v0 cap is 8 legs.",
          "default": 8
        },
        "auto_resolve": {
          "type": "boolean",
          "title": "Auto Resolve",
          "description": "When free-text uniquely resolves a player and event, grade that leg. Ambiguous resolve never auto-picks a candidate.",
          "default": true
        }
      },
      "additionalProperties": true,
      "type": "object",
      "title": "GradeSlipOptions"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/lumify-ai-grade-slip-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.