Unpublish a chart
Clears the `publishedVersion` on a chart. Events already created from previously-published versions keep working (they read the chart's current `publishedVersion` live; if `null`, the chart appears empty). Use with care.
curl -X POST "https://seatbuilder.org/api/v1/charts/string/unpublish"{
"chartKey": "chart_8a2b1c",
"name": "Brooklyn Music Hall — main floor",
"draftVersion": 4,
"publishedVersion": null,
"updatedAt": "2026-09-18T11:15:30.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"
]
}
}Publish a chart POST
Promotes the current draft to a published version. Events do not pin a version: every event of this chart reads the new layout immediately. To protect sold tickets, the publish is refused with `409 publish_affects_reservations` when the new draft would remove a booked or held label, turn it from seat to GA (or back), change its category, or shrink a GA area below its booked + held quantity on any event of this chart (both environments). `failed[]` lists every such label per event; `GET /charts/{chartKey}/publish-check` returns the same list without publishing. Pass `?force=true` to publish anyway: existing holds and bookings are kept as they are.
Preview the impact of publishing GET
Dry run of `POST /charts/{chartKey}/publish`: lists every booked or held label, per event of this chart (both environments), that publishing the current draft would remove, turn from seat to GA or back, re-categorise, or squeeze below a GA area's booked + held quantity. An empty `affected` list means the publish is safe.