$BASE/v1 and require Authorization: Bearer <secret>. This page is the map; the territory lives in two places:
- The Endpoints group in this tab documents every operation individually — full request and response schemas, field by field, with a Try it playground you can call with your own key.
- The API also describes itself:
GET $BASE/openapi.jsonis the OpenAPI 3.1 spec (generate a client from it), and$BASE/docsserves the same interactive reference straight from your deployment.
Events
Console rules apply unchanged: publishing needs a start time (
400); the currency locks once the event has taken an order (412); moving the start date clears the agenda — the first attempt answers 412, restate with "confirmAgendaReset": true to confirm.
Ticket types
Repricing never rewrites sold orders — amounts on an order are purchase-time snapshots. Perk bindings, registration forms and refund policies are configured in the console, not over the API.
Registrations
Behaviour to design for:
- Approval-mode tickets land
pendingwhen created over the API — unlike a console operator, the API is not an admission decision. Approve explicitly. - Full ticket →
412(or the registration landswaitlistedif the ticket allows it). - Repeat email →
200with"created": falseand the existing registration — never a duplicate, never an error. - Approve/reject only move
pendingrows; anything else answers412. - Every registration carries a
checkinCode(CHK-…) — the badge credential for check-in.
Redemption codes
A custom
code that already exists in the event answers 409.
Add-ons and bundles
Every bundle item must be a real ticket type or add-on of the same event (
400 otherwise).
Orders and checkout
Settlement of paid orders arrives by the platform’s Stripe webhook — poll the order until
paid. Refunds stay a console decision. The whole flow, end to end: Headless checkout.
Check-ins
Only a
confirmed registration can check in (412). A second scan at the same door answers 200 with "alreadyCheckedIn": true.
Program and venues
Attendees
The error envelope
Every error, whatever the status, wears the same shape:Rate limits and retries
Each key may make 120 requests per minute; beyond that, requests answer429 until the window resets. Design your integration to back off on 429 — and lean on the API’s idempotent behaviours (repeat registrations and repeat scans acknowledge rather than fail), which make retrying writes safe.
Related
Quickstart
The reference, exercised end to end.
Orders
What the read-only orders you see actually are.