SeatBuilderSeatBuilder Docs

Seats

hold, book, and release individual seats on an event.

Hold, book, and release individual seats on an event.

Endpoints

Move an event to a new copy of its chart POST

Detaches one event from a chart shared with other events. Copies the chart's **published** version (the layout this event shows now; an unpublished draft is not included) into a new, already published chart named `<chart name> (<eventKey>)`, and binds the event to it. Holds, bookings and GA quantities stay as they are, and the layout is identical, so buyers see no change. From then on, republishing either chart no longer affects the other: edit and publish the new chart (the response's `chartKey`) to change this event only. Sends an `event.chart_changed` webhook. The new chart counts toward your plan's chart limit. Not for use inside a ticket-sales flow.

Hold seats POST

Places a hold on the requested seat(s) for the calling workspace. Pass `objectLabels[]` — the single canonical request shape — to hold N individual seats atomically under one `holdToken` (all-or-nothing: if any seat cannot be held the whole request fails `409` and nothing is held). A single seat is a one-element array. GA areas ride on a single-element array: pass `objectLabels: ["GA-LAWN"]` together with `objectType: "generalAdmission"`, `quantity`, and (optionally) `categoryKey`; those GA fields are only valid on a one-element array. The hold lasts `ttlSeconds` (default 900). Pass the returned `holdToken` to `/book` to confirm purchase or `/release` to cancel. Holds expire automatically; subscribers to `seat.hold_expired` receive a webhook on expiry. Atomic via Redis SET NX EX — concurrent hold attempts on the same seat never double-book. The response is always the array shape ({ chartKey, eventKey, holdToken, holdExpiresAt, objects: [...] }), whether one seat or many. Safe to retry: seats this `holdToken` already holds count as held (no `409`, expiry unchanged — use `/extend`); `holdExpiresAt` is the earliest expiry across the requested seats (already-held seats keep theirs). For a GA area `quantity` is the token's total: repeating it is a no-op, a different value resizes the hold (`409 ga_capacity_exceeded` if it does not fit; the previous quantity is kept).

On this page

Seats — SeatBuilder Docs