Skip to content

Add a thread’s contact to an automation

POST
/v1/threads/{id}/flows
curl --request POST \
--url https://api.threadkite.app/v1/threads/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/flows \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "flowId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'

Starts the automation for them now, whatever its trigger, if they match its conditions and have not been through it already (as its re-entry setting says).

id
required
string format: uuid
Media typeapplication/json
object
flowId
required
string format: uuid

Example generated

{
"flowId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}
Media typeapplication/json
object
id
required
string format: uuid
flowId
required
string format: uuid
version
required

The version it is running

number
contact
required
object
id
required
string format: uuid
name
required
string
nullable
threadId
required
string format: uuid
nullable
status
required
string
Allowed values: waiting running finished exited failed
stepId
required

The step it is on or waiting at

string
nullable
stepType
required

That step’s type

string
nullable
nextRunAt
required

When it next moves on (or its wait times out)

string format: date-time
nullable
waitingFor
required

The event it is waiting for

string
nullable
exitReason
required
string
nullable
Allowed values: contact_replied team_replied thread_closed event opted_out erased no_contact wait_timeout step_missing removed
lastError
required

Why it failed

string
nullable
startedAt
required
string format: date-time
finishedAt
required
string format: date-time
nullable

Example

{
"status": "waiting",
"stepType": "wait",
"exitReason": "contact_replied"
}
Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

Missing or invalid API key

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

Automations are part of Pro; Free can switch on only the out-of-hours reply, changing only its wording (code upgrade_required, feature rules)

The organisation is on the Free plan (code upgrade_required)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
feature
required

The feature that needs Pro

string
nullable
Allowed values: extraSeats connections aiAssistant aiReplies rules fullReports api inboxes bulkMessages videoMessages
upgradePath
required

Where to upgrade or pay, in the web app

string

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)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}
Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

Already been through it (already_in_flow), or it is not on (flow_not_live)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

Rate limit reached

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
retryAfter
required

Seconds until another request will be accepted

number

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
}