My Court Score Developer Platform

Koppel uw applicaties aan live tennis

Een versiebeheer REST API voor wedstrijden, livescores, spelers, clubs en toernooien.

Belangrijk: elke resource behoort toe aan de API-sleutel die deze heeft aangemaakt

Het eigendom wordt gecontroleerd op de exacte API-sleutel, niet alleen op het ontwikkelaarsaccount of het gekoppelde My Court Score-account.

Voorbeeld: sleutel A maakt match 125. Alleen sleutel A kan deze wijzigen, een punt toevoegen of verwijderen. Sleutel B wordt geweigerd.

Gebruik één stabiele sleutel per integratie en omgeving. Intrekken of verliezen van die sleutel verwijdert de schrijftoegang tot de resources die ermee zijn aangemaakt. resource_owned_by_another_api_key · resource_not_created_by_api_key

API voor ontwikkelaars

Create a separate developer identity, then link it to the player or club account whose data the integration may manage.
Nieuwe ontwikkelaar

Ontwikkelaarsaccount maken

Maak uw ontwikkelaarsruimte aan om uw API-sleutels te genereren en beheren.

Snel starten

JSON over HTTPS. All protected calls use a bearer key.
OpenAPI JSON downloaden
Base URLhttps://mycourtscore.com/api/v1
AuthenticationAuthorization: Bearer mcs_live_...
Formatapplication/json · UTF-8 · OpenAPI 3.1

Read your API identity

curl "https://mycourtscore.com/api/v1/me" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Create a match without duplicate risk

curl -X POST "https://mycourtscore.com/api/v1/matches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: match-2026-09-27-001" \
  -d '{"player1":"Lucas Martin","player2":"Nathan Smith","sets_to_win":2}'

Write requests may use an Idempotency-Key header to prevent duplicate resources or actions after a network retry. Responses include X-Request-Id and rate-limit headers.

Strikt eigendom: een resource kan alleen worden gewijzigd, verwijderd of gebruikt voor een schrijfactie met exact dezelfde API-sleutel die deze heeft aangemaakt.

Webhooks are not included in this first version.

Endpointcatalogus

27 resource paths. Write operations enforce both scopes and data ownership.

System

GET /health Check API availability Public
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

Geen parameters vereist.

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/health"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "status": "ok",
        "version": "v1",
        "time": "2026-09-27T14:12:08+00:00"
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /me Read the developer key identity and linked account authenticated
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/me" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "developer": {
            "id": 7,
            "name": "Example Integration",
            "email": "developer@example.com"
        },
        "api_key": {
            "id": 12,
            "name": "Production backend",
            "prefix": "mcs_live_ab12",
            "scopes": [
                "matches:read",
                "matches:write"
            ],
            "rate_limit_per_minute": 120
        },
        "linked_account": {
            "type": "club",
            "id": 18
        }
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}

Matches

GET /matches List matches visible to the API key matches:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
pagequeryintegerOptioneelPage number, starting at 1.1
per_pagequeryintegerOptioneelItems per page, from 1 to 100.25
statusquerystringOptioneelFilter by match status.enum: active, finishedactive
qquerystringOptioneelSearch by player, title, court or match number.Lucas
updated_sincequerystringOptioneelOnly matches updated since this ISO 8601 date and time.2026-09-27T12:00:00Z

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/matches?page=1&per_page=25&status=active&q=Lucas&updated_since=2026-09-27T12%3A00%3A00Z" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 125,
            "number": 125,
            "title": "Club championship",
            "type": "Singles",
            "court_name": "Court 1",
            "status": "active",
            "winner_player": 0,
            "winner_name": "",
            "quick_result": false,
            "public_access": "open",
            "players": [
                {
                    "side": 1,
                    "name": "Lucas Martin",
                    "player_id": 42,
                    "club_id": 18,
                    "sets": 1,
                    "games": 3,
                    "points": "30",
                    "serving": true
                },
                {
                    "side": 2,
                    "name": "Nathan Smith",
                    "player_id": 57,
                    "club_id": 18,
                    "sets": 0,
                    "games": 2,
                    "points": "15",
                    "serving": false
                }
            ],
            "score": {
                "current_set": 2,
                "is_tiebreak": false,
                "is_super_tiebreak": false,
                "sets": [
                    {
                        "set": 1,
                        "p1": 6,
                        "p2": 4
                    }
                ]
            },
            "rules": {
                "sets_to_win": 2,
                "games_to_win_set": 6,
                "tie_break_enabled": true,
                "tie_break_at_games": 6,
                "tie_break_points": 7,
                "final_set_rule": "regular_tiebreak",
                "final_set_tiebreak_points": 10,
                "no_ad_scoring": false,
                "advanced_point_mode": true
            },
            "audience": {
                "total_viewers": 84,
                "watching_now": 12
            },
            "links": {
                "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
                "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
            },
            "created_at": "2026-09-27 13:30:00",
            "updated_at": "2026-09-27 14:12:08",
            "finished_at": null
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123",
        "pagination": {
            "page": 1,
            "per_page": 25,
            "total": 1,
            "total_pages": 1
        }
    }
}
POST /matches Create a match matches:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 201

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
titlestringOptioneelMatch title.Club championship
typestringOptioneelMatch category.Singles
court_namestringOptioneelCourt 1
player1stringVerplichtDisplayed name for player 1. Required when player1_id is not supplied.Lucas Martin
player2stringVerplichtDisplayed name for player 2. Required when player2_id is not supplied.Nathan Smith
player1_idintegerOptioneelOptional official player identifier.42
player2_idintegerOptioneelOptional official player identifier.57
player1_club_idintegerOptioneel18
player2_club_idintegerOptioneel18
sets_to_winintegerOptioneelmin: 1 · max: 3 · default: 22
games_to_win_setintegerOptioneelmin: 1 · max: 12 · default: 66
tie_break_enabledbooleanOptioneeldefault: truetrue
tie_break_at_gamesintegerOptioneelmin: 1 · max: 12 · default: 66
tie_break_pointsintegerOptioneelmin: 3 · max: 30 · default: 77
final_set_rulestringOptioneelenum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreakregular_tiebreak
final_set_tiebreak_pointsintegerOptioneelmin: 3 · max: 30 · default: 1010
no_ad_scoringbooleanOptioneeldefault: falsefalse
advanced_point_modebooleanOptioneeldefault: falsefalse
livechat_enabledbooleanOptioneeldefault: falsefalse
initial_serverintegerOptioneelenum: 1, 2 · default: 11
public_accessstringOptioneelenum: open, password, hidden · default: openopen
public_passwordstringOptioneelRequired only when public_access is password.minLength: 4string

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/matches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "player1": "Player One", "player2": "Player Two", "title": "API test match", "type": "Singles", "sets_to_win": 2, "games_to_win_set": 6 }'

Voorbeeldantwoord · HTTP 201

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "active",
        "winner_player": 0,
        "winner_name": "",
        "quick_result": false,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": null
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /matches/{matchId} Read a match and its current score matches:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/matches/125" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "active",
        "winner_player": 0,
        "winner_name": "",
        "quick_result": false,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": null
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
PATCH /matches/{matchId} Update match information and rules matches:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Velden van de JSON-body

Supply only the match fields that need to change.

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
titlestringOptioneelMatch title.Club championship
typestringOptioneelMatch category.Singles
court_namestringOptioneelCourt 1
player1stringOptioneelDisplayed name for player 1. Required when player1_id is not supplied.Lucas Martin
player2stringOptioneelDisplayed name for player 2. Required when player2_id is not supplied.Nathan Smith
player1_idintegerOptioneelOptional official player identifier.42
player2_idintegerOptioneelOptional official player identifier.57
player1_club_idintegerOptioneel18
player2_club_idintegerOptioneel18
sets_to_winintegerOptioneelmin: 1 · max: 3 · default: 22
games_to_win_setintegerOptioneelmin: 1 · max: 12 · default: 66
tie_break_enabledbooleanOptioneeldefault: truetrue
tie_break_at_gamesintegerOptioneelmin: 1 · max: 12 · default: 66
tie_break_pointsintegerOptioneelmin: 3 · max: 30 · default: 77
final_set_rulestringOptioneelenum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreakregular_tiebreak
final_set_tiebreak_pointsintegerOptioneelmin: 3 · max: 30 · default: 1010
no_ad_scoringbooleanOptioneeldefault: falsefalse
advanced_point_modebooleanOptioneeldefault: falsefalse
livechat_enabledbooleanOptioneeldefault: falsefalse
initial_serverintegerOptioneelenum: 1, 2 · default: 11
public_accessstringOptioneelenum: open, password, hidden · default: openopen
public_passwordstringOptioneelRequired only when public_access is password.minLength: 4string

Voorbeeldverzoek

curl -X PATCH "https://mycourtscore.com/api/v1/matches/125" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "title": "Updated match title", "court_name": "Court 1" }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "active",
        "winner_player": 0,
        "winner_name": "",
        "quick_result": false,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": null
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
DELETE /matches/{matchId} Delete an eligible unstarted match matches:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Voorbeeldverzoek

curl -X DELETE "https://mycourtscore.com/api/v1/matches/125" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: request-unique-id"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "deleted": true
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}

Live scoring

GET /matches/{matchId}/score Read the live score payload matches:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/matches/125/score" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "active",
        "winner_player": 0,
        "winner_name": "",
        "quick_result": false,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": null
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /matches/{matchId}/events List scoring and administration events matches:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125
limitqueryintegerOptioneelMaximum number of recent events, from 1 to 200.50

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/matches/125/events?limit=50" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 9001,
            "match_id": 125,
            "event_type": "point",
            "player_no": 1,
            "label": "Point for Lucas Martin",
            "point_reason": "winner",
            "responsible_player": 1,
            "created_at": "2026-09-27 14:12:08"
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
POST /matches/{matchId}/points Award a point to player 1 or player 2 score:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
winnerintegerVerplichtenum: 1, 21
reasonstringOptioneelenum: normal, ace, winner, forced_error, unforced_error, double_fault, out, netnormal
responsible_playerintegerOptioneelenum: 0, 1, 20

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/matches/125/points" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "winner": 1, "reason": "normal", "responsible_player": 0 }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "active",
        "winner_player": 0,
        "winner_name": "",
        "quick_result": false,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": null
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
POST /matches/{matchId}/undo Undo the last point score:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Velden van de JSON-body

Geen JSON-velden. Stuur {} wanneer een body vereist is.

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/matches/125/undo" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{}'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "active",
        "winner_player": 0,
        "winner_name": "",
        "quick_result": false,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": null
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
PATCH /matches/{matchId}/server Change the serving player score:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
serverintegerVerplichtenum: 1, 21

Voorbeeldverzoek

curl -X PATCH "https://mycourtscore.com/api/v1/matches/125/server" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "server": 1 }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "active",
        "winner_player": 0,
        "winner_name": "",
        "quick_result": false,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": null
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
POST /matches/{matchId}/reset Reset the complete score score:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Velden van de JSON-body

Geen JSON-velden. Stuur {} wanneer een body vereist is.

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/matches/125/reset" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{}'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "active",
        "winner_player": 0,
        "winner_name": "",
        "quick_result": false,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": null
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
POST /matches/{matchId}/finish Finish a match with a declared winner score:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
winnerintegerVerplichtenum: 1, 21

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/matches/125/finish" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "winner": 1 }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "finished",
        "winner_player": 1,
        "winner_name": "Lucas Martin",
        "quick_result": true,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": "2026-09-27 15:42:00"
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
POST /matches/{matchId}/reopen Reopen a finished match score:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
matchIdpathintegerVerplichtMy Court Score match identifier.min: 1125

Velden van de JSON-body

Geen JSON-velden. Stuur {} wanneer een body vereist is.

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/matches/125/reopen" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{}'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 125,
        "number": 125,
        "title": "Club championship",
        "type": "Singles",
        "court_name": "Court 1",
        "status": "active",
        "winner_player": 0,
        "winner_name": "",
        "quick_result": false,
        "public_access": "open",
        "players": [
            {
                "side": 1,
                "name": "Lucas Martin",
                "player_id": 42,
                "club_id": 18,
                "sets": 1,
                "games": 3,
                "points": "30",
                "serving": true
            },
            {
                "side": 2,
                "name": "Nathan Smith",
                "player_id": 57,
                "club_id": 18,
                "sets": 0,
                "games": 2,
                "points": "15",
                "serving": false
            }
        ],
        "score": {
            "current_set": 2,
            "is_tiebreak": false,
            "is_super_tiebreak": false,
            "sets": [
                {
                    "set": 1,
                    "p1": 6,
                    "p2": 4
                }
            ]
        },
        "rules": {
            "sets_to_win": 2,
            "games_to_win_set": 6,
            "tie_break_enabled": true,
            "tie_break_at_games": 6,
            "tie_break_points": 7,
            "final_set_rule": "regular_tiebreak",
            "final_set_tiebreak_points": 10,
            "no_ad_scoring": false,
            "advanced_point_mode": true
        },
        "audience": {
            "total_viewers": 84,
            "watching_now": 12
        },
        "links": {
            "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
            "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
        },
        "created_at": "2026-09-27 13:30:00",
        "updated_at": "2026-09-27 14:12:08",
        "finished_at": null
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}

Players

GET /players Search official players or list linked players players:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
pagequeryintegerOptioneelPage number, starting at 1.1
per_pagequeryintegerOptioneelItems per page, from 1 to 100.25
qquerystringOptioneelSearch by name or club.Lucas
minequerybooleanOptioneelOnly return the linked primary and secondary players.true
club_idqueryintegerOptioneelFilter by club.18

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/players?page=1&per_page=25&q=Lucas&mine=true&club_id=18" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 42,
            "name": "Lucas Martin",
            "first_name": "Lucas",
            "last_name": "Martin",
            "official": true,
            "country": "Belgium",
            "city": "Brussels",
            "club_id": 18,
            "club_name": "Central Tennis Club",
            "avatar_url": "https://mycourtscore.com/uploads/avatars/player-42.jpg",
            "is_secondary_player": false
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123",
        "pagination": {
            "page": 1,
            "per_page": 25,
            "total": 1,
            "total_pages": 1
        }
    }
}
POST /players Create the primary player account or a secondary player players:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 201

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id

Velden van de JSON-body

For an unlinked developer account, email and password are conditionally required to create and link a primary player account. For a developer already linked to a player, this creates a secondary player.

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
first_namestringVerplichtPlayer first name.Lucas
last_namestringVerplichtPlayer last name.Martin
emailstring (email)OptioneelRequired when creating the primary player account.lucas@example.com
passwordstring (password)OptioneelRequired when creating the primary player account.minLength: 8ChangeMe-2026
club_idintegerOptioneel18
club_namestringOptioneelCentral Tennis Club
federation_numberstringOptioneelBE-123456
birth_datestring (date)Optioneel2008-04-12
phonestringOptioneelstring
mobilestringOptioneelstring
citystringOptioneelBrussels
countrystringOptioneelBelgium
notesstringOptioneelstring
langstringOptioneelenum: fr, en, nl, de, es, it · default: enen

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/players" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "first_name": "Alex", "last_name": "Martin", "country": "Belgium", "lang": "en" }'

Voorbeeldantwoord · HTTP 201

{
    "data": {
        "id": 42,
        "name": "Lucas Martin",
        "first_name": "Lucas",
        "last_name": "Martin",
        "official": true,
        "country": "Belgium",
        "city": "Brussels",
        "club_id": 18,
        "club_name": "Central Tennis Club",
        "avatar_url": "https://mycourtscore.com/uploads/avatars/player-42.jpg",
        "is_secondary_player": false
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /players/{playerId} Read a permitted player profile players:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
playerIdpathintegerVerplichtOfficial or secondary player identifier.min: 142

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/players/42" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 42,
        "name": "Lucas Martin",
        "first_name": "Lucas",
        "last_name": "Martin",
        "official": true,
        "country": "Belgium",
        "city": "Brussels",
        "club_id": 18,
        "club_name": "Central Tennis Club",
        "avatar_url": "https://mycourtscore.com/uploads/avatars/player-42.jpg",
        "is_secondary_player": false
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
PATCH /players/{playerId} Update a linked player profile players:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
playerIdpathintegerVerplichtOfficial or secondary player identifier.min: 142

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
first_namestringOptioneelstring
last_namestringOptioneelstring
club_idintegerOptioneel1
federation_numberstringOptioneelstring
birth_datestring (date)Optioneel2026-09-27
phonestringOptioneelstring
mobilestringOptioneelstring
citystringOptioneelstring
countrystringOptioneelstring
notesstringOptioneelstring

Voorbeeldverzoek

curl -X PATCH "https://mycourtscore.com/api/v1/players/42" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "city": "Brussels", "country": "Belgium" }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 42,
        "name": "Lucas Martin",
        "first_name": "Lucas",
        "last_name": "Martin",
        "official": true,
        "country": "Belgium",
        "city": "Brussels",
        "club_id": 18,
        "club_name": "Central Tennis Club",
        "avatar_url": "https://mycourtscore.com/uploads/avatars/player-42.jpg",
        "is_secondary_player": false
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
DELETE /players/{playerId} Delete a linked secondary player players:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
playerIdpathintegerVerplichtOfficial or secondary player identifier.min: 142

Voorbeeldverzoek

curl -X DELETE "https://mycourtscore.com/api/v1/players/42" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: request-unique-id"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 42,
        "deleted": true
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}

Clubs

GET /clubs List and search active clubs clubs:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
pagequeryintegerOptioneelPage number, starting at 1.1
per_pagequeryintegerOptioneelItems per page, from 1 to 100.25
qquerystringOptioneelSearch by club name, city or country.Central

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/clubs?page=1&per_page=25&q=Central" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 18,
            "name": "Central Tennis Club",
            "short_name": "CTC",
            "slug": "central-tennis-club",
            "description": "Tennis club",
            "public_email": "contact@example.com",
            "phone": "+32 2 000 00 00",
            "city": "Brussels",
            "region": "Brussels",
            "country": "Belgium",
            "website": "https://example.com",
            "court_count": 4,
            "timezone": "Europe/Brussels",
            "status": "active",
            "live_url": "https://mycourtscore.com/club_live?club=PUBLIC_TOKEN"
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123",
        "pagination": {
            "page": 1,
            "per_page": 25,
            "total": 1,
            "total_pages": 1
        }
    }
}
POST /clubs Create a club and link the developer account clubs:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 201

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
club_namestringVerplichtOfficial club name.Central Tennis Club
short_namestringOptioneelCTC
descriptionstringOptioneelstring
contact_personstringOptioneelstring
emailstring (email)Verplichtclub@example.com
passwordstring (password)VerplichtminLength: 8ChangeMe-2026
public_emailstring (email)Optioneeldeveloper@example.com
phonestringOptioneelstring
mobilestringOptioneelstring
address_line1stringOptioneelstring
address_line2stringOptioneelstring
postal_codestringOptioneelstring
citystringOptioneelBrussels
regionstringOptioneelstring
countrystringOptioneelBelgium
websitestring (uri)Optioneelstring
federation_namestringOptioneelstring
registration_numberstringOptioneelstring
timezonestringOptioneelValid IANA timezone.Europe/Brussels
court_countintegerOptioneelmin: 0 · max: 5004
langstringOptioneelenum: fr, en, nl, de, es, it · default: enen

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/clubs" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "club_name": "API Test Club", "email": "developer@example.com", "password": "ChangeMe-2026", "timezone": "Europe/Brussels", "lang": "en" }'

Voorbeeldantwoord · HTTP 201

{
    "data": {
        "id": 18,
        "name": "Central Tennis Club",
        "short_name": "CTC",
        "slug": "central-tennis-club",
        "description": "Tennis club",
        "public_email": "contact@example.com",
        "phone": "+32 2 000 00 00",
        "city": "Brussels",
        "region": "Brussels",
        "country": "Belgium",
        "website": "https://example.com",
        "court_count": 4,
        "timezone": "Europe/Brussels",
        "status": "active",
        "live_url": "https://mycourtscore.com/club_live?club=PUBLIC_TOKEN"
    },
    "meta": {
        "developer_account_linked": true,
        "request_id": "req_01HXYZ123"
    }
}
GET /clubs/{clubId} Read public club information clubs:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
clubIdpathintegerVerplichtClub identifier.min: 118

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/clubs/18" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 18,
        "name": "Central Tennis Club",
        "short_name": "CTC",
        "slug": "central-tennis-club",
        "description": "Tennis club",
        "public_email": "contact@example.com",
        "phone": "+32 2 000 00 00",
        "city": "Brussels",
        "region": "Brussels",
        "country": "Belgium",
        "website": "https://example.com",
        "court_count": 4,
        "timezone": "Europe/Brussels",
        "status": "active",
        "live_url": "https://mycourtscore.com/club_live?club=PUBLIC_TOKEN"
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
PATCH /clubs/{clubId} Update the linked club profile clubs:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
clubIdpathintegerVerplichtClub identifier.min: 118

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
club_namestringOptioneelstring
short_namestringOptioneelstring
descriptionstringOptioneelstring
logo_urlstring (uri)Optioneelstring
contact_personstringOptioneelstring
public_emailstring (email)Optioneeldeveloper@example.com
phonestringOptioneelstring
mobilestringOptioneelstring
address_line1stringOptioneelstring
address_line2stringOptioneelstring
postal_codestringOptioneelstring
citystringOptioneelstring
regionstringOptioneelstring
countrystringOptioneelstring
websitestring (uri)Optioneelstring
federation_namestringOptioneelstring
registration_numberstringOptioneelstring
timezonestringOptioneelEurope/Brussels
court_countintegerOptioneelmin: 0 · max: 5001
live_match_visibilitystringOptioneelenum: forever, until_finished, same_dayforever

Voorbeeldverzoek

curl -X PATCH "https://mycourtscore.com/api/v1/clubs/18" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "city": "Brussels", "timezone": "Europe/Brussels", "court_count": 4 }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 18,
        "name": "Central Tennis Club",
        "short_name": "CTC",
        "slug": "central-tennis-club",
        "description": "Tennis club",
        "public_email": "contact@example.com",
        "phone": "+32 2 000 00 00",
        "city": "Brussels",
        "region": "Brussels",
        "country": "Belgium",
        "website": "https://example.com",
        "court_count": 4,
        "timezone": "Europe/Brussels",
        "status": "active",
        "live_url": "https://mycourtscore.com/club_live?club=PUBLIC_TOKEN"
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /clubs/{clubId}/matches List matches owned by the linked club matches:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
clubIdpathintegerVerplichtClub identifier.min: 118
pagequeryintegerOptioneelPage number, starting at 1.1
per_pagequeryintegerOptioneelItems per page, from 1 to 100.25
statusquerystringOptioneelFilter by match status.enum: active, finishedactive
qquerystringOptioneelSearch by player, title or court.Lucas
updated_sincequerystringOptioneelOnly matches updated since this ISO 8601 date and time.2026-09-27T12:00:00Z

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/clubs/18/matches?page=1&per_page=25&status=active&q=Lucas&updated_since=2026-09-27T12%3A00%3A00Z" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 125,
            "number": 125,
            "title": "Club championship",
            "type": "Singles",
            "court_name": "Court 1",
            "status": "active",
            "winner_player": 0,
            "winner_name": "",
            "quick_result": false,
            "public_access": "open",
            "players": [
                {
                    "side": 1,
                    "name": "Lucas Martin",
                    "player_id": 42,
                    "club_id": 18,
                    "sets": 1,
                    "games": 3,
                    "points": "30",
                    "serving": true
                },
                {
                    "side": 2,
                    "name": "Nathan Smith",
                    "player_id": 57,
                    "club_id": 18,
                    "sets": 0,
                    "games": 2,
                    "points": "15",
                    "serving": false
                }
            ],
            "score": {
                "current_set": 2,
                "is_tiebreak": false,
                "is_super_tiebreak": false,
                "sets": [
                    {
                        "set": 1,
                        "p1": 6,
                        "p2": 4
                    }
                ]
            },
            "rules": {
                "sets_to_win": 2,
                "games_to_win_set": 6,
                "tie_break_enabled": true,
                "tie_break_at_games": 6,
                "tie_break_points": 7,
                "final_set_rule": "regular_tiebreak",
                "final_set_tiebreak_points": 10,
                "no_ad_scoring": false,
                "advanced_point_mode": true
            },
            "audience": {
                "total_viewers": 84,
                "watching_now": 12
            },
            "links": {
                "score": "https://mycourtscore.com/tennis_score?view=PUBLIC_TOKEN",
                "court_display": "https://mycourtscore.com/court_display?display=PUBLIC_TOKEN"
            },
            "created_at": "2026-09-27 13:30:00",
            "updated_at": "2026-09-27 14:12:08",
            "finished_at": null
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123",
        "pagination": {
            "page": 1,
            "per_page": 25,
            "total": 1,
            "total_pages": 1
        }
    }
}

Tournaments

GET /tournaments List public or linked-club tournaments tournaments:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
pagequeryintegerOptioneelPage number, starting at 1.1
per_pagequeryintegerOptioneelItems per page, from 1 to 100.25
statusquerystringOptioneelFilter by tournament status.enum: draft, published, in_progress, finishedpublished
qquerystringOptioneelSearch by name, category or venue.Weekend Open

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/tournaments?page=1&per_page=25&status=published&q=Weekend%20Open" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 8,
            "club_id": 18,
            "name": "Weekend Open",
            "description": "Club tournament",
            "category": "Open",
            "format": "group_divisions",
            "entry_type": "team",
            "status": "published",
            "registration_open": true,
            "max_participants": 16,
            "group_count": 4,
            "qualifiers_per_group": 2,
            "division_count": 2,
            "start_date": "2026-09-27",
            "end_date": "2026-09-28",
            "venue": "Central Tennis Club",
            "timezone": "Europe/Brussels",
            "minimum_rest_minutes": 30,
            "public_url": "https://mycourtscore.com/tournament?t=PUBLIC_TOKEN",
            "created_at": "2026-09-01 10:00:00",
            "updated_at": "2026-09-27 12:00:00"
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123",
        "pagination": {
            "page": 1,
            "per_page": 25,
            "total": 1,
            "total_pages": 1
        }
    }
}
POST /tournaments Create a club tournament tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 201

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
namestringVerplichtTournament name.Weekend Open
descriptionstringOptioneelstring
categorystringOptioneelOpen
formatstringOptioneelenum: single_elimination, round_robin, group_knockout, group_divisions · default: single_eliminationsingle_elimination
entry_typestringOptioneelenum: player, team · default: playerplayer
start_datestring (date)Verplicht2026-09-27
end_datestring (date)Verplicht2026-09-28
venuestringOptioneelCentral Tennis Club
timezonestringOptioneelEurope/Brussels
registration_openbooleanOptioneeldefault: falsefalse
max_participantsintegerOptioneelmin: 2 · max: 128 · default: 3232
group_countintegerOptioneelmin: 1 · max: 32 · default: 11
qualifiers_per_groupintegerOptioneelmin: 1 · max: 8 · default: 22
division_countintegerOptioneelmin: 1 · max: 81
sets_to_winintegerOptioneelmin: 1 · max: 3 · default: 22
games_to_win_setintegerOptioneelmin: 1 · max: 12 · default: 66
tie_break_enabledbooleanOptioneeldefault: truetrue
tie_break_at_gamesintegerOptioneelmin: 1 · max: 12 · default: 66
tie_break_pointsintegerOptioneelmin: 3 · max: 30 · default: 77
final_set_rulestringOptioneelenum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreakregular_tiebreak
final_set_tiebreak_pointsintegerOptioneelmin: 3 · max: 30 · default: 1010
no_ad_scoringbooleanOptioneeldefault: falsefalse
group_sets_to_winintegerOptioneelmin: 1 · max: 3 · default: 11
group_games_to_win_setintegerOptioneelmin: 1 · max: 12 · default: 66
group_tie_break_enabledbooleanOptioneeldefault: truetrue
group_tie_break_at_gamesintegerOptioneelmin: 1 · max: 12 · default: 66
group_tie_break_pointsintegerOptioneelmin: 3 · max: 30 · default: 77
group_no_ad_scoringbooleanOptioneeldefault: falsefalse
minimum_rest_minutesintegerOptioneelmin: 0 · max: 1440 · default: 3030
estimated_match_minutesintegerOptioneelmin: 10 · max: 1440 · default: 6060
schedule_slot_minutesintegerOptioneelmin: 5 · max: 720 · default: 3030
ranking_rulesarray<string>Optioneel[ "match_wins", "head_to_head", "set_ratio", "game_ratio" ]

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/tournaments" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "name": "API Test Tournament", "start_date": "2026-09-27", "end_date": "2026-09-28", "format": "single_elimination", "entry_type": "player", "max_participants": 8 }'

Voorbeeldantwoord · HTTP 201

{
    "data": {
        "id": 8,
        "club_id": 18,
        "name": "Weekend Open",
        "description": "Club tournament",
        "category": "Open",
        "format": "group_divisions",
        "entry_type": "team",
        "status": "published",
        "registration_open": true,
        "max_participants": 16,
        "group_count": 4,
        "qualifiers_per_group": 2,
        "division_count": 2,
        "start_date": "2026-09-27",
        "end_date": "2026-09-28",
        "venue": "Central Tennis Club",
        "timezone": "Europe/Brussels",
        "minimum_rest_minutes": 30,
        "public_url": "https://mycourtscore.com/tournament?t=PUBLIC_TOKEN",
        "created_at": "2026-09-01 10:00:00",
        "updated_at": "2026-09-27 12:00:00"
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /tournaments/{tournamentId} Read tournament configuration and counts tournaments:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/tournaments/8" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 8,
        "club_id": 18,
        "name": "Weekend Open",
        "description": "Club tournament",
        "category": "Open",
        "format": "group_divisions",
        "entry_type": "team",
        "status": "published",
        "registration_open": true,
        "max_participants": 16,
        "group_count": 4,
        "qualifiers_per_group": 2,
        "division_count": 2,
        "start_date": "2026-09-27",
        "end_date": "2026-09-28",
        "venue": "Central Tennis Club",
        "timezone": "Europe/Brussels",
        "minimum_rest_minutes": 30,
        "public_url": "https://mycourtscore.com/tournament?t=PUBLIC_TOKEN",
        "created_at": "2026-09-01 10:00:00",
        "updated_at": "2026-09-27 12:00:00",
        "counts": {
            "participants": 16,
            "courts": 4,
            "matches": 24
        }
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
PATCH /tournaments/{tournamentId} Update tournament configuration tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Velden van de JSON-body

Supply only the tournament fields that need to change.

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
namestringOptioneelTournament name.Weekend Open
descriptionstringOptioneelstring
categorystringOptioneelOpen
formatstringOptioneelenum: single_elimination, round_robin, group_knockout, group_divisions · default: single_eliminationsingle_elimination
entry_typestringOptioneelenum: player, team · default: playerplayer
start_datestring (date)Optioneel2026-09-27
end_datestring (date)Optioneel2026-09-28
venuestringOptioneelCentral Tennis Club
timezonestringOptioneelEurope/Brussels
registration_openbooleanOptioneeldefault: falsefalse
max_participantsintegerOptioneelmin: 2 · max: 128 · default: 3232
group_countintegerOptioneelmin: 1 · max: 32 · default: 11
qualifiers_per_groupintegerOptioneelmin: 1 · max: 8 · default: 22
division_countintegerOptioneelmin: 1 · max: 81
sets_to_winintegerOptioneelmin: 1 · max: 3 · default: 22
games_to_win_setintegerOptioneelmin: 1 · max: 12 · default: 66
tie_break_enabledbooleanOptioneeldefault: truetrue
tie_break_at_gamesintegerOptioneelmin: 1 · max: 12 · default: 66
tie_break_pointsintegerOptioneelmin: 3 · max: 30 · default: 77
final_set_rulestringOptioneelenum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreakregular_tiebreak
final_set_tiebreak_pointsintegerOptioneelmin: 3 · max: 30 · default: 1010
no_ad_scoringbooleanOptioneeldefault: falsefalse
group_sets_to_winintegerOptioneelmin: 1 · max: 3 · default: 11
group_games_to_win_setintegerOptioneelmin: 1 · max: 12 · default: 66
group_tie_break_enabledbooleanOptioneeldefault: truetrue
group_tie_break_at_gamesintegerOptioneelmin: 1 · max: 12 · default: 66
group_tie_break_pointsintegerOptioneelmin: 3 · max: 30 · default: 77
group_no_ad_scoringbooleanOptioneeldefault: falsefalse
minimum_rest_minutesintegerOptioneelmin: 0 · max: 1440 · default: 3030
estimated_match_minutesintegerOptioneelmin: 10 · max: 1440 · default: 6060
schedule_slot_minutesintegerOptioneelmin: 5 · max: 720 · default: 3030
ranking_rulesarray<string>Optioneel[ "match_wins", "head_to_head", "set_ratio", "game_ratio" ]
statusstringOptioneelenum: draft, published, in_progress, finisheddraft

Voorbeeldverzoek

curl -X PATCH "https://mycourtscore.com/api/v1/tournaments/8" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "venue": "Central Tennis Club", "registration_open": true }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 8,
        "club_id": 18,
        "name": "Weekend Open",
        "description": "Club tournament",
        "category": "Open",
        "format": "group_divisions",
        "entry_type": "team",
        "status": "published",
        "registration_open": true,
        "max_participants": 16,
        "group_count": 4,
        "qualifiers_per_group": 2,
        "division_count": 2,
        "start_date": "2026-09-27",
        "end_date": "2026-09-28",
        "venue": "Central Tennis Club",
        "timezone": "Europe/Brussels",
        "minimum_rest_minutes": 30,
        "public_url": "https://mycourtscore.com/tournament?t=PUBLIC_TOKEN",
        "created_at": "2026-09-01 10:00:00",
        "updated_at": "2026-09-27 12:00:00"
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
DELETE /tournaments/{tournamentId} Delete and archive a tournament tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Voorbeeldverzoek

curl -X DELETE "https://mycourtscore.com/api/v1/tournaments/8" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: request-unique-id"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 8,
        "deleted": true,
        "deletion_archive_id": 3
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /tournaments/{tournamentId}/participants List tournament participants tournaments:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/tournaments/8/participants" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 64,
            "tournament_id": 8,
            "player_id": 42,
            "display_name": "Lucas Martin",
            "member1_name": "",
            "member2_name": "",
            "seed": 1,
            "group": 1,
            "manual_rank": 0,
            "status": "accepted",
            "source": "api"
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
POST /tournaments/{tournamentId}/participants Add a participant or team tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 201

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Velden van de JSON-body

Supply display_name or a valid player_id.

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
player_idintegerOptioneel42
display_namestringOptioneelLucas Martin
member1_namestringOptioneelstring
member2_namestringOptioneelstring
member1_player_idintegerOptioneel1
member2_player_idintegerOptioneel1
emailstring (email)Optioneeldeveloper@example.com
seedintegerOptioneelmin: 0 · max: 1281
groupintegerOptioneelmin: 0 · max: 321
manual_rankintegerOptioneel1
statusstringOptioneelenum: pending, accepted, rejected · default: acceptedaccepted

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/tournaments/8/participants" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "display_name": "Player One", "status": "accepted", "seed": 1 }'

Voorbeeldantwoord · HTTP 201

{
    "data": {
        "id": 64,
        "tournament_id": 8,
        "player_id": 42,
        "display_name": "Lucas Martin",
        "member1_name": "",
        "member2_name": "",
        "seed": 1,
        "group": 1,
        "manual_rank": 0,
        "status": "accepted",
        "source": "api"
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
PATCH /tournaments/{tournamentId}/participants/{participantId} Update a participant, seed or group tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18
participantIdpathintegerVerplichtTournament participant identifier.min: 164

Velden van de JSON-body

Supply only the participant fields that need to change.

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
player_idintegerOptioneel42
display_namestringOptioneelLucas Martin
member1_namestringOptioneelstring
member2_namestringOptioneelstring
member1_player_idintegerOptioneel1
member2_player_idintegerOptioneel1
emailstring (email)Optioneeldeveloper@example.com
seedintegerOptioneelmin: 0 · max: 1281
groupintegerOptioneelmin: 0 · max: 321
manual_rankintegerOptioneel1
statusstringOptioneelenum: pending, accepted, rejected · default: acceptedaccepted

Voorbeeldverzoek

curl -X PATCH "https://mycourtscore.com/api/v1/tournaments/8/participants/64" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "seed": 2, "group": 1, "status": "accepted" }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 64,
        "tournament_id": 8,
        "player_id": 42,
        "display_name": "Lucas Martin",
        "member1_name": "",
        "member2_name": "",
        "seed": 1,
        "group": 1,
        "manual_rank": 0,
        "status": "accepted",
        "source": "api"
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
DELETE /tournaments/{tournamentId}/participants/{participantId} Remove a participant before draw generation tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18
participantIdpathintegerVerplichtTournament participant identifier.min: 164

Voorbeeldverzoek

curl -X DELETE "https://mycourtscore.com/api/v1/tournaments/8/participants/64" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: request-unique-id"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 64,
        "deleted": true
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /tournaments/{tournamentId}/courts List tournament courts tournaments:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/tournaments/8/courts" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 5,
            "tournament_id": 8,
            "name": "Court 1",
            "sort_order": 1
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
POST /tournaments/{tournamentId}/courts Add a tournament court tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 201

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
namestringVerplichtCourt 1
sort_orderintegerOptioneelmin: 0 · max: 10001

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/tournaments/8/courts" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "name": "Court 1", "sort_order": 1 }'

Voorbeeldantwoord · HTTP 201

{
    "data": {
        "id": 5,
        "tournament_id": 8,
        "name": "Court 1",
        "sort_order": 1
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
PATCH /tournaments/{tournamentId}/courts/{courtId} Rename or reorder a court tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18
courtIdpathintegerVerplichtTournament court identifier.min: 15

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
namestringVerplichtCourt 1
sort_orderintegerOptioneelmin: 0 · max: 10001

Voorbeeldverzoek

curl -X PATCH "https://mycourtscore.com/api/v1/tournaments/8/courts/5" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "name": "Court 1", "sort_order": 1 }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 5,
        "tournament_id": 8,
        "name": "Court 1",
        "sort_order": 1
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
DELETE /tournaments/{tournamentId}/courts/{courtId} Delete an unused tournament court tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18
courtIdpathintegerVerplichtTournament court identifier.min: 15

Voorbeeldverzoek

curl -X DELETE "https://mycourtscore.com/api/v1/tournaments/8/courts/5" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: request-unique-id"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 5,
        "deleted": true
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /tournaments/{tournamentId}/matches List draw and scheduled matches tournaments:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/tournaments/8/matches" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 91,
            "tournament_id": 8,
            "round_name": "Quarterfinal",
            "round_no": 1,
            "position_no": 1,
            "player1_participant_id": 64,
            "player2_participant_id": 65,
            "player1_name": "Lucas Martin",
            "player2_name": "Nathan Smith",
            "court_id": 5,
            "scheduled_at": "2026-09-27 14:30:00",
            "status": "scheduled",
            "winner_participant_id": 0
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
PATCH /tournaments/{tournamentId}/matches/{tournamentMatchId} Schedule a match, update its state or declare an outcome tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18
tournamentMatchIdpathintegerVerplichtTournament match identifier.min: 191

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
court_idintegerOptioneel1
scheduled_atstringOptioneelLocal time in the tournament timezone. Send an empty string to unschedule.2026-09-27 14:30
duration_minutesintegerOptioneelmin: 15 · max: 3601
forcebooleanOptioneelAllow scheduling despite reported conflicts.false
commentstringOptioneelstring
statusstringOptioneelenum: ready, scheduled, called, warmup, live, suspended, postponed, finished, walkover, retired, no_show, disqualified, cancelledready
winner_participant_idintegerOptioneel1
outcome_notestringOptioneelstring

Voorbeeldverzoek

curl -X PATCH "https://mycourtscore.com/api/v1/tournaments/8/matches/91" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '{ "court_id": 1, "scheduled_at": "2026-09-27 14:30", "duration_minutes": 60, "comment": "Scheduled through API" }'

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "id": 91,
        "tournament_id": 8,
        "round_name": "Quarterfinal",
        "round_no": 1,
        "position_no": 1,
        "player1_participant_id": 64,
        "player2_participant_id": 65,
        "player1_name": "Lucas Martin",
        "player2_name": "Nathan Smith",
        "court_id": 5,
        "scheduled_at": "2026-09-27 14:30:00",
        "status": "scheduled",
        "winner_participant_id": 0
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
GET /tournaments/{tournamentId}/standings Read group standings and tie-break details tournaments:read
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Voorbeeldverzoek

curl -X GET "https://mycourtscore.com/api/v1/tournaments/8/standings" \
  -H "Authorization: Bearer YOUR_API_KEY"

Voorbeeldantwoord · HTTP 200

{
    "data": {
        "groups": [
            {
                "group": 1,
                "rows": [
                    {
                        "rank": 1,
                        "participant_id": 64,
                        "display_name": "Lucas Martin",
                        "played": 3,
                        "won": 3,
                        "lost": 0,
                        "points": 6,
                        "qualified": true
                    }
                ]
            }
        ]
    },
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}
POST /tournaments/{tournamentId}/generate-draw Generate group matches or an elimination draw tournaments:write
Eigendom: exacte API-sleutel
Parameters en voorbeeldenSuccesvol antwoord · HTTP 200

Aanvraagparameters

ParameterLocatieTypeVerplichtBeschrijvingBeperkingenVoorbeeld
AuthorizationheaderstringVerplichtBearer API-sleutel voor authenticatie.Bearer mcs_live_...Bearer YOUR_API_KEY
Content-TypeheaderstringVerplichtJSON-formaat van de aanvraagbody.application/jsonapplication/json
Idempotency-KeyheaderstringOptioneelAanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen.request-unique-id
tournamentIdpathintegerVerplichtTournament identifier.min: 18

Velden van de JSON-body

ParameterTypeVerplichtBeschrijvingBeperkingenVoorbeeld
slotsarray<integer>OptioneelOptional ordered participant IDs for manual knockout placement.[]

Voorbeeldverzoek

curl -X POST "https://mycourtscore.com/api/v1/tournaments/8/generate-draw" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-unique-id" \
  -d '[]'

Voorbeeldantwoord · HTTP 200

{
    "data": [
        {
            "id": 91,
            "tournament_id": 8,
            "round_name": "Quarterfinal",
            "round_no": 1,
            "position_no": 1,
            "player1_participant_id": 64,
            "player2_participant_id": 65,
            "player1_name": "Lucas Martin",
            "player2_name": "Nathan Smith",
            "court_id": 5,
            "scheduled_at": "2026-09-27 14:30:00",
            "status": "scheduled",
            "winner_participant_id": 0
        }
    ],
    "meta": {
        "request_id": "req_01HXYZ123"
    }
}