Una API REST versionata per partite, punteggi live, giocatori, club e tornei.
La proprietà viene verificata sulla chiave API esatta, non solo sull’account sviluppatore o sull’account My Court Score collegato.
Mantieni una chiave stabile per ogni integrazione e ambiente. Revocarla o perderla rimuove l’accesso in scrittura alle risorse che ha creato. 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.
Proprietà rigorosa: una risorsa può essere modificata, eliminata o usata da un’azione di scrittura solo con la stessa chiave API che l’ha creata.
Webhooks are not included in this first version.
/health
Check API availability
Public
Nessun parametro richiesto.
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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
page | query | integer | Facoltativo | Page number, starting at 1. | 1 | |
per_page | query | integer | Facoltativo | Items per page, from 1 to 100. | 25 | |
status | query | string | Facoltativo | Filter by match status. | enum: active, finished | active |
q | query | string | Facoltativo | Search by player, title, court or match number. | Lucas | |
updated_since | query | string | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
title | string | Facoltativo | Match title. | Club championship | |
type | string | Facoltativo | Match category. | Singles | |
court_name | string | Facoltativo | Court 1 | ||
player1 | string | Obbligatorio | Displayed name for player 1. Required when player1_id is not supplied. | Lucas Martin | |
player2 | string | Obbligatorio | Displayed name for player 2. Required when player2_id is not supplied. | Nathan Smith | |
player1_id | integer | Facoltativo | Optional official player identifier. | 42 | |
player2_id | integer | Facoltativo | Optional official player identifier. | 57 | |
player1_club_id | integer | Facoltativo | 18 | ||
player2_club_id | integer | Facoltativo | 18 | ||
sets_to_win | integer | Facoltativo | min: 1 · max: 3 · default: 2 | 2 | |
games_to_win_set | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_enabled | boolean | Facoltativo | default: true | true | |
tie_break_at_games | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_points | integer | Facoltativo | min: 3 · max: 30 · default: 7 | 7 | |
final_set_rule | string | Facoltativo | enum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreak | regular_tiebreak | |
final_set_tiebreak_points | integer | Facoltativo | min: 3 · max: 30 · default: 10 | 10 | |
no_ad_scoring | boolean | Facoltativo | default: false | false | |
advanced_point_mode | boolean | Facoltativo | default: false | false | |
livechat_enabled | boolean | Facoltativo | default: false | false | |
initial_server | integer | Facoltativo | enum: 1, 2 · default: 1 | 1 | |
public_access | string | Facoltativo | enum: open, password, hidden · default: open | open | |
public_password | string | Facoltativo | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
matchId | path | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
matchId | path | integer | Obbligatorio | My Court Score match identifier. | min: 1 | 125 |
Supply only the match fields that need to change.
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
title | string | Facoltativo | Match title. | Club championship | |
type | string | Facoltativo | Match category. | Singles | |
court_name | string | Facoltativo | Court 1 | ||
player1 | string | Facoltativo | Displayed name for player 1. Required when player1_id is not supplied. | Lucas Martin | |
player2 | string | Facoltativo | Displayed name for player 2. Required when player2_id is not supplied. | Nathan Smith | |
player1_id | integer | Facoltativo | Optional official player identifier. | 42 | |
player2_id | integer | Facoltativo | Optional official player identifier. | 57 | |
player1_club_id | integer | Facoltativo | 18 | ||
player2_club_id | integer | Facoltativo | 18 | ||
sets_to_win | integer | Facoltativo | min: 1 · max: 3 · default: 2 | 2 | |
games_to_win_set | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_enabled | boolean | Facoltativo | default: true | true | |
tie_break_at_games | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_points | integer | Facoltativo | min: 3 · max: 30 · default: 7 | 7 | |
final_set_rule | string | Facoltativo | enum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreak | regular_tiebreak | |
final_set_tiebreak_points | integer | Facoltativo | min: 3 · max: 30 · default: 10 | 10 | |
no_ad_scoring | boolean | Facoltativo | default: false | false | |
advanced_point_mode | boolean | Facoltativo | default: false | false | |
livechat_enabled | boolean | Facoltativo | default: false | false | |
initial_server | integer | Facoltativo | enum: 1, 2 · default: 1 | 1 | |
public_access | string | Facoltativo | enum: open, password, hidden · default: open | open | |
public_password | string | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
matchId | path | integer | Obbligatorio | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
matchId | path | integer | Obbligatorio | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
matchId | path | integer | Obbligatorio | My Court Score match identifier. | min: 1 | 125 |
limit | query | integer | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
matchId | path | integer | Obbligatorio | My Court Score match identifier. | min: 1 | 125 |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
winner | integer | Obbligatorio | enum: 1, 2 | 1 | |
reason | string | Facoltativo | enum: normal, ace, winner, forced_error, unforced_error, double_fault, out, net | normal | |
responsible_player | integer | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
matchId | path | integer | Obbligatorio | My Court Score match identifier. | min: 1 | 125 |
Nessun campo JSON. Invia {} quando è richiesto un corpo.
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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
matchId | path | integer | Obbligatorio | My Court Score match identifier. | min: 1 | 125 |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
server | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
matchId | path | integer | Obbligatorio | My Court Score match identifier. | min: 1 | 125 |
Nessun campo JSON. Invia {} quando è richiesto un corpo.
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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
matchId | path | integer | Obbligatorio | My Court Score match identifier. | min: 1 | 125 |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
winner | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
matchId | path | integer | Obbligatorio | My Court Score match identifier. | min: 1 | 125 |
Nessun campo JSON. Invia {} quando è richiesto un corpo.
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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
page | query | integer | Facoltativo | Page number, starting at 1. | 1 | |
per_page | query | integer | Facoltativo | Items per page, from 1 to 100. | 25 | |
q | query | string | Facoltativo | Search by name or club. | Lucas | |
mine | query | boolean | Facoltativo | Only return the linked primary and secondary players. | true | |
club_id | query | integer | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | 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.
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
first_name | string | Obbligatorio | Player first name. | Lucas | |
last_name | string | Obbligatorio | Player last name. | Martin | |
email | string (email) | Facoltativo | Required when creating the primary player account. | lucas@example.com | |
password | string (password) | Facoltativo | Required when creating the primary player account. | minLength: 8 | ChangeMe-2026 |
club_id | integer | Facoltativo | 18 | ||
club_name | string | Facoltativo | Central Tennis Club | ||
federation_number | string | Facoltativo | BE-123456 | ||
birth_date | string (date) | Facoltativo | 2008-04-12 | ||
phone | string | Facoltativo | string | ||
mobile | string | Facoltativo | string | ||
city | string | Facoltativo | Brussels | ||
country | string | Facoltativo | Belgium | ||
notes | string | Facoltativo | string | ||
lang | string | Facoltativo | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
playerId | path | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
playerId | path | integer | Obbligatorio | Official or secondary player identifier. | min: 1 | 42 |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
first_name | string | Facoltativo | string | ||
last_name | string | Facoltativo | string | ||
club_id | integer | Facoltativo | 1 | ||
federation_number | string | Facoltativo | string | ||
birth_date | string (date) | Facoltativo | 2026-09-27 | ||
phone | string | Facoltativo | string | ||
mobile | string | Facoltativo | string | ||
city | string | Facoltativo | string | ||
country | string | Facoltativo | string | ||
notes | string | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
playerId | path | integer | Obbligatorio | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
page | query | integer | Facoltativo | Page number, starting at 1. | 1 | |
per_page | query | integer | Facoltativo | Items per page, from 1 to 100. | 25 | |
q | query | string | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
club_name | string | Obbligatorio | Official club name. | Central Tennis Club | |
short_name | string | Facoltativo | CTC | ||
description | string | Facoltativo | string | ||
contact_person | string | Facoltativo | string | ||
email | string (email) | Obbligatorio | club@example.com | ||
password | string (password) | Obbligatorio | minLength: 8 | ChangeMe-2026 | |
public_email | string (email) | Facoltativo | developer@example.com | ||
phone | string | Facoltativo | string | ||
mobile | string | Facoltativo | string | ||
address_line1 | string | Facoltativo | string | ||
address_line2 | string | Facoltativo | string | ||
postal_code | string | Facoltativo | string | ||
city | string | Facoltativo | Brussels | ||
region | string | Facoltativo | string | ||
country | string | Facoltativo | Belgium | ||
website | string (uri) | Facoltativo | string | ||
federation_name | string | Facoltativo | string | ||
registration_number | string | Facoltativo | string | ||
timezone | string | Facoltativo | Valid IANA timezone. | Europe/Brussels | |
court_count | integer | Facoltativo | min: 0 · max: 500 | 4 | |
lang | string | Facoltativo | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
clubId | path | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
clubId | path | integer | Obbligatorio | Club identifier. | min: 1 | 18 |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
club_name | string | Facoltativo | string | ||
short_name | string | Facoltativo | string | ||
description | string | Facoltativo | string | ||
logo_url | string (uri) | Facoltativo | string | ||
contact_person | string | Facoltativo | string | ||
public_email | string (email) | Facoltativo | developer@example.com | ||
phone | string | Facoltativo | string | ||
mobile | string | Facoltativo | string | ||
address_line1 | string | Facoltativo | string | ||
address_line2 | string | Facoltativo | string | ||
postal_code | string | Facoltativo | string | ||
city | string | Facoltativo | string | ||
region | string | Facoltativo | string | ||
country | string | Facoltativo | string | ||
website | string (uri) | Facoltativo | string | ||
federation_name | string | Facoltativo | string | ||
registration_number | string | Facoltativo | string | ||
timezone | string | Facoltativo | Europe/Brussels | ||
court_count | integer | Facoltativo | min: 0 · max: 500 | 1 | |
live_match_visibility | string | Facoltativo | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
clubId | path | integer | Obbligatorio | Club identifier. | min: 1 | 18 |
page | query | integer | Facoltativo | Page number, starting at 1. | 1 | |
per_page | query | integer | Facoltativo | Items per page, from 1 to 100. | 25 | |
status | query | string | Facoltativo | Filter by match status. | enum: active, finished | active |
q | query | string | Facoltativo | Search by player, title or court. | Lucas | |
updated_since | query | string | Facoltativo | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
page | query | integer | Facoltativo | Page number, starting at 1. | 1 | |
per_page | query | integer | Facoltativo | Items per page, from 1 to 100. | 25 | |
status | query | string | Facoltativo | Filter by tournament status. | enum: draft, published, in_progress, finished | published |
q | query | string | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
name | string | Obbligatorio | Tournament name. | Weekend Open | |
description | string | Facoltativo | string | ||
category | string | Facoltativo | Open | ||
format | string | Facoltativo | enum: single_elimination, round_robin, group_knockout, group_divisions · default: single_elimination | single_elimination | |
entry_type | string | Facoltativo | enum: player, team · default: player | player | |
start_date | string (date) | Obbligatorio | 2026-09-27 | ||
end_date | string (date) | Obbligatorio | 2026-09-28 | ||
venue | string | Facoltativo | Central Tennis Club | ||
timezone | string | Facoltativo | Europe/Brussels | ||
registration_open | boolean | Facoltativo | default: false | false | |
max_participants | integer | Facoltativo | min: 2 · max: 128 · default: 32 | 32 | |
group_count | integer | Facoltativo | min: 1 · max: 32 · default: 1 | 1 | |
qualifiers_per_group | integer | Facoltativo | min: 1 · max: 8 · default: 2 | 2 | |
division_count | integer | Facoltativo | min: 1 · max: 8 | 1 | |
sets_to_win | integer | Facoltativo | min: 1 · max: 3 · default: 2 | 2 | |
games_to_win_set | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_enabled | boolean | Facoltativo | default: true | true | |
tie_break_at_games | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_points | integer | Facoltativo | min: 3 · max: 30 · default: 7 | 7 | |
final_set_rule | string | Facoltativo | enum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreak | regular_tiebreak | |
final_set_tiebreak_points | integer | Facoltativo | min: 3 · max: 30 · default: 10 | 10 | |
no_ad_scoring | boolean | Facoltativo | default: false | false | |
group_sets_to_win | integer | Facoltativo | min: 1 · max: 3 · default: 1 | 1 | |
group_games_to_win_set | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
group_tie_break_enabled | boolean | Facoltativo | default: true | true | |
group_tie_break_at_games | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
group_tie_break_points | integer | Facoltativo | min: 3 · max: 30 · default: 7 | 7 | |
group_no_ad_scoring | boolean | Facoltativo | default: false | false | |
minimum_rest_minutes | integer | Facoltativo | min: 0 · max: 1440 · default: 30 | 30 | |
estimated_match_minutes | integer | Facoltativo | min: 10 · max: 1440 · default: 60 | 60 | |
schedule_slot_minutes | integer | Facoltativo | min: 5 · max: 720 · default: 30 | 30 | |
ranking_rules | array<string> | Facoltativo | [
"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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | Tournament identifier. | min: 1 | 8 |
Supply only the tournament fields that need to change.
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
name | string | Facoltativo | Tournament name. | Weekend Open | |
description | string | Facoltativo | string | ||
category | string | Facoltativo | Open | ||
format | string | Facoltativo | enum: single_elimination, round_robin, group_knockout, group_divisions · default: single_elimination | single_elimination | |
entry_type | string | Facoltativo | enum: player, team · default: player | player | |
start_date | string (date) | Facoltativo | 2026-09-27 | ||
end_date | string (date) | Facoltativo | 2026-09-28 | ||
venue | string | Facoltativo | Central Tennis Club | ||
timezone | string | Facoltativo | Europe/Brussels | ||
registration_open | boolean | Facoltativo | default: false | false | |
max_participants | integer | Facoltativo | min: 2 · max: 128 · default: 32 | 32 | |
group_count | integer | Facoltativo | min: 1 · max: 32 · default: 1 | 1 | |
qualifiers_per_group | integer | Facoltativo | min: 1 · max: 8 · default: 2 | 2 | |
division_count | integer | Facoltativo | min: 1 · max: 8 | 1 | |
sets_to_win | integer | Facoltativo | min: 1 · max: 3 · default: 2 | 2 | |
games_to_win_set | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_enabled | boolean | Facoltativo | default: true | true | |
tie_break_at_games | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
tie_break_points | integer | Facoltativo | min: 3 · max: 30 · default: 7 | 7 | |
final_set_rule | string | Facoltativo | enum: regular_tiebreak, no_tiebreak, super_tiebreak · default: regular_tiebreak | regular_tiebreak | |
final_set_tiebreak_points | integer | Facoltativo | min: 3 · max: 30 · default: 10 | 10 | |
no_ad_scoring | boolean | Facoltativo | default: false | false | |
group_sets_to_win | integer | Facoltativo | min: 1 · max: 3 · default: 1 | 1 | |
group_games_to_win_set | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
group_tie_break_enabled | boolean | Facoltativo | default: true | true | |
group_tie_break_at_games | integer | Facoltativo | min: 1 · max: 12 · default: 6 | 6 | |
group_tie_break_points | integer | Facoltativo | min: 3 · max: 30 · default: 7 | 7 | |
group_no_ad_scoring | boolean | Facoltativo | default: false | false | |
minimum_rest_minutes | integer | Facoltativo | min: 0 · max: 1440 · default: 30 | 30 | |
estimated_match_minutes | integer | Facoltativo | min: 10 · max: 1440 · default: 60 | 60 | |
schedule_slot_minutes | integer | Facoltativo | min: 5 · max: 720 · default: 30 | 30 | |
ranking_rules | array<string> | Facoltativo | [
"match_wins",
"head_to_head",
"set_ratio",
"game_ratio"
] | ||
status | string | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | Tournament identifier. | min: 1 | 8 |
Supply display_name or a valid player_id.
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
player_id | integer | Facoltativo | 42 | ||
display_name | string | Facoltativo | Lucas Martin | ||
member1_name | string | Facoltativo | string | ||
member2_name | string | Facoltativo | string | ||
member1_player_id | integer | Facoltativo | 1 | ||
member2_player_id | integer | Facoltativo | 1 | ||
email | string (email) | Facoltativo | developer@example.com | ||
seed | integer | Facoltativo | min: 0 · max: 128 | 1 | |
group | integer | Facoltativo | min: 0 · max: 32 | 1 | |
manual_rank | integer | Facoltativo | 1 | ||
status | string | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | Tournament identifier. | min: 1 | 8 |
participantId | path | integer | Obbligatorio | Tournament participant identifier. | min: 1 | 64 |
Supply only the participant fields that need to change.
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
player_id | integer | Facoltativo | 42 | ||
display_name | string | Facoltativo | Lucas Martin | ||
member1_name | string | Facoltativo | string | ||
member2_name | string | Facoltativo | string | ||
member1_player_id | integer | Facoltativo | 1 | ||
member2_player_id | integer | Facoltativo | 1 | ||
email | string (email) | Facoltativo | developer@example.com | ||
seed | integer | Facoltativo | min: 0 · max: 128 | 1 | |
group | integer | Facoltativo | min: 0 · max: 32 | 1 | |
manual_rank | integer | Facoltativo | 1 | ||
status | string | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | Tournament identifier. | min: 1 | 8 |
participantId | path | integer | Obbligatorio | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | Tournament identifier. | min: 1 | 8 |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
name | string | Obbligatorio | Court 1 | ||
sort_order | integer | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | Tournament identifier. | min: 1 | 8 |
courtId | path | integer | Obbligatorio | Tournament court identifier. | min: 1 | 5 |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
name | string | Obbligatorio | Court 1 | ||
sort_order | integer | Facoltativo | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | Tournament identifier. | min: 1 | 8 |
courtId | path | integer | Obbligatorio | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | Tournament identifier. | min: 1 | 8 |
tournamentMatchId | path | integer | Obbligatorio | Tournament match identifier. | min: 1 | 91 |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
court_id | integer | Facoltativo | 1 | ||
scheduled_at | string | Facoltativo | Local time in the tournament timezone. Send an empty string to unschedule. | 2026-09-27 14:30 | |
duration_minutes | integer | Facoltativo | min: 15 · max: 360 | 1 | |
force | boolean | Facoltativo | Allow scheduling despite reported conflicts. | false | |
comment | string | Facoltativo | string | ||
status | string | Facoltativo | enum: ready, scheduled, called, warmup, live, suspended, postponed, finished, walkover, retired, no_show, disqualified, cancelled | ready | |
winner_participant_id | integer | Facoltativo | 1 | ||
outcome_note | string | Facoltativo | 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
| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
tournamentId | path | integer | Obbligatorio | 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| Parametro | Posizione | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|---|
Authorization | header | string | Obbligatorio | Chiave API Bearer per autenticare la richiesta. | Bearer mcs_live_... | Bearer YOUR_API_KEY |
Content-Type | header | string | Obbligatorio | Formato JSON del corpo della richiesta. | application/json | application/json |
Idempotency-Key | header | string | Facoltativo | Valore univoco consigliato per evitare duplicati dopo un nuovo tentativo di rete. | request-unique-id | |
tournamentId | path | integer | Obbligatorio | Tournament identifier. | min: 1 | 8 |
| Parametro | Type | Obbligatorio | Descrizione | Vincoli | Esempio |
|---|---|---|---|---|---|
slots | array<integer> | Facoltativo | 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"
}
}