Get event reports
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.
curl -X GET "https://seatbuilder.org/api/v1/events/string/reports"{
"eventKey": "evt_q3-2026-jazz-night",
"byStatus": {
"held": 1,
"booked": 1
},
"byCategory": [
{
"status": "held",
"categoryKey": "premium",
"count": 1
},
{
"status": "booked",
"categoryKey": "premium",
"count": 1
}
]
}{
"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 status GET
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).
Webhooks
register subscribers, rotate signing secrets, and replay failed deliveries.