Pro

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-Signaturesha256= 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:

  1. Never commit it to source control or share it publicly.
  2. Use a separate key per integration where you can.
  3. 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

Ready to get started?

Create a free ClearTix account and sell your first tickets today.

API & webhooks — Help center