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:
multiRes.basePath=basePath;multiRes.extension=extension(it carries the signature, so every tile and fallback request is signed).
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.