Skip to content

How the endpoint has done over 7, 30 or 90 days

GET
/v1/webhooks/subscriptions/{id}/health
curl --request GET \
--url 'https://api.threadkite.app/v1/webhooks/subscriptions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/health?days=7' \
--header 'Authorization: Bearer <token>'

Attempts, how many your endpoint accepted, how long it took, the deliveries that gave up and the last error, by day. Kept 90 days.

id
required
string format: uuid
days
integer
default: 7
Allowed values: 7 30 90
Media typeapplication/json
object
days
required
integer
>= -9007199254740991 <= 9007199254740991
attempts
required
integer
>= -9007199254740991 <= 9007199254740991
accepted
required
integer
>= -9007199254740991 <= 9007199254740991
gaveUp
required
integer
>= -9007199254740991 <= 9007199254740991
successRate
required

Accepted attempts out of all attempts (0 to 1); null with none

number
nullable
averageMs
required
integer
nullable >= -9007199254740991 <= 9007199254740991
slowestMs
required
integer
nullable >= -9007199254740991 <= 9007199254740991
lastError
required
string
nullable
lastErrorAt
required
string format: date-time
nullable
byDay
required

Oldest first; days with none left out

Array<object>
object
day
required
string format: date
attempts
required
integer
>= -9007199254740991 <= 9007199254740991
accepted
required
integer
>= -9007199254740991 <= 9007199254740991
gaveUp
required

Deliveries that gave up after every attempt

integer
>= -9007199254740991 <= 9007199254740991
averageMs
required
integer
nullable >= -9007199254740991 <= 9007199254740991
failing
required

A partner app: the installations with deliveries that gave up, worst first

Array<object>
object
installationId
required
string format: uuid
organisationId
required
string format: uuid
organisationName
required
string
gaveUp
required
integer
>= -9007199254740991 <= 9007199254740991
lastError
required
string
nullable

Example

{
"byDay": [
{
"day": "2026-10-19"
}
]
}

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