Build on the TicketTrails API
One versioned contract for events, orders, tickets, payments, NFC, and analytics. Every response uses the same JSON envelope, every write declares the scope it needs, and the OpenAPI 3.1 spec is served straight from this app.
Base URL
/api/v1 (this origin)
Format
JSON request / response
Auth
Bearer API key
Endpoints
28 documented
Three steps to your first call
- 1.Create a key on the API keys page. Choose a tier and tick only the scopes you need.
- 2.Send it as
Authorization: Bearer tt_live_.... Keys prefixedtt_test_run against sandbox payment providers. - 3.Start with
GET /api/v1/eventsand readdata.itemsout of the envelope.
Response shape
{ data, error, meta: { requestId, timestamp, pagination } }
data is null on failure and error is null on success. Never both.
Before you go live
- Keep secret keys server-side. A browser or mobile bundle should never hold one.
- Send an
Idempotency-Keyon order, payment, top-up, scan, and check-in writes. It must be a UUID. - Log
X-Request-Idfrom every response. It is the only handle support has on a request. - Back off on
RATE_LIMITEDusing theRetry-Afterheader.
curl -X GET "/api/v1/events?when=upcoming&limit=20" \
-H "Authorization: Bearer tt_live_YOUR_KEY" \
-H "Accept: application/json"The same call in four languages
There is no official SDK. The API is plain HTTPS and JSON, so any HTTP client works.
curl -X GET "/api/v1/events?when=upcoming&limit=20" \
-H "Authorization: Bearer tt_live_YOUR_KEY" \
-H "Accept: application/json"Resources
OpenAPI 3.1 specification
The machine-readable contract served from this app. Use it to generate a client.
Fetch the spec
API portal
Pricing, entitlements, and a guided tour of the platform API.
Open API portal
NFC API docs
Device, transaction, and top-up workflows in more depth.
Open NFC docs
API keys
Create keys, pick scopes, and set a per-key rate limit below your tier.
Manage keys
Liveness probe
Confirms the process is up. Touches no dependencies.
Check health
Readiness probe
Confirms the database is reachable and the process can serve traffic.
Check readiness
Stuck on an integration?
Send us the X-Request-Id from the failing response and we can trace it server-side.