Een versiebeheer REST API voor wedstrijden, livescores, spelers, clubs en toernooien.
Het eigendom wordt gecontroleerd op de exacte API-sleutel, niet alleen op het ontwikkelaarsaccount of het gekoppelde My Court Score-account.
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
https://mycourtscore.com/api/v1curl "https://mycourtscore.com/api/v1/me" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
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.
/health
Check API availability
Public
Geen parameters vereist.
curl -X GET "https://mycourtscore.com/api/v1/health"{
"data": {
"status": "ok",
"version": "v1",
"time": "2026-09-27T14:12:08+00:00"
},
"meta": {
"request_id": "req_01HXYZ123"
}
}/me
Read the developer key identity and linked account
authenticated
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
curl -X GET "https://mycourtscore.com/api/v1/me" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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
List matches visible to the API key
matches:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
page | query | integer | Optioneel | Page number, starting at 1. | 1 | |
per_page | query | integer | Optioneel | Items per page, from 1 to 100. | 25 | |
status | query | string | Optioneel | Filter by match status. | enum: active, finished | active |
q | query | string | Optioneel | Search by player, title, court or match number. | Lucas | |
updated_since | query | string | Optioneel | Only matches updated since this ISO 8601 date and time. | 2026-09-27T12:00:00Z |
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"{
"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
}
}
}/matches
Create a match
matches:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
title | string | Optioneel | Match title. | Club championship | |
type | string | Optioneel | Match category. | Singles | |
court_name | string | Optioneel | Court 1 | ||
player1 | string | Verplicht | Displayed name for player 1. Required when player1_id is not supplied. | Lucas Martin | |
player2 | string | Verplicht | Displayed name for player 2. Required when player2_id is not supplied. | Nathan Smith | |
player1_id | integer | Optioneel | Optional official player identifier. | 42 | |
player2_id | integer | Optioneel | Optional official player identifier. | 57 | |
player1_club_id | integer | Optioneel | 18 | ||
player2_club_id | integer | Optioneel | 18 | ||
sets_to_win | integer | Optioneel | min: 1 · max: 3 · default: 2 | 2 | |
games_to_win_set | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_enabled | boolean | Optioneel | default: true | true | |
tie_break_at_games | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_points | integer | Optioneel | min: 3 · max: 30 · default: 7 | 7 | |
final_set_rule | string | Optioneel | enum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreak | regular_tiebreak | |
final_set_tiebreak_points | integer | Optioneel | min: 3 · max: 30 · default: 10 | 10 | |
no_ad_scoring | boolean | Optioneel | default: false | false | |
advanced_point_mode | boolean | Optioneel | default: false | false | |
livechat_enabled | boolean | Optioneel | default: false | false | |
initial_server | integer | Optioneel | enum: 1, 2 · default: 1 | 1 | |
public_access | string | Optioneel | enum: open, password, hidden · default: open | open | |
public_password | string | Optioneel | Required only when public_access is password. | minLength: 4 | string |
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 }'{
"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"
}
}/matches/{matchId}
Read a match and its current score
matches:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
curl -X GET "https://mycourtscore.com/api/v1/matches/125" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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"
}
}/matches/{matchId}
Update match information and rules
matches:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
Supply only the match fields that need to change.
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
title | string | Optioneel | Match title. | Club championship | |
type | string | Optioneel | Match category. | Singles | |
court_name | string | Optioneel | Court 1 | ||
player1 | string | Optioneel | Displayed name for player 1. Required when player1_id is not supplied. | Lucas Martin | |
player2 | string | Optioneel | Displayed name for player 2. Required when player2_id is not supplied. | Nathan Smith | |
player1_id | integer | Optioneel | Optional official player identifier. | 42 | |
player2_id | integer | Optioneel | Optional official player identifier. | 57 | |
player1_club_id | integer | Optioneel | 18 | ||
player2_club_id | integer | Optioneel | 18 | ||
sets_to_win | integer | Optioneel | min: 1 · max: 3 · default: 2 | 2 | |
games_to_win_set | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_enabled | boolean | Optioneel | default: true | true | |
tie_break_at_games | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_points | integer | Optioneel | min: 3 · max: 30 · default: 7 | 7 | |
final_set_rule | string | Optioneel | enum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreak | regular_tiebreak | |
final_set_tiebreak_points | integer | Optioneel | min: 3 · max: 30 · default: 10 | 10 | |
no_ad_scoring | boolean | Optioneel | default: false | false | |
advanced_point_mode | boolean | Optioneel | default: false | false | |
livechat_enabled | boolean | Optioneel | default: false | false | |
initial_server | integer | Optioneel | enum: 1, 2 · default: 1 | 1 | |
public_access | string | Optioneel | enum: open, password, hidden · default: open | open | |
public_password | string | Optioneel | Required only when public_access is password. | minLength: 4 | string |
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" }'{
"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"
}
}/matches/{matchId}
Delete an eligible unstarted match
matches:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
curl -X DELETE "https://mycourtscore.com/api/v1/matches/125" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: request-unique-id"{
"data": {
"id": 125,
"deleted": true
},
"meta": {
"request_id": "req_01HXYZ123"
}
}/matches/{matchId}/score
Read the live score payload
matches:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
curl -X GET "https://mycourtscore.com/api/v1/matches/125/score" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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"
}
}/matches/{matchId}/events
List scoring and administration events
matches:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
limit | query | integer | Optioneel | Maximum number of recent events, from 1 to 200. | 50 |
curl -X GET "https://mycourtscore.com/api/v1/matches/125/events?limit=50" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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"
}
}/matches/{matchId}/points
Award a point to player 1 or player 2
score:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
winner | integer | Verplicht | enum: 1, 2 | 1 | |
reason | string | Optioneel | enum: normal, ace, winner, forced_error, unforced_error, double_fault, out, net | normal | |
responsible_player | integer | Optioneel | enum: 0, 1, 2 | 0 |
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 }'{
"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"
}
}/matches/{matchId}/undo
Undo the last point
score:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
Geen JSON-velden. Stuur {} wanneer een body vereist is.
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 '{}'{
"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"
}
}/matches/{matchId}/server
Change the serving player
score:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
server | integer | Verplicht | enum: 1, 2 | 1 |
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 }'{
"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"
}
}/matches/{matchId}/reset
Reset the complete score
score:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
Geen JSON-velden. Stuur {} wanneer een body vereist is.
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 '{}'{
"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"
}
}/matches/{matchId}/finish
Finish a match with a declared winner
score:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
winner | integer | Verplicht | enum: 1, 2 | 1 |
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 }'{
"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"
}
}/matches/{matchId}/reopen
Reopen a finished match
score:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
matchId | path | integer | Verplicht | My Court Score match identifier. | min: 1 | 125 |
Geen JSON-velden. Stuur {} wanneer een body vereist is.
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 '{}'{
"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
Search official players or list linked players
players:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
page | query | integer | Optioneel | Page number, starting at 1. | 1 | |
per_page | query | integer | Optioneel | Items per page, from 1 to 100. | 25 | |
q | query | string | Optioneel | Search by name or club. | Lucas | |
mine | query | boolean | Optioneel | Only return the linked primary and secondary players. | true | |
club_id | query | integer | Optioneel | Filter by club. | 18 |
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"{
"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
}
}
}/players
Create the primary player account or a secondary player
players:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id |
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.
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
first_name | string | Verplicht | Player first name. | Lucas | |
last_name | string | Verplicht | Player last name. | Martin | |
email | string (email) | Optioneel | Required when creating the primary player account. | lucas@example.com | |
password | string (password) | Optioneel | Required when creating the primary player account. | minLength: 8 | ChangeMe-2026 |
club_id | integer | Optioneel | 18 | ||
club_name | string | Optioneel | Central Tennis Club | ||
federation_number | string | Optioneel | BE-123456 | ||
birth_date | string (date) | Optioneel | 2008-04-12 | ||
phone | string | Optioneel | string | ||
mobile | string | Optioneel | string | ||
city | string | Optioneel | Brussels | ||
country | string | Optioneel | Belgium | ||
notes | string | Optioneel | string | ||
lang | string | Optioneel | enum: fr, en, nl, de, es, it · default: en | en |
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" }'{
"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"
}
}/players/{playerId}
Read a permitted player profile
players:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
playerId | path | integer | Verplicht | Official or secondary player identifier. | min: 1 | 42 |
curl -X GET "https://mycourtscore.com/api/v1/players/42" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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"
}
}/players/{playerId}
Update a linked player profile
players:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
playerId | path | integer | Verplicht | Official or secondary player identifier. | min: 1 | 42 |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
first_name | string | Optioneel | string | ||
last_name | string | Optioneel | string | ||
club_id | integer | Optioneel | 1 | ||
federation_number | string | Optioneel | string | ||
birth_date | string (date) | Optioneel | 2026-09-27 | ||
phone | string | Optioneel | string | ||
mobile | string | Optioneel | string | ||
city | string | Optioneel | string | ||
country | string | Optioneel | string | ||
notes | string | Optioneel | string |
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" }'{
"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"
}
}/players/{playerId}
Delete a linked secondary player
players:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
playerId | path | integer | Verplicht | Official or secondary player identifier. | min: 1 | 42 |
curl -X DELETE "https://mycourtscore.com/api/v1/players/42" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: request-unique-id"{
"data": {
"id": 42,
"deleted": true
},
"meta": {
"request_id": "req_01HXYZ123"
}
}/clubs
List and search active clubs
clubs:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
page | query | integer | Optioneel | Page number, starting at 1. | 1 | |
per_page | query | integer | Optioneel | Items per page, from 1 to 100. | 25 | |
q | query | string | Optioneel | Search by club name, city or country. | Central |
curl -X GET "https://mycourtscore.com/api/v1/clubs?page=1&per_page=25&q=Central" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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
}
}
}/clubs
Create a club and link the developer account
clubs:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
club_name | string | Verplicht | Official club name. | Central Tennis Club | |
short_name | string | Optioneel | CTC | ||
description | string | Optioneel | string | ||
contact_person | string | Optioneel | string | ||
email | string (email) | Verplicht | club@example.com | ||
password | string (password) | Verplicht | minLength: 8 | ChangeMe-2026 | |
public_email | string (email) | Optioneel | developer@example.com | ||
phone | string | Optioneel | string | ||
mobile | string | Optioneel | string | ||
address_line1 | string | Optioneel | string | ||
address_line2 | string | Optioneel | string | ||
postal_code | string | Optioneel | string | ||
city | string | Optioneel | Brussels | ||
region | string | Optioneel | string | ||
country | string | Optioneel | Belgium | ||
website | string (uri) | Optioneel | string | ||
federation_name | string | Optioneel | string | ||
registration_number | string | Optioneel | string | ||
timezone | string | Optioneel | Valid IANA timezone. | Europe/Brussels | |
court_count | integer | Optioneel | min: 0 · max: 500 | 4 | |
lang | string | Optioneel | enum: fr, en, nl, de, es, it · default: en | en |
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" }'{
"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"
}
}/clubs/{clubId}
Read public club information
clubs:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
clubId | path | integer | Verplicht | Club identifier. | min: 1 | 18 |
curl -X GET "https://mycourtscore.com/api/v1/clubs/18" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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"
}
}/clubs/{clubId}
Update the linked club profile
clubs:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
clubId | path | integer | Verplicht | Club identifier. | min: 1 | 18 |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
club_name | string | Optioneel | string | ||
short_name | string | Optioneel | string | ||
description | string | Optioneel | string | ||
logo_url | string (uri) | Optioneel | string | ||
contact_person | string | Optioneel | string | ||
public_email | string (email) | Optioneel | developer@example.com | ||
phone | string | Optioneel | string | ||
mobile | string | Optioneel | string | ||
address_line1 | string | Optioneel | string | ||
address_line2 | string | Optioneel | string | ||
postal_code | string | Optioneel | string | ||
city | string | Optioneel | string | ||
region | string | Optioneel | string | ||
country | string | Optioneel | string | ||
website | string (uri) | Optioneel | string | ||
federation_name | string | Optioneel | string | ||
registration_number | string | Optioneel | string | ||
timezone | string | Optioneel | Europe/Brussels | ||
court_count | integer | Optioneel | min: 0 · max: 500 | 1 | |
live_match_visibility | string | Optioneel | enum: forever, until_finished, same_day | forever |
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 }'{
"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"
}
}/clubs/{clubId}/matches
List matches owned by the linked club
matches:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
clubId | path | integer | Verplicht | Club identifier. | min: 1 | 18 |
page | query | integer | Optioneel | Page number, starting at 1. | 1 | |
per_page | query | integer | Optioneel | Items per page, from 1 to 100. | 25 | |
status | query | string | Optioneel | Filter by match status. | enum: active, finished | active |
q | query | string | Optioneel | Search by player, title or court. | Lucas | |
updated_since | query | string | Optioneel | Only matches updated since this ISO 8601 date and time. | 2026-09-27T12:00:00Z |
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"{
"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
List public or linked-club tournaments
tournaments:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
page | query | integer | Optioneel | Page number, starting at 1. | 1 | |
per_page | query | integer | Optioneel | Items per page, from 1 to 100. | 25 | |
status | query | string | Optioneel | Filter by tournament status. | enum: draft, published, in_progress, finished | published |
q | query | string | Optioneel | Search by name, category or venue. | Weekend Open |
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"{
"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
}
}
}/tournaments
Create a club tournament
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
name | string | Verplicht | Tournament name. | Weekend Open | |
description | string | Optioneel | string | ||
category | string | Optioneel | Open | ||
format | string | Optioneel | enum: single_elimination, round_robin, group_knockout, group_divisions · default: single_elimination | single_elimination | |
entry_type | string | Optioneel | enum: player, team · default: player | player | |
start_date | string (date) | Verplicht | 2026-09-27 | ||
end_date | string (date) | Verplicht | 2026-09-28 | ||
venue | string | Optioneel | Central Tennis Club | ||
timezone | string | Optioneel | Europe/Brussels | ||
registration_open | boolean | Optioneel | default: false | false | |
max_participants | integer | Optioneel | min: 2 · max: 128 · default: 32 | 32 | |
group_count | integer | Optioneel | min: 1 · max: 32 · default: 1 | 1 | |
qualifiers_per_group | integer | Optioneel | min: 1 · max: 8 · default: 2 | 2 | |
division_count | integer | Optioneel | min: 1 · max: 8 | 1 | |
sets_to_win | integer | Optioneel | min: 1 · max: 3 · default: 2 | 2 | |
games_to_win_set | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_enabled | boolean | Optioneel | default: true | true | |
tie_break_at_games | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_points | integer | Optioneel | min: 3 · max: 30 · default: 7 | 7 | |
final_set_rule | string | Optioneel | enum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreak | regular_tiebreak | |
final_set_tiebreak_points | integer | Optioneel | min: 3 · max: 30 · default: 10 | 10 | |
no_ad_scoring | boolean | Optioneel | default: false | false | |
group_sets_to_win | integer | Optioneel | min: 1 · max: 3 · default: 1 | 1 | |
group_games_to_win_set | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
group_tie_break_enabled | boolean | Optioneel | default: true | true | |
group_tie_break_at_games | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
group_tie_break_points | integer | Optioneel | min: 3 · max: 30 · default: 7 | 7 | |
group_no_ad_scoring | boolean | Optioneel | default: false | false | |
minimum_rest_minutes | integer | Optioneel | min: 0 · max: 1440 · default: 30 | 30 | |
estimated_match_minutes | integer | Optioneel | min: 10 · max: 1440 · default: 60 | 60 | |
schedule_slot_minutes | integer | Optioneel | min: 5 · max: 720 · default: 30 | 30 | |
ranking_rules | array<string> | Optioneel | [
"match_wins",
"head_to_head",
"set_ratio",
"game_ratio"
] |
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 }'{
"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"
}
}/tournaments/{tournamentId}
Read tournament configuration and counts
tournaments:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
curl -X GET "https://mycourtscore.com/api/v1/tournaments/8" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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"
}
}/tournaments/{tournamentId}
Update tournament configuration
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
Supply only the tournament fields that need to change.
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
name | string | Optioneel | Tournament name. | Weekend Open | |
description | string | Optioneel | string | ||
category | string | Optioneel | Open | ||
format | string | Optioneel | enum: single_elimination, round_robin, group_knockout, group_divisions · default: single_elimination | single_elimination | |
entry_type | string | Optioneel | enum: player, team · default: player | player | |
start_date | string (date) | Optioneel | 2026-09-27 | ||
end_date | string (date) | Optioneel | 2026-09-28 | ||
venue | string | Optioneel | Central Tennis Club | ||
timezone | string | Optioneel | Europe/Brussels | ||
registration_open | boolean | Optioneel | default: false | false | |
max_participants | integer | Optioneel | min: 2 · max: 128 · default: 32 | 32 | |
group_count | integer | Optioneel | min: 1 · max: 32 · default: 1 | 1 | |
qualifiers_per_group | integer | Optioneel | min: 1 · max: 8 · default: 2 | 2 | |
division_count | integer | Optioneel | min: 1 · max: 8 | 1 | |
sets_to_win | integer | Optioneel | min: 1 · max: 3 · default: 2 | 2 | |
games_to_win_set | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_enabled | boolean | Optioneel | default: true | true | |
tie_break_at_games | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_points | integer | Optioneel | min: 3 · max: 30 · default: 7 | 7 | |
final_set_rule | string | Optioneel | enum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreak | regular_tiebreak | |
final_set_tiebreak_points | integer | Optioneel | min: 3 · max: 30 · default: 10 | 10 | |
no_ad_scoring | boolean | Optioneel | default: false | false | |
group_sets_to_win | integer | Optioneel | min: 1 · max: 3 · default: 1 | 1 | |
group_games_to_win_set | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
group_tie_break_enabled | boolean | Optioneel | default: true | true | |
group_tie_break_at_games | integer | Optioneel | min: 1 · max: 12 · default: 6 | 6 | |
group_tie_break_points | integer | Optioneel | min: 3 · max: 30 · default: 7 | 7 | |
group_no_ad_scoring | boolean | Optioneel | default: false | false | |
minimum_rest_minutes | integer | Optioneel | min: 0 · max: 1440 · default: 30 | 30 | |
estimated_match_minutes | integer | Optioneel | min: 10 · max: 1440 · default: 60 | 60 | |
schedule_slot_minutes | integer | Optioneel | min: 5 · max: 720 · default: 30 | 30 | |
ranking_rules | array<string> | Optioneel | [
"match_wins",
"head_to_head",
"set_ratio",
"game_ratio"
] | ||
status | string | Optioneel | enum: draft, published, in_progress, finished | draft |
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 }'{
"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"
}
}/tournaments/{tournamentId}
Delete and archive a tournament
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
curl -X DELETE "https://mycourtscore.com/api/v1/tournaments/8" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: request-unique-id"{
"data": {
"id": 8,
"deleted": true,
"deletion_archive_id": 3
},
"meta": {
"request_id": "req_01HXYZ123"
}
}/tournaments/{tournamentId}/participants
List tournament participants
tournaments:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
curl -X GET "https://mycourtscore.com/api/v1/tournaments/8/participants" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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"
}
}/tournaments/{tournamentId}/participants
Add a participant or team
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
Supply display_name or a valid player_id.
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
player_id | integer | Optioneel | 42 | ||
display_name | string | Optioneel | Lucas Martin | ||
member1_name | string | Optioneel | string | ||
member2_name | string | Optioneel | string | ||
member1_player_id | integer | Optioneel | 1 | ||
member2_player_id | integer | Optioneel | 1 | ||
email | string (email) | Optioneel | developer@example.com | ||
seed | integer | Optioneel | min: 0 · max: 128 | 1 | |
group | integer | Optioneel | min: 0 · max: 32 | 1 | |
manual_rank | integer | Optioneel | 1 | ||
status | string | Optioneel | enum: pending, accepted, rejected · default: accepted | accepted |
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 }'{
"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"
}
}/tournaments/{tournamentId}/participants/{participantId}
Update a participant, seed or group
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
participantId | path | integer | Verplicht | Tournament participant identifier. | min: 1 | 64 |
Supply only the participant fields that need to change.
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
player_id | integer | Optioneel | 42 | ||
display_name | string | Optioneel | Lucas Martin | ||
member1_name | string | Optioneel | string | ||
member2_name | string | Optioneel | string | ||
member1_player_id | integer | Optioneel | 1 | ||
member2_player_id | integer | Optioneel | 1 | ||
email | string (email) | Optioneel | developer@example.com | ||
seed | integer | Optioneel | min: 0 · max: 128 | 1 | |
group | integer | Optioneel | min: 0 · max: 32 | 1 | |
manual_rank | integer | Optioneel | 1 | ||
status | string | Optioneel | enum: pending, accepted, rejected · default: accepted | accepted |
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" }'{
"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"
}
}/tournaments/{tournamentId}/participants/{participantId}
Remove a participant before draw generation
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
participantId | path | integer | Verplicht | Tournament participant identifier. | min: 1 | 64 |
curl -X DELETE "https://mycourtscore.com/api/v1/tournaments/8/participants/64" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: request-unique-id"{
"data": {
"id": 64,
"deleted": true
},
"meta": {
"request_id": "req_01HXYZ123"
}
}/tournaments/{tournamentId}/courts
List tournament courts
tournaments:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
curl -X GET "https://mycourtscore.com/api/v1/tournaments/8/courts" \
-H "Authorization: Bearer YOUR_API_KEY"{
"data": [
{
"id": 5,
"tournament_id": 8,
"name": "Court 1",
"sort_order": 1
}
],
"meta": {
"request_id": "req_01HXYZ123"
}
}/tournaments/{tournamentId}/courts
Add a tournament court
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
name | string | Verplicht | Court 1 | ||
sort_order | integer | Optioneel | min: 0 · max: 1000 | 1 |
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 }'{
"data": {
"id": 5,
"tournament_id": 8,
"name": "Court 1",
"sort_order": 1
},
"meta": {
"request_id": "req_01HXYZ123"
}
}/tournaments/{tournamentId}/courts/{courtId}
Rename or reorder a court
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
courtId | path | integer | Verplicht | Tournament court identifier. | min: 1 | 5 |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
name | string | Verplicht | Court 1 | ||
sort_order | integer | Optioneel | min: 0 · max: 1000 | 1 |
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 }'{
"data": {
"id": 5,
"tournament_id": 8,
"name": "Court 1",
"sort_order": 1
},
"meta": {
"request_id": "req_01HXYZ123"
}
}/tournaments/{tournamentId}/courts/{courtId}
Delete an unused tournament court
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
courtId | path | integer | Verplicht | Tournament court identifier. | min: 1 | 5 |
curl -X DELETE "https://mycourtscore.com/api/v1/tournaments/8/courts/5" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: request-unique-id"{
"data": {
"id": 5,
"deleted": true
},
"meta": {
"request_id": "req_01HXYZ123"
}
}/tournaments/{tournamentId}/matches
List draw and scheduled matches
tournaments:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
curl -X GET "https://mycourtscore.com/api/v1/tournaments/8/matches" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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"
}
}/tournaments/{tournamentId}/matches/{tournamentMatchId}
Schedule a match, update its state or declare an outcome
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
tournamentMatchId | path | integer | Verplicht | Tournament match identifier. | min: 1 | 91 |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
court_id | integer | Optioneel | 1 | ||
scheduled_at | string | Optioneel | Local time in the tournament timezone. Send an empty string to unschedule. | 2026-09-27 14:30 | |
duration_minutes | integer | Optioneel | min: 15 · max: 360 | 1 | |
force | boolean | Optioneel | Allow scheduling despite reported conflicts. | false | |
comment | string | Optioneel | string | ||
status | string | Optioneel | enum: ready, scheduled, called, warmup, live, suspended, postponed, finished, walkover, retired, no_show, disqualified, cancelled | ready | |
winner_participant_id | integer | Optioneel | 1 | ||
outcome_note | string | Optioneel | string |
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" }'{
"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"
}
}/tournaments/{tournamentId}/standings
Read group standings and tie-break details
tournaments:read
| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
curl -X GET "https://mycourtscore.com/api/v1/tournaments/8/standings" \
-H "Authorization: Bearer YOUR_API_KEY"{
"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"
}
}/tournaments/{tournamentId}/generate-draw
Generate group matches or an elimination draw
tournaments:write| Parameter | Locatie | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|---|
Authorization | header | string | Verplicht | Bearer API-sleutel voor authenticatie. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Verplicht | JSON-formaat van de aanvraagbody. | application/json | application/json |
Idempotency-Key | header | string | Optioneel | Aanbevolen unieke waarde om duplicaten na een netwerkherhaling te voorkomen. | request-unique-id | |
tournamentId | path | integer | Verplicht | Tournament identifier. | min: 1 | 8 |
| Parameter | Type | Verplicht | Beschrijving | Beperkingen | Voorbeeld |
|---|---|---|---|---|---|
slots | array<integer> | Optioneel | Optional ordered participant IDs for manual knockout placement. | [] |
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 '[]'{
"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"
}
}