Reserved seating SDK for ticketing platforms.

One workspace per organizer. Their charts and events live inside your product; your checkout, payments, tickets and customer records do not move. Each tenant gets its own charts and its own interactive seat map.

The engine is ours: SeatLayer builds the seat map, the Designer, live inventory and 3D, and runs its own hosted ticketing on the same engine. How it compares

$0to go live, free test mode
100free sold seats a month per organization
White labelincluded with any credit pack
JS · REACT · VUE · ANGULAR · iOS · ANDROID · FLUTTER · REACT NATIVE · 7 SERVER SDKs
your platform · one organizer, one checkout
YOUR SERVER · WHEN AN ORGANIZER SIGNS UP POST /v1/workspaces { name, externalRef: "org_123" }
POST /v1/charts/{masterId}/duplicate → publish → POST /v1/events

One isolated workspace per organizer; their charts and events inherit it. Your ids travel as externalRef.

ORGANIZER → BUYER
BUYER BROWSER · EVENT + PUBLISHABLE KEY new SeatPicker({ event: eventKey, publicKey,
onCheckout: (_, __, handoff) => sendToServer(handoff.holdId) })

For public sale, the SDK receives chart and inventory directly from SeatLayer, then hands one temporary hold to your application. Your backend is not in the chart-load path.

TRUST BOUNDARY
YOUR SERVER · ACCOUNT SECRET hold = GET /v1/events/{eventKey}/holds/{holdId}
charge(hold.items)
POST /v1/events/{eventKey}/book { holdId, bookingRef }

Your backend rechecks the hold, takes payment, and confirms the sale. Account secrets never reach the buyer browser; one webhook endpoint hears every organizer.

  • 200,000seats on one map, ready in 1.95 sOpen the stadium →
  • 100,000seats in a public arena you can tryOpen the arena →
  • 10,000buyers on one event, zero server errors
  • 9 msto hold a seat under that load (p99)

Tested on public venue files with simulated buyers, September 2026. How we measured loading · How we measured buyers · Every run on GitHub

Reserved seating for multi-organizer platforms.

Each of your organizers gets its own workspace, fully separated from the others. Your own ids travel with every chart and event, so you never keep a mapping table.

Your productSeatLayer
Venue / layoutReusable chart
Performance, departure or timed sessionEvent with independent inventory
Tenant, organizer or customer accountWorkspace
Cart reservationHold
Inventory committed for a paid orderInventory booking
Your stable resource idexternalRef
TENANCY

Workspace isolation

Each organizer's charts and events are kept apart. Your keys, webhooks and billing stay in one account.

EMBEDS

Designer and live board, embedded

Organizers draw charts inside your CMS and run the live seat board inside your admin. Your secret key never reaches their browser.

INVENTORY

One event authority

Online holds and sales, blocks, the box office and partner allocations all work on the same live seats.

WEBHOOKS

One endpoint, every organizer

One webhook URL for all organizers. Each message is signed and tells you which organizer it belongs to, and retries never double-count.

Embed the control panel · SDK

Embed the control panel, just like the Designer. Organizers track every seat in real time.

The control panel is a live board for each event. Add it to your admin with the SDK and your organizers watch sales, holds and blocks as they happen, and run the event without leaving your product. Each person sees only the tools you allow.

  • Real-time trackingSold, held and free seats, sales heat and live activity, updated as buyers act.
  • Block and releaseHold seats with a reason and release them at a set time.
  • Open or close sectionsClose, hide or schedule a section or zone.
  • Change this event onlyMove seats between price levels, and sell tables whole or by the chair.
  • Sales channelsSee and manage seats set aside for partners and presales.
  • Reports and auditBooking history, breakdowns, downloads and a full audit trail.

Your server decides each operator's tools; no secret key reaches the browser. Embedded control panel guide ↗

Control panel · Grand TheatreFri 7:30 PM · live
Sales channels & partners

Invite partners and run every sales channel from one dashboard.

Big events rarely sell through one door. Set aside seats for sponsors, agencies, presales and the box office, invite each partner with their own login, and watch every channel sell from the same live seat map. It works whether you sell with SeatLayer or through your own checkout with the SDK.

  • Set aside exact seatsGive sponsors, agencies or members their own block of seats.
  • Invite partnersEach partner gets its own login and role, and sees only its seats.
  • Prices per audienceMember or agency prices only where they differ.
  • Private linksSend a buyer link for a presale or a group.
  • Move unsold seats liveRelease unsold partner seats to the public at a set date.
  • Report per channelEach partner sees its own sales; you see everything.

How sales channels work →

Stadium · Saturday · 60,000 seats4 channels · 1 seat map

Switching vendors? Click the organizer's floor plan into a chart and keep them selling. Building counter sales too? Review the reserved-seating Box Office workflow.

Your product keeps the customer. We supply the seats.

Add reserved seating without moving your buyers, money, orders or support into another system.

YOUR PLATFORM KEEPS

Commerce and the customer lifecycle

  • Organizer accounts, roles, catalog, and event merchandising
  • Cart, checkout, payment, tax, orders, and refunds
  • Ticket generation, delivery, scanning, and customer records
SEATLAYER SUPPLIES

Reserved-seat geometry and inventory

  • The Designer inside your product, and saved chart versions
  • Buyer SeatPicker, optional 3D, holds, blocks, and releases
  • Booking confirmed by your server, live seat updates, signed webhooks

How to integrate a seat map into your ticketing platform

Six calls, two of them in the browser. Steps 04–06 are the same buyer flow the seat map SDK integration guide walks through in code.

01 · YOUR SERVER

Provision a workspace

Scope the organizer's charts and events to a workspace. API keys, webhook endpoints, team membership, and billing remain organization-wide.

02 · ORGANIZER BROWSER

Design inside your CMS

Open the Designer in your CMS with a short session limited to that organizer's chart and the actions you allow.

03 · YOUR SERVER

Publish and create the event

Publish a chart version and create the reserved-seating event in test or live mode.

04 · BUYER BROWSER

Select and hold exact seats

SeatPicker loads with the event id and your public key, holds the buyer's seats and shows live changes. For private sales, your server hands it a buyer token instead.

05 · YOUR SERVER

Inspect, pay, then book

Read current hold status, mode, expiry, and line items before payment. Confirm with a stable bookingRef.

06 · YOUR SERVER

Verify and reconcile

One endpoint for every organizer: check the signature, route to the right organizer, and handle each message once even when it is retried.

Open the complete platform integration guide →

Real venues to test with.

Open any template to try the Designer, the buyer map and the 3D view before you write a line of integration code.

Browse all 58 templates →

Questions teams ask before they embed.

Still have a question? or email hello@seatlayer.io.

Does SeatLayer replace our ticketing platform?
Not in this integration path. Your platform keeps organizer accounts, event catalog, checkout, payment, tax, orders, refunds, ticket issuing, scanning, and customer records. SeatLayer supplies the reserved-seating surfaces and live seat inventory inside your product.
Can organizers create seating charts inside our platform?
Yes. Embed the Designer in your organizer CMS with a short-lived session restricted to one workspace, chart, parent origin, and permission set. No SeatLayer account secret reaches the browser.
How do we map our tenants to SeatLayer?
One workspace per tenant, organizer or customer account, created when you provision them; charts and events inherit the workspace. Keep your own ids on every object as externalRef for reconciliation. Workspace is the enforced isolation boundary; externalRef is never used as authorization.
Can we import an organizer's existing seating chart?
Yes, from what they already have. Upload the floor plan as a PDF or picture and click each block of printed seats, or bring an SVG or DXF drawing. The chart is reviewed in the Designer and published, so a switching organizer keeps selling.
What is the embedded control panel?
It is a live board for one event that you add to your own admin with the SDK, the same way you embed the Designer. Your organizers track every seat in real time (sold, held, free and blocked) and, with the tools you allow, block and release seats, open or close sections, change prices for that event, manage sales channels and open reports. View-only is the default, and your secret key never reaches the browser.
What can be white-labeled?
The organizer Designer and buyer SeatPicker sit inside your product, and white-label presentation is included with any credit pack: the badge is removed automatically after your first purchase, with no add-on and no approval. Your platform remains the surrounding experience and owns the customer relationship.
How do SeatLayer holds work with our checkout?
SeatPicker gives your application a hold ID. Your trusted server reads the current hold status, mode, expiry, and server-authoritative line items before taking payment, then confirms the seats with a stable booking reference.
Can we test the integration before going live?
Yes. Test keys let you create sandbox events, holds, bookings, and webhooks with no sold-seat credit usage. Switch to live keys only when your workflow is ready.

Bring us your tenancy model.

Try the released buyer flow, then bring us your tenancy, checkout, or migration questions when an architecture conversation is useful.