Reserved seating infrastructure

Every seat,
sold once.

Seat maps, live holds and a box-office screen for ticketing companies. Your checkout, payments and customers stay yours. SeatPublic makes sure no seat is ever sold twice.

Test keys are free and work straight away, with a sample theatre to try them on.

Demo Theatre676 seats $120$78$45Taken
Pick seats on the map. Other buyers are choosing too.
One step

Holds are taken in a single atomic step, so two buyers can never hold the same seat.

250 ms

Every seat change reaches every open map, four times a second.

50,000 seats

per chart, with no per-seat work while buyers pan and zoom.

40 KB

for the whole seat map, gzipped. No dependencies, no framework.

How it works

From floor plan to sold seat in three calls.

Your server creates the event and confirms the sale. The buyer's browser shows the map and holds the seats. That's the whole integration.

server.js
// Once per event, from your server
const res = await fetch("https://api.seatpublic.com/v1/events", {
  method: "POST",
  headers: { "X-Api-Key": process.env.SEATPUBLIC_SECRET_KEY,
             "Content-Type": "application/json" },
  body: JSON.stringify({ venueId: "demo-theatre",
                         startsAt: "2026-12-01T19:30:00Z" }),
});
const { eventId } = await res.json();   // "ev_8k2…"

Product

Built for everyone who works the room.

Buyers choose seats, not guesses.

Prices come from your event, not the chart, so the map and your checkout always agree. Hover or tap any seat to see exactly what it is.

  • Price, category, row and number on every seat
  • Wheelchair, companion and easy-access seats marked
  • No single empty seat left stranded between bookings
  • Works with a keyboard, a screen reader and pinch zoom

Seat card

Orchestra, row C, seat 6
Premium · centre block · 3 rows from the stage
PremiumAisle$120
4.6 from verified attendees · view-from-seat photos

The box office sees the whole room, live.

Give each staff member a short pass for one event. They block seats for the press or a sound desk, name a hold, move seats between categories and undo, while sales and refunds stay in your system.

  • Every change names who made it
  • Passes expire on their own and can't sell or refund
  • Other staff's changes and buyers' holds appear as they happen

Tonight · Demo Theatre

512Free
14In checkout
141Sold
9Blocked
  • Blocked mezzanine A 1–6 as Presskim
  • Orchestra row D moved to Premiumsam
  • Undid the row D changesam

One chart per venue, kept right by everyone who sells it.

Venue charts are shared between ticketing companies. Changes arrive as reviewed edits and seat ids never change, so events already on sale stay exactly as they were sold.

  • Every edit shows what happens to each seat
  • Ratings and view-from-seat photos from people who sat there
  • Duplicate venues are caught before they're created

Edit · Demo Theatre · version 4 → 5

+ mezzanine row F, seats 1–24
~ orchestra A 1–10 · Standard → Premium
− side-left K 7 · pillar
Approved by the venueEvents on sale keep version 4

What stays yours

SeatPublic does seats. Nothing else.

Checkout and payments

Buyers pay through you. SeatPublic only learns that an order bought these seats.

Customers and tickets

No buyer accounts or emails live here. You issue the tickets and own the relationship.

Prices

You set prices per event. A chart only knows its categories, so one venue can be sold by many companies.

For developers

A small API you can read in an afternoon.

  • Test and live keys, kept apart from the first call
  • Signed webhooks with retries
  • An open JSON chart format with a published schema
  • Any stack: it's HTTP and one script tag
POST/v1/eventsCreate a seated event for a venue
PUT/v1/events/{id}/pricingPrices by category, overrides by seat
GET/v1/events/{id}/availabilityEvery seat that isn't free, with an ETag
POST/v1/events/{id}/holdsHold 1 to 10 seats, all or nothing
POST/v1/events/{id}/confirmSell held seats after payment, safe to retry
POST/v1/webhooksHear about holds, sales and releases

Get test keys in a minute.

Create an account, name your company and copy your keys. The sample theatre is ready for your first test event.