Seat Availability API v2

The v2 API exposes one long-lived stream per event. Clients open the stream, read seat changes as they happen, and reconnect with the last sequence number they saw. There is no polling endpoint; the stream is the source of truth.

Base URL: https://api.100chairs.online. All requests use TLS. Responses are UTF-8.

Authentication

Sessions are cookie-based. A session is issued to a device by your account's provisioning integration and presented on every request as the sid cookie. Sessions do not expire while in use; a session idle for 30 days is revoked.

Requests without a valid session receive 401 with a JSON body. Do not retry a 401 without re-provisioning.

Quickstart

curl -N https://api.100chairs.online/api/v2/events/evt_9Ka2mQ7xTb4Y/seats \
  -H 'Accept: text/event-stream' \
  -b 'sid=…'

The connection stays open. Each seat change arrives as one server-sent event.

Seat stream

GET/api/v2/events/{event_id}/seats

Streams every change to the event's seat map from the moment the connection opens. The response is text/event-stream and is not cacheable.

EventMeaningData
holdA seat is held by a channel and cannot be sold elsewhere until until.seat, by, until
releaseA hold lapsed or was cancelled.seat
saleA seat was sold.seat, order
blockA seat was taken off sale by the venue.seat, reason

Resuming

Every message carries a sequence number in its id: line. To resume after a disconnect, reopen the stream with ?n=<last_seq> and the server replays what you missed before switching to live delivery. Sequence numbers are per event and monotonic.

GET /api/v2/events/evt_9Ka2mQ7xTb4Y/seats?n=1841

Replay is bounded to the current sales window; a sequence older than that returns the full current map as snapshot events before going live.

Errors

StatusWhen
400Malformed request or unknown query parameter.
401Missing or revoked session.
404The event does not exist or is not visible to this account.
429Too many concurrent streams for one session.

Limits