Skip to main content
POST
/
tickets
curl -X POST https://teambattles.gg/api/v1/tickets \
  -H "Authorization: Bearer tb_your_api_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 9f1c2b3a-ticket-1" \
  -d '{"subject":"Score sync stuck","description":"My match scores have not synced for an hour.","category":"technical_bug"}'
{
  "success": true,
  "ticketId": "<string>",
  "ticketNumber": 0,
  "timestamp": "<string>"
}

Permission Required

This endpoint requires tickets.write:write on your API key, plus the writes feature. The owner is always the API key owner, derived from the key itself - it is never accepted as a body field. A free (api_free) key receives 403 error_api_feature_required; this requires an api_pro+ plan.

Access / Membership Rules

Tickets are owner-scoped (binding: "none"). The created ticket is owned by the API key owner. Only the self-file categories are accepted - entity-bound and staff-only categories are rejected with 400 INVALID_INPUT. The route supports the Idempotency-Key header. Supplying one makes a retried create safe - the same key and request body returns the original result rather than filing a duplicate ticket.

What’s Returned

Returns an object with success: true, the created ticketId, a ticketNumber (the human-facing sequential number), and a timestamp. Mintlify renders the full schema from the spec below.

Request Body

FieldTypeRequiredDescription
subjectstringYesTicket subject (1-150 chars).
descriptionstringYesInitial message / description (1-2000 chars).
categorystringYesOne of account, technical_bug, feature_request, billing, other.
imagesstring[]NoStorage IDs from the image upload endpoint to attach (max 10).
curl -X POST https://teambattles.gg/api/v1/tickets \
  -H "Authorization: Bearer tb_your_api_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 9f1c2b3a-ticket-1" \
  -d '{"subject":"Score sync stuck","description":"My match scores have not synced for an hour.","category":"technical_bug"}'

Authorizations

Authorization
string
header
required

Send your API key as: Authorization: Bearer tb_

Body

application/json

Creates a self-filed support ticket owned by the API key owner.

subject
string
required

Ticket subject (max 150 chars).

Required string length: 1 - 150
description
string
required

Initial message / description (max 2000 chars).

Required string length: 1 - 2000
category
enum<string>
required

Support category. Entity-bound and staff-only categories are rejected.

Available options:
account,
technical_bug,
feature_request,
billing,
other
images
string[]

Optional storage IDs (from /uploads/image-url) to attach (max 10).

Maximum array length: 10

Response

The ticket was created.

success
boolean
required
ticketId
string
required

Created ticket ID.

ticketNumber
integer
required

Human-facing sequential ticket number.

Required range: -9007199254740991 <= x <= 9007199254740991
timestamp
string
required

Response generation time (ISO 8601).