Create an event
Creates a new event bound to a published chart. The event starts with all seats in `free` status and has its own independent inventory: events created from the same chart share no seat state and no general-admission capacity (create one event per performance). The bound chart's `publishedVersion` is resolved LIVE at every read — events do not pin a chart version, so republishing the chart updates the layout of every event bound to it (use `move-to-new-chart-copy` to give one event its own chart). Pass your own `eventKey` to make the call safe to retry: a repeat with the same `eventKey` + `chartKey` returns the existing event with `200`.
/api/v1/eventsKey of the published chart this event binds to (e.g. chart_8a2b1c). The chart MUST have a non-null publishedVersion — call POST /charts/{chartKey}/publish first if it is still in draft.
1 <= lengthOptional caller-chosen key (1-64 chars, A-Z a-z 0-9 _ -), unique across all workspaces and environments. When omitted a 21-char key is generated. Safe to retry: repeating the call with the same eventKey and chartKey returns the existing event with 200 instead of creating a duplicate; a key already bound to a different chart, environment or workspace returns 409 event_key_conflict.
^[A-Za-z0-9_-]{1,64}$Optional human-readable event name (≤ 255 chars). Shown in the dashboard events list and on webhook payloads. When omitted the event is identified by its eventKey alone.
length <= 255Response Body
curl -X POST "https://seatbuilder.org/api/v1/events" \ -H "Content-Type: application/json" \ -d '{ "chartKey": "string" }'{
"id": "5b0f7c1e-2d4a-4f8e-9c3b-1a2b3c4d5e6f",
"workspaceId": "9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c6b",
"environment": "production",
"chartId": "3c2b1a0f-9e8d-4c7b-8a6f-5e4d3c2b1a0f",
"chartKey": "chart_8a2b1c",
"eventKey": "tg-prod-session-44778",
"name": "Friday jazz night, October 2026",
"createdAt": "2026-09-18T11:30:00.000Z",
"updatedAt": "2026-09-18T11:30:00.000Z"
}{
"id": "5b0f7c1e-2d4a-4f8e-9c3b-1a2b3c4d5e6f",
"workspaceId": "9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c6b",
"environment": "production",
"chartId": "3c2b1a0f-9e8d-4c7b-8a6f-5e4d3c2b1a0f",
"chartKey": "chart_8a2b1c",
"eventKey": "tg-prod-session-44778",
"name": "Friday jazz night, October 2026",
"createdAt": "2026-09-18T11:30:00.000Z",
"updatedAt": "2026-09-18T11:30:00.000Z"
}{
"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"
]
}
}{
"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 an event GET
Returns a single event by `eventKey`, including `chartKey` of the bound chart (the same value `/hold` and `/book` return). The `chartPublishedVersion` is resolved LIVE from the bound chart at read time (per Phase 12 INNER JOIN) — if the chart has been unpublished after the event was created, `chartPublishedVersion` will be `null`.
Update an event PATCH
Updates an event's `name`. The bound chart cannot be changed here; to give this event its own chart, use `POST /events/{eventKey}/actions/move-to-new-chart-copy`.