Ready-made automations
const url = 'https://api.threadkite.app/v1/flow-recipes';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/flow-recipes \ --header 'Authorization: Bearer <token>'Automations to switch on and edit: the out-of-hours reply (on every plan), new lead follow-up, missed appointment follow-up and quiet lead, then your industry pack’s (for car dealers, service-to-sales: finance ending, positive equity, in for a service, MOT due, bought elsewhere). Each has the steps a new automation starts from, and says what data it needs and whether you have it.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”object
Can be switched on with the Free plan
The steps a new automation starts with
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
How long. working counts only opening hours (minutes and hours), or days the location opens (days)
object
object
object
object
object
object
object
object
object
object
How long. working counts only opening hours (minutes and hours), or days the location opens (days)
object
object
object
How long. working counts only opening hours (minutes and hours), or days the location opens (days)
object
object
object
object
object
How long. working counts only opening hours (minutes and hours), or days the location opens (days)
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
The industry pack that adds it; null for everyone’s
What it needs to do anything, and whether you have it yet
object
You have it already
Example
[ { "key": "out_of_hours_reply", "name": "New lead follow-up", "definition": { "version": 1, "trigger": { "type": "event", "conditions": [] }, "conditions": [], "steps": [ { "type": "wait", "wait": { "kind": "duration", "duration": { "unit": "minutes", "working": false } } } ], "exits": { "contactReplied": true, "teamReplied": false, "threadClosed": true, "events": [] }, "reentry": { "kind": "once_per_thread" } }, "pack": "automotive", "needs": [ { "text": "Needs order.paid events from your shop system." } ] }]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" } ]}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}