Extend held seats
Refresh the hold TTL (payment window) for one or more seats the caller already holds. Batch + partial-success: seats no longer held by this token are returned in failed[] without failing the request.
/api/v1/events/{eventKey}/seats/extendPath Parameters
Client-generated token identifying the hold session (≥ 8 chars; recommended: random UUID).
8 <= lengthSeat labels to extend. Omit to extend every seat currently held by this token.
1 <= items <= 200New hold lifetime in seconds (payment window). Defaults to 600 (10 min) when omitted; capped at 3600 (1 hour).
0 < value <= 3600Response Body
curl -X POST "http://localhost:3000/api/v1/events/string/seats/extend" \ -H "Content-Type: application/json" \ -d '{ "holdToken": "stringst" }'{
"holdExpiresAt": "2026-10-02T18:55:00.000Z",
"extended": [
{
"objectLabel": "A-12"
}
],
"failed": [
{
"objectLabel": "A-13",
"reason": "not_held_by_token"
}
]
}{
"statusCode": 0,
"message": "string",
"errors": {
"property1": [
"string"
],
"property2": [
"string"
]
}
}{
"statusCode": 0,
"message": "string",
"errors": {
"property1": [
"string"
],
"property2": [
"string"
]
}
}{
"statusCode": 0,
"message": "string",
"errors": {
"property1": [
"string"
],
"property2": [
"string"
]
}
}{
"statusCode": 0,
"message": "string",
"errors": {
"property1": [
"string"
],
"property2": [
"string"
]
}
}Release seats POST
Returns one or more seats to `free` status in a single atomic, all-or-nothing batch. Works on both held and booked seats. Use this when a purchase is cancelled, a hold needs to be voluntarily released before TTL expiry, or a booking is refunded. If any one requested label is not currently held or booked, the whole request fails with `409` and nothing is released. Emits one `seat.released` webhook per released seat if a subscription exists.
Status
read-only snapshots of seat availability and reports for an event.