Bookitive
Developers

Partner API

Server-side access with two credential types — read-only API keys for your systems and scan-only device credentials for gates — with rate limits and IP controls.

Not verified yet

The partner API is for your servers, not browsers: pull your events, orders, and tickets into a dashboard or CRM, or let turnstile hardware validate tickets. It lives at https://api.bookitive.com/partner/v1, with an interactive reference at …/partner/v1/docs.

Two credential classes, dispatched by the secret's prefix:

API keys (bk_live_…) — read-only

Created under Settings → API keys. A key is read-only across your organization and can call:

  • /organization,
  • /events, /events/{eventId}, /events/{eventId}/tickets,
  • /orders, /orders/{orderId}.

Rate limit: 120 requests/minute per key. The full secret is shown once at creation — store it server-side; Bookitive keeps only a hash and a short fingerprint for the UI. Owners and admins are emailed when a key is created, because a new read-all credential is a security event.

curl https://api.bookitive.com/partner/v1/events \
  -H "Authorization: Bearer bk_live_…"

Scanner devices (bk_scan_…) — scan-only

Created under Settings → API keys too (the scanner devices card), and documented from the door's perspective in Scanner devices. A device credential can do exactly one thing:

  • POST /events/{eventId}/scan — submit a scanned code, get a verdict.

No read access at all — a compromised gate can't leak your attendee list. Rate limit: 240 requests/minute per device, and an optional CIDR allowlist so the secret only works from the gate's own network.

Security model

  • Never put a partner key in a browser — it reads across your whole organization. The widget and JS client exist precisely so front-end code uses the credential-free public API instead.
  • Authentication failures return an opaque 401 — the message differs only by credential type ("invalid or revoked API key" vs the device credential wording), never revealing whether a given key exists.
  • Revoking either credential cuts it off immediately.

Page sizes are clamped, not rejected — ask for more than the maximum and you get the maximum, not an error. Paginate with the cursor the responses return rather than assuming you got everything in one call.

On this page