SeatpanoDocs

API reference — v1

Base: https://api.seatpano.com. All routes are GET. Auth: X-Api-Key: vm_live_… header, or ?key=. Keys are bound to venues and to the embedding domains (checked against Origin / Referer).

Route Response
/v1/sdk/seatpano.global.js[?v=0.1.0] The SDK bundle (also index.js, index.d.ts, source maps). Licensed keys only; Referer of the embedding page must match the key's domains
/v1/venues { venues: [{ slug, name, build_id, published_at }] } filtered to the key's licence
/v1/venues/{slug}/manifest VenueManifest JSON. Header x-build-id
/v1/venues/{slug}/map VenueMapData JSON
/v1/venues/{slug}/assets/{path} Image bytes, immutable cache. {path} may be build-relative (sections/…) or the manifest's root-relative form (venues/{slug}/sections/…). Browsers cannot add headers to <img> loads, so the SDK appends ?key= here
/v1/venues/{slug}/availability?event={code} { event, sections: string[] | null, meta? }

Errors: { "error": "…" } with 400 (bad input), 401 (no key), 403 (key revoked or expired, venue not licensed, or origin refused), 404 (unknown venue / not published).

availability.sections === null means unknown. Clients should fail open and show all sections.

Usage is metered per key, venue and day (KV usage:*). Deploying and creating keys: deploy.md.

Shapes are defined in data-contract.md.