Build ticketing
into anything.
A complete REST API, real-time signed webhooks, scoped keys and an MCP server. Everything the tickts dashboard does, your code can do too — with zero per-ticket API fees.
# Introspect your key: who am I, which scopes, what rate limit? curl https://tickts.co.uk/api/v1/me \ -H "X-Api-Key: sk_live_your_key" # → { "organiser": "Bar Sport Cannock", # "scopes": ["events:read","orders:read"], # "rate_limit": "600/min" }
Live in three steps
No sales call, no waiting list. Generate a key from your dashboard and make your first call in under a minute.
Generate a key
In your dashboard go to Developers and create a key. Pick exactly the scopes it needs — keys are least-privilege by default and fail closed.
Authenticate
Send it as X-Api-Key or a Bearer token on every request to /api/v1. All traffic is HTTPS only.
Build
List events, issue tickets, pull attendees, subscribe to webhooks. Full interactive docs in the API reference.
The whole platform, programmable
32 endpoints across events, orders, attendees, payouts and more — the same engine that powers tickts.co.uk.
Events & ticket types
Create, update, publish, cancel events and manage ticket types, tiers, prices and capacity.
GET · POST · PUT /eventsOrders & refunds
List and inspect orders, issue full or partial refunds, resend or cancel individual tickets.
GET /orders · POST /orders/{id}/refundAttendees & check-in
Pull the live attendee roster, validate and scan tickets at the door from your own app.
GET /events/{id}/attendees · POST /tickets/scanComps & guest lists
Issue complimentary tickets programmatically — perfect for guest lists and integrations.
POST /events/{id}/ticketsSeason passes
Read season passes and multi-day memberships attached to an event.
GET /events/{id}/season-passesPayouts & analytics
List Stripe settlements and your balance, and pull sales analytics — data most platforms never expose.
GET /payouts · GET /analytics/summaryVenues & seating
Manage venues, seating layouts, live availability and seat holds for reserved events.
GET /venues · POST /seating/holdPromos & discounts
Create and manage discount codes and promotions from your own tooling.
GET · POST /promosFixtures in bulk
Bulk-create a whole season of fixtures in one call — built for clubs.
POST /fixtures/bulkScoped keys, least privilege
Every key carries an explicit whitelist of scopes and grants nothing beyond them (a key with no scopes can do nothing — it fails closed). Send it as X-Api-Key or an Authorization: Bearer header.
events:readRead eventsevents:writeCreate & update eventsorders:readRead ordersorders:writeRefund ordersscanValidate & scan tickets (legacy umbrella)tickets:readValidate ticket codes (read-only)tickets:scanScan tickets (records entry)venues:readRead venuesvenues:writeCreate venuesfans:readRead fan / customer dataanalytics:readRead analyticspromos:readRead promo codespromos:writeCreate promo codeswebhooks:readList webhook subscriptionswebhooks:writeCreate & delete webhook subscriptionspayouts:readRead payout / settlement history & balanceReal-time, signed, retried
Subscribe an endpoint through the API and tickts pushes events to you the moment they happen — no polling. Every payload is signed with X-Tickts-Signature (HMAC-SHA256) so you can verify it's genuinely from us, and deliveries are queued and retried.
curl -X POST https://tickts.co.uk/api/v1/webhooks \ -H "X-Api-Key: sk_live_your_key" \ -d '{ "url": "https://you.com/hook", "events": ["order.created"] }'
Copy, paste, ship
Issue a complimentary ticket to a guest list — in whatever you build with.
curl -X POST https://tickts.co.uk/api/v1/events/759/tickets \ -H "X-Api-Key: sk_live_your_key" \ -H "Content-Type: application/json" \ -d '{ "ticket_type": "GA", "quantity": 2, "name": "Guest List", "email": "[email protected]" }'
$res = Http::withHeaders(['X-Api-Key' => 'sk_live_your_key']) ->post('https://tickts.co.uk/api/v1/events/759/tickets', [ 'ticket_type' => 'GA', 'quantity' => 2, 'email' => '[email protected]', ]);
import requests requests.post( "https://tickts.co.uk/api/v1/events/759/tickets", headers={"X-Api-Key": "sk_live_your_key"}, json={"ticket_type": "GA", "quantity": 2, "email": "[email protected]"}, )
await fetch("https://tickts.co.uk/api/v1/events/759/tickets", { method: "POST", headers: { "X-Api-Key": "sk_live_your_key", "Content-Type": "application/json" }, body: JSON.stringify({ ticket_type: "GA", quantity: 2, email: "[email protected]" }), });
Connect an AI assistant with MCP
tickts ships a Model Context Protocol server, so assistants like Claude and Cursor can operate your box office directly — check sales, issue comps, answer "how did Friday do?" — using your own scoped key. Your API is ready for the agentic web out of the box.
Endpoint: https://tickts.co.uk/api/mcp
Details that matter
Versioned (/api/v1), HTTPS-only, rate-limited with clear headers, consistent JSON errors, cursor pagination, and a machine-readable OpenAPI 3.0.3 spec you can generate a client from. Designed with developers (like us) in mind.
Ready when you are.
Generate a scoped key and make your first call in the next minute. No fees, no gatekeeping.