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.