Change, turn on or turn off a rule
const url = 'https://api.threadkite.app/v1/rules/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"example","enabled":true,"conditions":{"sourceIds":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"],"locationIds":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"],"channels":["email"]},"action":{"type":"assign_user","userId":"example","userIds":["example"],"savedReplyId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","appliesTo":"leads"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.threadkite.app/v1/rules/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example", "enabled": true, "conditions": { "sourceIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "locationIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "channels": [ "email" ] }, "action": { "type": "assign_user", "userId": "example", "userIds": [ "example" ], "savedReplyId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "appliesTo": "leads" } }'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
object
object
assign_user only
round_robin only
auto_reply only: a shared saved reply
auto_reply only: leads (when left out) or all
Responses
Section titled “Responses”object
The inbox whose new threads it handles
Rules are checked in this order, lowest first
The fallback: used when no other rule picks anyone, whatever its conditions (set it with PUT /v1/rules/fallback)
object
Only leads from these sources (empty: any source)
Only threads at these locations (empty: every location)
Only messages on these channels (empty: any channel)
object
assign_user: a named person; round_robin: the next person in turn (the inbox’s members with a Full seat when userIds is empty); auto_reply: send a saved reply out of hours
assign_user: who gets the thread
round_robin: the people taking turns (empty: the inbox’s members with a Full seat)
auto_reply: the shared saved reply sent
auto_reply: new leads only, or every message from a contact
Why the rule may not do what it says now (someone left or has a Basic seat, a location was removed)
Example
{ "name": "Google Ads leads to Sam", "kind": "assignment", "position": 0, "conditions": { "channels": [ "email" ] }, "action": { "type": "assign_user", "appliesTo": "leads" }}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}