Cito CS2 API · Schema

LiveMatchDetail

Detailed live match state snapshot.

CompanyAPIEsportsGamingData

Properties

Name Type Description
id string Canonical match identifier (same value as match_id)
match_id string Unique live match ID
started_at object When the match went in-play (ISO 8601)
round_name object Human label for the round code
tour object ATP or WTA
tournament_id object Tournament id once this match is reconciled to a tournament; null while it is still on the live feed
tournament_name string Tournament name
court object Court name
best_of object Best of 3 or 5
round string Round
surface string Surface
status string Status
player1 object Player 1 state
player2 object Player 2 state
winner_side object 1 or 2 once decided; null while in progress
current_set integer Current set number
game_score string Current game point score
server integer Current server index (1 or 2)
tiebreak_score object Active tiebreak score
sets array Set scores
point_history object Recent point timeline
stats array Per-side match statistics
View JSON Schema on GitHub

JSON Schema

citoapi-tennis-live-match-detail-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/citoapi/main/json-schema/citoapi-tennis-live-match-detail-schema.json",
  "title": "LiveMatchDetail",
  "description": "Detailed live match state snapshot.",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/citoapi-v1-openapi.json#/components/schemas/TennisLiveMatchDetail",
  "properties": {
    "id": {
      "type": "string",
      "title": "Id",
      "description": "Canonical match identifier (same value as match_id)"
    },
    "match_id": {
      "type": "string",
      "title": "Match Id",
      "description": "Unique live match ID"
    },
    "started_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Started At",
      "description": "When the match went in-play (ISO 8601)"
    },
    "round_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Round Name",
      "description": "Human label for the round code"
    },
    "tour": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Tour",
      "description": "ATP or WTA"
    },
    "tournament_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Tournament Id",
      "description": "Tournament id once this match is reconciled to a tournament; null while it is still on the live feed"
    },
    "tournament_name": {
      "type": "string",
      "title": "Tournament Name",
      "description": "Tournament name"
    },
    "court": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Court",
      "description": "Court name"
    },
    "best_of": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Best Of",
      "description": "Best of 3 or 5",
      "default": 3
    },
    "round": {
      "type": "string",
      "title": "Round",
      "description": "Round"
    },
    "surface": {
      "type": "string",
      "title": "Surface",
      "description": "Surface",
      "default": "Hard"
    },
    "status": {
      "type": "string",
      "title": "Status",
      "description": "Status",
      "default": "IN_PROGRESS"
    },
    "player1": {
      "$ref": "#/$defs/TennisLivePlayerState",
      "description": "Player 1 state"
    },
    "player2": {
      "$ref": "#/$defs/TennisLivePlayerState",
      "description": "Player 2 state"
    },
    "winner_side": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Winner Side",
      "description": "1 or 2 once decided; null while in progress"
    },
    "current_set": {
      "type": "integer",
      "title": "Current Set",
      "description": "Current set number",
      "default": 1
    },
    "game_score": {
      "type": "string",
      "title": "Game Score",
      "description": "Current game point score",
      "default": "0-0"
    },
    "server": {
      "type": "integer",
      "title": "Server",
      "description": "Current server index (1 or 2)",
      "default": 1
    },
    "tiebreak_score": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Tiebreak Score",
      "description": "Active tiebreak score"
    },
    "sets": {
      "items": {
        "$ref": "#/$defs/TennisLiveSetScore"
      },
      "type": "array",
      "title": "Sets",
      "description": "Set scores"
    },
    "point_history": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Point History",
      "description": "Recent point timeline"
    },
    "stats": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "title": "Stats",
      "description": "Per-side match statistics"
    }
  },
  "type": "object",
  "required": [
    "id",
    "match_id",
    "tournament_name",
    "round",
    "player1",
    "player2"
  ],
  "$defs": {
    "TennisLivePlayerState": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Id",
          "description": "Player ID"
        },
        "name": {
          "type": "string",
          "title": "Name",
          "description": "Player display name"
        },
        "ioc": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ioc",
          "description": "Country IOC code, the same key the match and h2h participant objects use"
        },
        "seed": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Seed",
          "description": "Tournament seed"
        },
        "sets_won": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Sets Won",
          "description": "Completed sets won in this match",
          "default": 0
        },
        "current_game_score": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Current Game Score",
          "description": "Current point score (0, 15, 30, 40, AD)",
          "default": "0"
        },
        "is_serving": {
          "type": "boolean",
          "title": "Is Serving",
          "description": "Whether this player is currently serving",
          "default": false
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "title": "LivePlayerState",
      "description": "Player status in an active live match."
    },
    "TennisLiveSetScore": {
      "properties": {
        "set_num": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Set Num",
          "description": "Set number"
        },
        "set_number": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Set Number",
          "description": "Canonical set number (same value as set_num)"
        },
        "score": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Score",
          "description": "Set score string"
        },
        "player1_games": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Player1 Games",
          "description": "Games won by Player 1"
        },
        "player2_games": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Player2 Games",
          "description": "Games won by Player 2"
        },
        "tiebreak": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Tiebreak",
          "description": "Tiebreak score if applicable"
        },
        "is_completed": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Is Completed",
          "description": "Whether this set is concluded"
        }
      },
      "type": "object",
      "title": "LiveSetScore",
      "description": "Set score item in live match.\n\n``set_number`` is the canonical field name (shared with the match\narchive, which otherwise calls this ``winner_games``/``loser_games``'s\ncounterpart ``set_number``); ``set_num`` stays for back-compat."
    }
  }
}

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/citoapi-tennis-live-match-detail"
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.