Skip to content

Saved replies: shared ones and your own personal ones

GET
/v1/saved-replies
curl --request GET \
--url https://api.threadkite.app/v1/saved-replies \
--header 'Authorization: Bearer <token>'

Replies shared with the whole organisation or with an inbox you can see, and your personal ones. With inboxId, only those that can be used in that inbox.

inboxId

The inbox (your default inbox when left out)

string format: uuid

The inbox (your default inbox when left out)

Media typeapplication/json
Array<object>
object
id
required
string format: uuid
name
required
string
subject
required
string
nullable
body
required

The plain text (what texts and previews show), with merge fields

string
bodyHtml
required

The reply formatted (bold, lists, links), as HTML with the same merge fields; null when it has no formatting. Email sends it; WhatsApp gets its own formatting from it

string
nullable
locationId
required
string format: uuid
nullable
inboxId
required

A shared reply offered in this inbox only (to the people who can see it); null for the whole organisation or a personal reply

string format: uuid
nullable
visibility
required

personal: only its owner sees it; shared: the whole organisation, or one inbox (inboxId)

string
Allowed values: personal shared
ownerUserId
required

The person a personal reply belongs to (null when shared)

string
nullable
canEdit
required

You can change or delete it

boolean
usedByRules
required

Automations (and old out-of-hours rules still on) that send it; it cannot be deleted or made personal while in use

number
createdAt
required
string format: date-time
updatedAt
required
string format: date-time

Example

[
{
"name": "Still available",
"body": "Hi {{contact.firstName}}, yes, the {{item.title}} is still available.",
"bodyHtml": "<p>Hi {{contact.firstName}}, yes, the <strong>{{item.title}}</strong> is still available.</p>",
"visibility": "personal"
}
]

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"
}
]
}

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"
}
]
}

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
}