TS
Tournament Suite
TS
Tournament Suite
Developer Documentation
Get StartedPaginationResponse CodesRate LimitsWebhooks
Overview

Response Codes

HTTP status codes returned by the TournamentSuite API and how to handle them.

The TournamentSuite API uses standard HTTP status codes to indicate whether a request succeeded or failed.

Success codes

CodeMeaningWhen it occurs
200 OKRequest succeededGET, PATCH, DELETE
201 CreatedResource createdPOST that creates a new resource
204 No ContentRequest succeeded, no bodyDELETE operations

Client error codes

CodeMeaningCommon causes
400 Bad RequestInvalid request body or parametersMissing required fields, type errors
401 UnauthorizedAuthentication failedMissing or invalid API key / expired token
403 ForbiddenAuthenticated but not authorizedInsufficient scope, accessing another project's data
404 Not FoundResource does not existWrong ID, deleted resource
409 ConflictState conflictDuplicate registration, resource already in that state
422 Unprocessable EntityValidation failedBusiness rule violation (e.g. tournament already started)
429 Too Many RequestsRate limit exceededCheck X-RateLimit-* headers and back off

Server error codes

CodeMeaningWhat to do
500 Internal Server ErrorUnexpected server errorRetry with exponential backoff; contact support if persistent
503 Service UnavailableTemporary outage or maintenanceRetry after the Retry-After header value

Error response format

All error responses follow a consistent JSON envelope:

{
  "success": false,
  "error": {
    "code": "TOURNAMENT_NOT_FOUND",
    "message": "Tournament with ID '550e8400' was not found.",
    "timestamp": "2026-06-01T10:00:00.000Z",
    "path": "/api/v1/tournaments/550e8400"
  }
}

Handling rate limits

When you receive a 429, inspect the rate limit headers before retrying:

const response = await fetch(url, { headers });

if (response.status === 429) {
  const resetAt = response.headers.get('X-RateLimit-Reset');
  const waitMs = (Number(resetAt) * 1000) - Date.now();
  await new Promise(resolve => setTimeout(resolve, waitMs));
  // retry
}

Pagination

How to paginate large result sets using the TournamentSuite API.

Rate Limits

How API rate limits work on TournamentSuite and how to stay within them.

On this page

Success codesClient error codesServer error codesError response formatHandling rate limits