AuralisDocs
OperationsWebhooks

Receive a ticket event from another helpdesk

Land a ticket event pushed by Zendesk, Freshdesk or Intercom.

/v1/webhooks/{provider}/{integration_id}No credential
Operation id
receive_webhook
Access
Public by design. No credential is required or consulted.
POST/v1/webhooks/{provider}/{integration_id}

Land a ticket event pushed by Zendesk, Freshdesk or Intercom.

Configure this URL in the other helpdesk. provider is zendesk, freshdesk or intercom, and integration_id is the connection's id from this workspace. Any other provider name is 404.

The URL itself is a secret, because integration_id is what selects the workspace. Treat it as a credential and do not put it anywhere public.

Configure a signing secret on the connection as well. When one is set, the provider's signature is verified and a mismatch is refused with 401. When none is set the request is accepted and logged loudly, and a deployment can be configured to refuse unsigned webhooks outright.

The body is the provider's own JSON. The three shapes are read into one internal event, and partial payloads are tolerated on purpose: a missing customer address or an empty message body still lands the record rather than dropping the event.

Two success shapes, both 200. status: "ok" means an event was recorded and carries the id it was recorded as. status: "ignored" means the payload was valid but was not a ticket event, so nothing was written. Neither is an error and neither should be retried.

A 429 means come back later, with Retry-After in seconds. Nothing was written and the same delivery replayed afterwards is accepted, so a client that gives up on 429 turns a deferral into a lost ticket.

Access: no credential.

Path Parameters

provider*Provider
integration_id*Integration Id
Formatuuid

Header Parameters

Content-Type?|
Default"application/json"

Request Body

application/json

The provider's own ticket payload, read as sent. The example is the Zendesk shape.

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/webhooks/string/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{    "ticket": {      "id": 40218,      "subject": "Card declined on renewal",      "status": "open",      "priority": "high",      "requester": {        "name": "Sam Okafor",        "email": "sam.okafor@northwind.example"      },      "latest_comment": {        "body": "My card was declined but I was still charged.",        "via_channel": "user",        "author_role": "end-user"      }    }  }'

{  "status": "ok",  "transcript_id": "7c4b1f90-2a63-4e85-9d17-3f0a6b2c8e51",  "external_ticket_id": "40218"}