Skip to main content
POST
/
matches
/
{matchId}
/
accept
curl -X POST https://teambattles.gg/api/v1/matches/jm7match123/accept \
  -H "Authorization: Bearer tb_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"teamId": "jh7abc123", "activeRoster": ["jd7user123", "jd7user456"]}'
{
  "success": true,
  "acceptanceId": "<string>",
  "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 acceptance request is created as the API key owner, derived from the key itself - it is never accepted as a body field. The owner must captain the accepting team (teamId), and the proposed activeRoster must satisfy the existing match rules (roster size, team membership, and any league constraints). A personal key can only accept matches for teams its owner actually captains - 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 accepting the match.
activeRosterarrayYesActive roster user IDs for the acceptance request.
benchRosterarrayNoOptional bench roster users (objects with id and priority).
disputedRulesobjectNoOptional proposed rule changes.
mapPreferenceModestringNoOptional map preference mode for selected maps: PREFERRED or VETO.
selectedMapsarrayNoOptional proposed map IDs.
messagestringNoOptional message for the match creator.

What’s Returned

Returns success: true, the acceptanceId of the new acceptance request, and a timestamp. Mintlify renders the full schema from the spec below.
curl -X POST https://teambattles.gg/api/v1/matches/jm7match123/accept \
  -H "Authorization: Bearer tb_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"teamId": "jh7abc123", "activeRoster": ["jd7user123", "jd7user456"]}'

Authorizations

Authorization
string
header
required

Send your API key as: Authorization: Bearer tb_

Path Parameters

matchId
string
required

Match ID.

Body

application/json

Creates a match acceptance request as the API key owner.

teamId
string
required

Team ID accepting the match.

Minimum string length: 1
activeRoster
string[]
required

Active roster user IDs for the acceptance request.

Minimum array length: 1
Minimum string length: 1
benchRoster
object[]

Optional bench roster users.

disputedRules
object

Optional proposed rule changes.

mapPreferenceMode
enum<string>

Optional map preference mode for selected maps.

Available options:
PREFERRED,
VETO
selectedMaps
string[]

Optional proposed map IDs.

message
string

Optional message for the match creator.

Response

The match acceptance request was created.

success
boolean
required
acceptanceId
string
required
timestamp
string
required