$BASE/v1 and require Authorization: Bearer <secret>. This page is the map. Detail lives in two places:
- The Endpoints group in this tab documents every operation — full request and response schemas, field by field, with a Try it playground that accepts a 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 from the deployment.
This page covers the secret-key Developer API. The browser-facing Storefront API has its own reference: the Storefront endpoints group in this tab,
GET $BASE/storefront/openapi.json, and $BASE/storefront/docs.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 returns 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 returns412. - Every registration carries a
checkinCode(CHK-…) — the badge credential for check-in — and apassUrl, the hosted entry-pass page (QR, wallet passes, certificate, surveys) that asks the person for their email before opening.
Redemption codes
A custom
code that already exists in the event returns 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: Checkout from your backend.
Check-ins
Only a
confirmed registration can check in (412). A second scan at the same door returns 200 with "alreadyCheckedIn": true.
Program and venues
Attendees
Exhibitors
Read-only by design: confirming a company, editing the roster and allocating booths are console decisions. The
registrationId filter returns the company that registration staffs — for example after a badge scan resolved to a registration.
The error envelope
Every error, whatever the status, uses the same shape:Rate limits and retries
Each key may make 120 requests per minute. Beyond that, requests return429 until the window resets. Back off on 429. Repeat registrations and repeat scans acknowledge rather than fail, so retrying writes is safe.
Related
Quickstart
The same flow, end to end.
Orders
How those orders appear in the console.