Skip to content

Send a test event

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

A webhook_subscription.tested ping, or with event a sample of that event marked test: true (for example lead.created), sent even when the endpoint is paused or did not ask for that event, so you can check it. An event an industry pack adds has a sample only for organisations with that pack (otherwise 400 event_not_available). Test leads sent from Lead sources never reach webhooks; use this instead.

id
required
string format: uuid
Media typeapplication/json
object
event
Any of:
string
Allowed values: lead.created thread.created thread.updated thread.assigned thread.closed thread.reopened chapter.started chapter.updated thread.snoozed thread.handed_over message.received message.sent message.note_added message.status_changed contact.created contact.updated contact.merged contact.consent_changed contact.erased import.created import.undone thread.imported company.created company.updated company.merged company.deleted contact_item.bought_elsewhere task.created task.completed task.assigned member.joined member.updated member.removed app_installation.created app_installation.updated app_installation.removed appointment.booked appointment.updated appointment.cancelled sale.recorded sale.removed record.created record.updated record.deleted action_run.completed video.watched call.started call.answered call.ended call.recording_added call.recording_paused call.recording_resumed call.transcribed phone_number.bought phone_number.released phone_number_registration.updated flow_run.finished flow_run.exited automotive.contact_item.mot_due automotive.contact_item.equity_calculated automotive.contact_item.finance_ending
Media typeapplication/json
object
deliveryId
required

The new delivery; follow it in the delivery log

string format: uuid

Example generated

{
"deliveryId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}

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
}