SDK
Your site, your payments, our seat engine.
Create a constrained selection session with one API call, embed the map, and receive signed webhooks. Your buyers and payments never touch our servers.
Sound familiar?
Building seat selection from scratch
Realtime holds, availability, and zoomable maps are years of edge cases. Mount the engine and ship this quarter instead.
Handing buyers to a third party
Hosted ticketing absorbs your customer relationship. Sessions carry an opaque external reference. Buyer PII stays with you.
Client-side trust bugs
A token that can widen what it selects is an exploit waiting. Here the server validates every selection against the session's constraints.
A constrained session, not a blank API
01Constrained sessionsDeclare the event, selectable inventory, max count, hold lifetime, and return target. The server enforces all of it.
02Embed anywhereAn iframe with a fragment token or a hosted page with redirect return. CSP frame-ancestors and allowed origins built in.
03Hold, don't sellSelections hold inventory for the session's lifetime. You confirm the sale in your own checkout, no cross-channel double-sells.
04Signed lifecycle webhookssession.held and session.released arrive HMAC-signed and retried, with a delivery log in the admin.
05Zero-PII boundaryWe never see your payments or your buyers. An opaque reference is the only link between a session and your systems.
06One call to mountThe SDK wraps session creation and embedding, from API key to a live map in an afternoon.
From API key to embedded map
embed.ts
import { createSession, mountSeatmapEmbed } from "@seatmap/sdk";// 1. Constrain what may be selected (server-side call)const session = await createSession({apiKey: process.env.SEATMAP_API_KEY,thing: "evt_summer_final_01",selectable: { blocks: ["A", "B"] },maxSeats: 4,holdSeconds: 600,returnUrl: "https://yourshop.com/checkout",buyerRef: "cart_9f31", // opaque to Seatmap});// 2. Mount the live seat map in your pagemountSeatmapEmbed("#seatmap", { token: session.token });// 3. Receive session.held / session.released webhooks (HMAC-signed)// → confirm the sale in your own checkout
TypeScript · @seatmap/sdksession.held · session.released
Embed your first map
Create an API key in the demo workspace and mount a session.