One endpoint
const url = 'https://api.threadkite.app/v1/webhooks/subscriptions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.threadkite.app/v1/webhooks/subscriptions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”object
The events to send: their names, a namespace of them (thread.*), * for everything, event.* for every event your systems send through POST /v1/events, or one of those by name (event.order.paid). Industry packs add their own, sent only for organisations with the pack (Automotive: automotive.contact_item.mot_due, automotive.contact_item.equity_calculated, automotive.contact_item.finance_ending).
Only events in these inboxes, from these lead sources or at these locations. A filter applies only to events that say (a thread’s inbox, a lead’s source, a location); others are sent. Empty sends everything the endpoint asked for.
object
paused by you; disabled by us after every delivery failed for 24 hours (turn it on again with status: active once fixed)
What it is for, in your words
When we switched it off (disabled)
Why we switched it off, in plain words (only while disabled)
While a rolled secret is in its grace period: when the old secret stops signing
object
Deliveries accepted in the last 24 hours
Deliveries that gave up in the last 24 hours
Deliveries still being tried (created in the last 24 hours)
When the newest delivery was created
Example
{ "url": "https://dms.example.co.uk/hooks/threadkite", "status": "active", "disabledReason": "Every delivery failed for 24 hours. The last answer was HTTP 500.", "health": { "delivered": 212, "failed": 1 }}Missing or invalid API key
object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}The organisation is on the Free plan (code upgrade_required)
object
Stable machine-readable reason
The feature that needs Pro
Where to upgrade or pay, in the web app
Example
{ "statusCode": 402, "code": "upgrade_required", "message": "Connections are part of Pro. Upgrade to connect texts, calls and more.", "feature": "extraSeats", "upgradePath": "/settings/billing"}The key does not have the scope (or the person the permission)
object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}Rate limit reached
object
Stable machine-readable reason
Seconds until another request will be accepted
Example
{ "statusCode": 429, "code": "rate_limited", "message": "Too many requests. Each key can make 120 requests a minute; try again in 12 seconds.", "retryAfter": 12}