Matches
How matches are created, played, and resolved in TournamentSuite.
A match is a head-to-head competition between two sides — either two individual participants or two teams. Matches are generated automatically when a tournament starts and its bracket is built.
Match lifecycle
SCHEDULED → IN_PROGRESS → PENDING_RESULT → COMPLETED
└── DISPUTED → RESOLVED| Status | Description |
|---|---|
SCHEDULED | Match is created; waiting for its scheduled time |
IN_PROGRESS | Match has started |
PENDING_RESULT | Match is over; waiting for result submission |
COMPLETED | Result confirmed; winner advances |
DISPUTED | A participant has challenged the reported result |
RESOLVED | Dispute adjudicated by an organizer |
Starting a match
Organizers or participants can signal that a match has begun:
POST /api/v1/matches/:id/start
Authorization: Bearer ACCESS_TOKENReporting a result
After the game, a participant submits the outcome:
POST /api/v1/matches/:id/report
Authorization: Bearer USER_ACCESS_TOKEN
Content-Type: application/json
{
"winnerId": "participant-uuid",
"scores": [
{ "participantId": "participant-uuid", "score": 13 },
{ "participantId": "opponent-uuid", "score": 7 }
]
}Confirming a result
The opposing participant confirms the reported result:
POST /api/v1/matches/:id/confirm
Authorization: Bearer OPPONENT_ACCESS_TOKENOnce both sides confirm — or the organizer approves the result — the match moves to COMPLETED and the winner advances in the bracket.
Disputing a result
If a participant disagrees with the reported result, they can open a dispute:
POST /api/v1/matches/:id/dispute
Authorization: Bearer USER_ACCESS_TOKEN
Content-Type: application/json
{
"reason": "The reported score is incorrect. We won 13-9, not 7-13.",
"evidence": ["screenshot-url"]
}Disputed matches are queued for organizer review. The organizer resolves the dispute and sets the final result.
Retrieving match details
GET /api/v1/matches/:id
X-API-Key: YOUR_API_KEYResponse includes both participants, the current score, status, and scheduled time. To get all matches for a tournament:
GET /api/v1/tournaments/:id/schedule
X-API-Key: YOUR_API_KEYReal-time match updates
Subscribe to match events via Webhooks to receive real-time notifications:
match.started— match has begunmatch.score_reported— a result was submittedmatch.completed— result confirmed, winner setmatch.disputed— result is under review