Webhooks
Register and manage the webhook that receives workflow and account events. For general Admin API information, see the Admin overview. A client may hold one active webhook at a time.
webhook.set
Register the webhook. Enforces a maximum of one active webhook per client. There is no update endpoint – to change the destination, delete the webhook and set a new one.
curl -X POST https://api.linkedapi.io/admin/webhook.set \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here" \
-d '{
"url": "https://example.com/hooks/linkedapi",
"payloadMode": "fat"
}'Body:
url– HTTPS endpoint that will receive deliveries. Required.payloadMode–fat(default) orthin. See payload modes. Optional.
Response:
{
"success": true,
"result": {
"webhook": {
"id": "whs-...",
"url": "https://example.com/hooks/linkedapi",
"payloadMode": "fat",
"isActive": true,
"createdAt": "2026-06-25T12:00:00.000Z"
}
}
}id– webhook identifier, used by the other endpoints.url– the registered destination.payloadMode– current payload mode.isActive– whether the webhook is active.createdAt– ISO 8601 timestamp.
A
urlthat is a bare IP address in a private or internal range is rejected. Deliveries are only ever sent to public addresses.
webhook.get
List the active webhook for this client. Returns an array with at most one entry.
curl -X POST https://api.linkedapi.io/admin/webhook.get \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here"Response:
{
"success": true,
"result": {
"webhooks": [
{
"id": "whs-...",
"url": "https://example.com/hooks/linkedapi",
"payloadMode": "fat",
"isActive": true,
"createdAt": "2026-06-25T12:00:00.000Z"
}
]
}
}webhook.setPayloadMode
Switch the payload mode between fat and thin.
curl -X POST https://api.linkedapi.io/admin/webhook.setPayloadMode \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here" \
-d '{ "id": "whs-...", "payloadMode": "thin" }'Body:
id– webhook identifier. Required.payloadMode–fatorthin. Required.
webhook.delete
Delete the webhook. This is a soft delete: the delivery history is preserved and any still-pending deliveries are dropped. Because only active webhooks count toward the one-per-client limit, you can register a fresh webhook afterwards.
curl -X POST https://api.linkedapi.io/admin/webhook.delete \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here" \
-d '{ "id": "whs-..." }'Body:
id– webhook identifier. Required.
webhook.deliveries
Return the most recent deliveries (newest first) as a debug feed – useful for confirming an endpoint is receiving and acknowledging events.
curl -X POST https://api.linkedapi.io/admin/webhook.deliveries \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here"Response:
{
"success": true,
"result": {
"deliveries": [
{
"id": "whd-...",
"eventType": "workflow.completed",
"eventId": "workflow.completed:wf-...",
"status": "success",
"attempts": 1,
"responseStatusCode": 200,
"lastError": null,
"createdAt": "2026-06-25T12:00:00.000Z",
"updatedAt": "2026-06-25T12:00:01.000Z"
}
]
}
}id– delivery identifier, passed towebhook.replayDelivery.eventType– the eventtypethat was delivered.eventId– the envelopeidof the delivered event.status–pending,delivering,success, orfailed.attempts– delivery attempts made so far.responseStatusCode– HTTP status your endpoint returned on the last attempt, ornull.lastError– error text from the last failed attempt, ornull.createdAt/updatedAt– ISO 8601 timestamps.
webhook.replayDelivery
Re-arm an already-settled (success or failed) delivery for redelivery. The same eventId is reused, so consumer-side deduplication still applies – this is a true redelivery, not a new event.
curl -X POST https://api.linkedapi.io/admin/webhook.replayDelivery \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here" \
-d '{ "deliveryId": "whd-..." }'Body:
deliveryId– delivery identifier fromwebhook.deliveries. Required.
webhook.sendTest
Emit a synthetic webhook.test event to the active webhook through the normal delivery path. Its data carries a single message field. Use it to verify a freshly registered endpoint without waiting for a real event.
curl -X POST https://api.linkedapi.io/admin/webhook.sendTest \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here"