Seat Preevue developer docs

Quickstart: headless

Mode C. Your server (or your app, through your server) asks the API for a seat's view and gets signed URLs to use in your own viewer, typically Pannellum.

1. Create a session (server side)

curl -sS -X POST https://connect.seatpreevue.com/v1/sessions \
  -H "Authorization: Bearer $SEATPREEVUE_SECRET_KEY" -H 'Content-Type: application/json' \
  -d '{"context":{"venueRef":"your-venue"}}'

With a secret key (sk_live_…) and no Origin header, this is a server session: only your secret key can use it again. Keep the key on your server, never in an app or a page. The answer (201) has sessionId, the venue (venues[0].id), its imagery set, and eventsToken for events.

From a browser with a publishable key instead, the request carries your page's Origin, which must be one we've registered for the key.

2. Resolve seats

curl -sS -X POST "https://connect.seatpreevue.com/v1/sessions/$SESSION_ID/seats/resolve" \
  -H "Authorization: Bearer $SEATPREEVUE_SECRET_KEY" -H 'Content-Type: application/json' \
  -d '{"venueId":"'"$VENUE_ID"'","seats":[{"tokens":{"section":"Stalls","row":"N","seat":"22"}}]}'

Up to 50 seats a call. Each result has matched, our seat key, and for a matched seat configUrl, previewUrl (when the set has previews), basePath and extension.

3. Show it in Pannellum

Load the seat's config.json from configUrl, then set, from the result:

The signature lasts 30 minutes; renew the session (or resolve again) before then for a page that stays open.

4. Limits

A server session has no per-session limit; your key's limit applies. See Keys and authentication and the API reference.