Get event status
Returns one entry per non-free object of an event. Objects absent from the response are `free` (lazy initialization); expired holds count as free. This is the endpoint the SDK polls to render the live seat map. Seat entries: `{ objectLabel, objectType: "seat", status, categoryKey, holdExpiresAt? }`. General-admission areas are ONE aggregated entry per area (emitted once anything is held or booked): `{ objectLabel, objectType: "generalAdmission", status, categoryKey, capacity, held, booked, remaining }` where `status` is `free` while `remaining > 0`, `booked` when bookings fill the capacity, otherwise `held`. `categoryKey` comes from the published chart. Hold tokens are never returned. Pass `?holdToken=<your token>` to have your own live holds flagged: `mine: true` on seats, `mineQuantity` on GA areas (a token that matches nothing simply adds no flags). `extraData` is included for secret-key callers only. Pass `?labels=A-12,A-13` to narrow to specific objects (free objects are still omitted — see /objects for the full layout).
/api/v1/events/{eventKey}/statusPath Parameters
Query Parameters
Your holdToken (max 255 chars); flags your own live holds with mine / mineQuantity.
Comma-separated object labels to narrow the response (max 200).
Response Body
curl -X GET "https://seatbuilder.org/api/v1/events/string/status?holdToken=7f6c3a91-b1ef-4d0a-9c84-3f12a8e0b5d2&labels=A-12%2CA-13"{
"eventKey": "evt_q3-2026-jazz-night",
"objects": [
{
"objectLabel": "A-12",
"objectType": "seat",
"status": "held",
"categoryKey": "premium",
"holdExpiresAt": "2026-10-02T18:55:00.000Z",
"mine": true
},
{
"objectLabel": "A-13",
"objectType": "seat",
"status": "booked",
"categoryKey": "premium"
},
{
"objectLabel": "GA-LAWN",
"objectType": "generalAdmission",
"status": "free",
"categoryKey": "lawn",
"capacity": 500,
"held": 12,
"booked": 40,
"remaining": 448,
"mineQuantity": 2
}
]
}{
"statusCode": 0,
"error": "string",
"message": "string",
"code": "validation_failed",
"failed": [
{
"objectLabel": "string",
"reason": "string",
"eventKey": "string",
"environment": "string",
"booked": 0,
"held": 0
}
],
"errors": {
"property1": [
"string"
],
"property2": [
"string"
]
}
}{
"statusCode": 0,
"error": "string",
"message": "string",
"code": "validation_failed",
"failed": [
{
"objectLabel": "string",
"reason": "string",
"eventKey": "string",
"environment": "string",
"booked": 0,
"held": 0
}
],
"errors": {
"property1": [
"string"
],
"property2": [
"string"
]
}
}{
"statusCode": 0,
"error": "string",
"message": "string",
"code": "validation_failed",
"failed": [
{
"objectLabel": "string",
"reason": "string",
"eventKey": "string",
"environment": "string",
"booked": 0,
"held": 0
}
],
"errors": {
"property1": [
"string"
],
"property2": [
"string"
]
}
}{
"statusCode": 0,
"error": "string",
"message": "string",
"code": "validation_failed",
"failed": [
{
"objectLabel": "string",
"reason": "string",
"eventKey": "string",
"environment": "string",
"booked": 0,
"held": 0
}
],
"errors": {
"property1": [
"string"
],
"property2": [
"string"
]
}
}Get event objects GET
Returns the published chart’s objects and category definitions independent of live status (C1). Use it to join each object’s categoryKey to your own data (e.g. pricing) — including for free seats — before they are held. An unpublished chart returns empty arrays (200, not 404). Pass ?labels=A-12,A-13 to narrow the response.
Get event reports GET
Returns aggregate seat counts for an event, grouped by status (totals) and by (status, categoryKey). Useful for dashboards and analytics — for live SDK rendering use `/status` instead.