GET /bookings. They’re a Pro feature: deliveries go out while the Tikk account is on Pro.
Set up a webhook
You create webhooks through the API withPOST /webhooks. The credential needs webhooks.write and bookings.read, because every delivery carries the full booking.
Events
A paid booking is only confirmed once it’s paid. If the payment fails, you
receive
booking.cancelled for a booking you never saw confirmed. Group
sessions send one event per booked seat.Payload
Each delivery is aPOST with a JSON body. data.booking has the same shape as GET /bookings/{id}, as it was at the moment of the event.
previous_scheduled_at is only included on booking.rescheduled.
Every delivery carries these headers:
Verify the signature
Every delivery has aTikk-Signature header:
t is when Tikk sent the request. v1 is an HMAC-SHA256 of t, a dot and the raw request body, signed with your webhook secret. To check a delivery, compute the same HMAC and compare it to v1. Then reject requests older than a few minutes, so a captured request can’t be replayed.
Your secret is the signing_secret returned by POST /webhooks if you use an API key, or your app’s webhook signing secret from the developer portal if you’re a partner app.
v1 for the old and the new secret for 24 hours, which is why the examples accept any matching v1.
Respond and retry
- Answer with any
2xxwithin 10 seconds. Do slow work after you respond. 408,429,5xx, timeouts and connection errors are retried: after 1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours and 12 hours.- Any other response is final for that event. Answering
410 Gonealso switches the webhook off. - Redirects are not followed. Use the final URL.
Tikk-Webhook-Id, order by created_at, and fetch GET /bookings/{id} when you need the current state.
After 5 events in a row fail for good, the webhook is switched off and the account owner is emailed. Fix your endpoint, then switch it back on with PATCH /webhooks/{id} and {"active": true}, which also clears the failure count.
URL rules
The URL must use HTTPS and resolve only to public addresses. Tikk refuses:- private, loopback, link-local and other reserved IP ranges, in IPv4 and IPv6
- hostnames like
localhostor*.internal, and Tikk’s own domains - URLs with a username, password or fragment
Plans
Webhooks need Pro on the Tikk account they belong to. On Free, the webhook endpoints returnplan_required. If the account downgrades, its webhooks pause: nothing is sent and nothing is deleted. Deliveries resume after an upgrade, but events from the paused period aren’t replayed.