API & webhooks
For developers on the Pro plan, Cleartix offers a REST API and webhooks so you can connect ticketing to your own systems.
API keys
Create API keys under Settings to use the Cleartix REST API. With a key you can read your data from your own code or tools — your events, orders and attendees — to power dashboards, sync a CRM or build a custom report.
Webhooks
Rather than polling the API, register webhooks so Cleartix notifies your endpoint when something happens, for example:
- A ticket sold
- An attendee checked in
- An order refunded
When the event occurs, Cleartix sends a request to your URL. Deliveries are signed, so you can verify each one really came from Cleartix, and they're retried if your endpoint is temporarily down — so a brief outage won't lose an event.
Webhook payloads
Every webhook is an HTTP POST whose JSON body uses the same envelope — only event and data change:
{
"id": "evt_3f9a2b7c1d4e5f60",
"event": "ticket.sold",
"created_at": "2026-06-12T14:05:00.000Z",
"organization_id": "org_abc123",
"data": {}
}
Two headers travel with every request:
X-ClearTix-Signature—sha256=followed by the HMAC-SHA256 of the raw request body, keyed with your endpoint's signing secret. Verify it before trusting a payload.X-ClearTix-Event— the event type, e.g.ticket.sold.
The data object depends on the event. Each event below shows an example data and its JSON Schema.
ticket.sold — ticket purchased and paid
{ "orderId": "ord_9f8e7d6c", "ticketCount": 2, "totalAmount": "50.00" }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "ticket.sold · data",
"type": "object",
"additionalProperties": false,
"required": ["orderId", "ticketCount", "totalAmount"],
"properties": {
"orderId": { "type": "string" },
"ticketCount": { "type": "integer", "minimum": 0 },
"totalAmount": { "type": "string", "description": "Decimal total as a string, e.g. \"50.00\" (\"0\" for free orders)" }
}
}
ticket.checked_in — attendee checked in at the event
{ "ticketId": "tkt_1a2b3c4d", "eventId": "ev_5e6f7a8b", "checkedInAt": "2026-06-12T14:05:00.000Z" }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "ticket.checked_in · data",
"type": "object",
"additionalProperties": false,
"required": ["ticketId", "eventId", "checkedInAt"],
"properties": {
"ticketId": { "type": "string" },
"eventId": { "type": "string" },
"checkedInAt": { "type": "string", "format": "date-time" }
}
}
ticket.refunded — ticket refunded
{ "orderId": "ord_9f8e7d6c", "refundRef": "re_4d3c2b1a", "refundAmount": 2500 }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "ticket.refunded · data",
"type": "object",
"additionalProperties": false,
"required": ["orderId", "refundRef", "refundAmount"],
"properties": {
"orderId": { "type": "string" },
"refundRef": { "type": "string", "description": "Provider refund reference" },
"refundAmount": { "type": "integer", "description": "Refunded amount in cents" }
}
}
order.created — order confirmed (including free orders)
{ "orderId": "ord_9f8e7d6c", "status": "paid" }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "order.created · data",
"type": "object",
"additionalProperties": false,
"required": ["orderId", "status"],
"properties": {
"orderId": { "type": "string" },
"status": { "type": "string", "enum": ["paid"] }
}
}
event.published — event published and live
{ "eventId": "ev_5e6f7a8b", "eventName": "Summer Yoga Retreat", "startAt": "2026-07-01T09:00:00.000Z" }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "event.published · data",
"type": "object",
"additionalProperties": false,
"required": ["eventId", "eventName", "startAt"],
"properties": {
"eventId": { "type": "string" },
"eventName": { "type": "string" },
"startAt": { "type": "string", "format": "date-time" }
}
}
Keep keys safe
An API key acts on behalf of your organisation, so treat it like a password:
- Never commit it to source control or share it publicly.
- Use a separate key per integration where you can.
- Rotate a key immediately if it leaks, and delete keys you no longer use.
Note: API access and webhooks are a Pro feature. Always verify the webhook signature before trusting a payload — it's how you tell genuine Cleartix calls from anything else hitting your endpoint.
Last updated: June 12, 2026