Skip to content

One delivery, with the body we sent and what your endpoint answered

GET
/v1/webhooks/subscriptions/{id}/deliveries/{deliveryId}
curl --request GET \
--url https://api.threadkite.app/v1/webhooks/subscriptions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/deliveries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Authorization: Bearer <token>'
id
required
string format: uuid
deliveryId
required
string format: uuid
Media typeapplication/json
object
id
required

Also sent as Threadkite-Delivery and Idempotency-Key

string format: uuid
event
required

The event it carried, webhook_subscription.tested for a test, or event.<name>

string
status
required
string
Allowed values: pending delivered failed
attempts
required

Attempts made so far

number
responseCode
required

HTTP status of the last attempt

number
nullable
createdAt
required
string format: date-time
deliveredAt
required
string format: date-time
nullable
nextAttemptAt
required

When the next attempt is due, if retrying

string format: date-time
nullable
requestBody
required

The JSON body we send (identical on every attempt)

string
responseBody
required

What your endpoint answered on the last attempt (first 2,048 characters)

string
nullable
tries
required

Every attempt, oldest first (kept 7 days, with the delivery)

Array<object>
object
attempt
required
integer
>= -9007199254740991 <= 9007199254740991
at
required
string format: date-time
durationMs
required

How long your endpoint took to answer

integer
>= -9007199254740991 <= 9007199254740991
responseCode
required

Null when no answer arrived

integer
nullable >= -9007199254740991 <= 9007199254740991
error
required

What went wrong, when it was not accepted

string
nullable
responseExcerpt
required

The start of what your endpoint answered (500 characters)

string
nullable
outcome
required
string
Allowed values: delivered retrying failed

Example

{
"event": "lead.created",
"status": "pending",
"requestBody": "{\"id\":\"…\",\"event\":\"lead.created\",\"createdAt\":\"…\",\"organisationId\":\"…\",\"data\":{}}",
"tries": [
{
"error": "HTTP 503",
"outcome": "delivered"
}
]
}

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
}