Skip to main content
All paths live under $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.json is the OpenAPI 3.1 spec (generate a client from it), and $BASE/docs serves 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 pending when created over the API — unlike a console operator, the API is not an admission decision. Approve explicitly.
  • Full ticket412 (or the registration lands waitlisted if the ticket allows it).
  • Repeat email200 with "created": false and the existing registration — never a duplicate, never an error.
  • Approve/reject only move pending rows; anything else answers 412.
  • 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 answer 429 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.

Quickstart

The reference, exercised end to end.

Orders

What the read-only orders you see actually are.