API · Tickets
Tickets are the purchasable types within an event — General Admission, VIP, Early Bird, and so on. Each event has one or more tickets, each with its own price, stock, and limits.
Usetix supports two ticket kinds, exposed via the kind field:
StandardTicket— Single-use tickets. One QR per buyer.GroupTicket— Bulk tickets that redeem a configurable number of attendees per code.
GET /admin/events/:slug/tickets
Returns all tickets belonging to an event.
curl -H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase/tickets
Query parameters:
| Parameter | Description |
|---|---|
filter |
Set to archived to return only archived tickets. Default returns active and hidden tickets. |
Response:
{
"event": {
"id": 42,
"slug": "spring-showcase",
"title": "Spring Showcase"
},
"tickets": [
{
"id": 101,
"title": "General Admission",
"kind": "StandardTicket",
"state": "active",
"price": { "amount": "21.00", "currency": "EUR" },
"stock": 200,
"unlimited_stock": false,
"position": 1,
"max_per_order": 6,
"max_per_customer": null,
"access_code_required": false
}
]
}
GET /admin/events/:slug/tickets/:id
Returns a single ticket.
curl -H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase/tickets/101
Response:
{
"id": 101,
"title": "General Admission",
"kind": "StandardTicket",
"state": "active",
"price": { "amount": "21.00", "currency": "EUR" },
"stock": 200,
"unlimited_stock": false,
"position": 1,
"max_per_order": 6,
"max_per_customer": null,
"access_code_required": false
}
POST /admin/events/:slug/standard_tickets
Creates a new standard ticket on the event.
curl -X POST \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"title": "Late bird", "price": "15.00", "stock": 50}' \
https://app.usetix.io/admin/events/spring-showcase/standard_tickets
Body parameters:
| Field | Required | Notes |
|---|---|---|
title |
yes | Display title. |
price |
yes | Decimal as string. |
stock |
yes | Initial stock count. Use -1 for unlimited. |
state |
no | active (default) or hidden. |
color |
no | Hex code (#RRGGBB) for scanner / PDF / admin tier recognition. |
max_per_order |
no | Cap on copies of this ticket per single order. |
max_per_customer |
no | Cap on copies of this ticket per email lifetime. |
features |
no | Array of strings describing what’s included. |
Response: 201 Created with the ticket JSON.
PATCH /admin/events/:slug/standard_tickets/:id
Updates a standard ticket. Send only the fields you want to change.
curl -X PATCH \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"price": "12.00"}' \
https://app.usetix.io/admin/events/spring-showcase/standard_tickets/101
Response: 200 OK with the updated ticket JSON.
POST /admin/events/:slug/group_tickets
Creates a new group ticket. Group tickets bundle multiple admissions into a single QR code.
curl -X POST \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"title": "4-pack", "price": "60.00", "stock": 25, "group_size": 4, "unit_price": "15.00"}' \
https://app.usetix.io/admin/events/spring-showcase/group_tickets
Body parameters: Same as standard_tickets, plus:
| Field | Required | Notes |
|---|---|---|
group_size |
yes | Number of admissions per code. |
unit_price |
yes | Decimal as string. Per-admission price (the bundle’s effective per-attendee cost). |
Response: 201 Created with the ticket JSON (kind: "GroupTicket").
PATCH /admin/events/:slug/group_tickets/:id
Updates a group ticket. Send only the fields you want to change.
curl -X PATCH \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"group_size": 6}' \
https://app.usetix.io/admin/events/spring-showcase/group_tickets/102
Response: 200 OK with the updated ticket JSON.
POST /admin/events/:slug/tickets/:id/archival
Archives a ticket. Archived tickets disappear from the public shop and from the default admin list, but historical orders keep working.
curl -X POST \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase/tickets/101/archival
Response: 200 OK with the ticket JSON (state: "archived").
DELETE /admin/events/:slug/tickets/:id/archival
Unarchives a ticket, restoring it to active state.
curl -X DELETE \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase/tickets/101/archival
Response: 200 OK with the ticket JSON (state: "active").
Ticket fields
| Field | Type | Notes |
|---|---|---|
id |
integer | Internal numeric ID. Path parameter. |
title |
string | Display title. |
kind |
string | StandardTicket or GroupTicket. |
state |
string | active, hidden, or archived. |
price.amount |
string | Decimal as string (e.g. "21.00"). |
price.currency |
string | ISO 4217 currency code. Inherited from the account. |
stock |
integer | Current stock count. -1 means unlimited (see unlimited_stock). |
unlimited_stock |
boolean | Convenience flag — true when stock is -1. |
position |
integer | Display order within the event (low to high). |
max_per_order |
integer | null | Cap on how many of this ticket a single order may contain. null means unlimited. |
max_per_customer |
integer | null | Cap on how many of this ticket the same email can buy across all orders. null means unlimited. |
access_code_required |
boolean | true for hidden tickets that require a code at checkout. |