Try an automation with a contact
const url = 'https://api.threadkite.app/v1/flows/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/test';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"threadId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","contactId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","definition":{"version":1,"trigger":{"type":"event","events":["example"],"conditions":[]},"conditions":[],"steps":[{"id":"example","type":"wait","wait":{"kind":"duration","duration":{"amount":1,"unit":"minutes","working":false}}}],"exits":{"contactReplied":true,"teamReplied":false,"threadClosed":true,"events":[]},"reentry":{"kind":"once_per_thread"}}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.threadkite.app/v1/flows/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/test \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "threadId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "contactId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "definition": { "version": 1, "trigger": { "type": "event", "events": [ "example" ], "conditions": [] }, "conditions": [], "steps": [ { "id": "example", "type": "wait", "wait": { "kind": "duration", "duration": { "amount": 1, "unit": "minutes", "working": false } } } ], "exits": { "contactReplied": true, "teamReplied": false, "threadClosed": true, "events": [] }, "reentry": { "kind": "once_per_thread" } } }'What would happen to this thread’s contact, and when, if they started now and nothing else happened (no replies; awaited events never come). Uses the draft if there is one. Nothing is sent or changed.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
Try it with this thread (and its contact)
Or with this contact (their latest thread)
Try these steps (else the draft, else the live version)
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
Responses
Section titled “Responses”object
They match the trigger’s and the flow’s conditions
Why they would not start
Where they would end up
object
When it would happen
As in a run’s log: a channel, a reason, a time
The words that would be sent, with merge fields filled in
Example
{ "status": "waiting", "exitReason": "contact_replied", "steps": [ { "stepType": "send", "outcome": "started", "detail": "Email" } ]}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" } ]}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}