Skip to main content
POST
/
matches
/
{matchId}
/
ready
curl -X POST https://teambattles.gg/api/v1/matches/jm7match123/ready \
  -H "Authorization: Bearer tb_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"teamId": "jh7abc123"}'
{
  "success": true,
  "matchReady": true,
  "timestamp": "<string>"
}

Permission Required

This endpoint requires matches.user_matches:read-write on your API key. A free (api_free) key receives 403 error_api_feature_required; this requires an api_pro+ plan.

Access / Membership Rules

The readiness state is set as the API key owner, derived from the key itself - it is never accepted as a body field. The owner must captain the team being marked ready (teamId). A personal key can only mark a team ready when its owner actually captains it - the route binding is a no-op and this authorization is enforced inside Convex. A non-personal key receives 403 API_KEY_PERMISSION_DENIED. This route accepts an optional Idempotency-Key header so retries are safe.

Request Body

FieldTypeRequiredDescription
teamIdstringYesTeam ID to mark ready.

What’s Returned

Returns success: true, a matchReady boolean indicating whether both teams are now ready, and a timestamp. Mintlify renders the full schema from the spec below.
curl -X POST https://teambattles.gg/api/v1/matches/jm7match123/ready \
  -H "Authorization: Bearer tb_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"teamId": "jh7abc123"}'

Authorizations

Authorization
string
header
required

Send your API key as: Authorization: Bearer tb_

Path Parameters

matchId
string
required

Match ID.

Body

application/json

Marks one participating team ready as the API key owner.

teamId
string
required

Team ID to mark ready.

Minimum string length: 1

Response

The team readiness state was updated.

success
boolean
required
matchReady
boolean
required
timestamp
string
required