Skip to main content

Webhooks

Overview

Webhooks provide near real-time notifications for events related to assignments and cases.

Endpoint Summary

MethodRoutePurpose
GET/v2.3/webhooks/endpointsList webhook endpoints
POST/v2.3/webhooks/endpointsCreate webhook endpoint
GET/v2.3/webhooks/endpoints/{webhookId}Get webhook endpoint
PATCH/v2.3/webhooks/endpoints/{webhookId}Update webhook endpoint
DELETE/v2.3/webhooks/endpoints/{webhookId}Delete webhook endpoint

GET /v2.3/webhooks/endpoints

Return webhook endpoints configured for the tenant.

Headers

HeaderRequiredValue
AuthorizationYesBearer {{ACCESS_TOKEN}}
AcceptYesapplication/json

Example Request

curl -X GET "{{BASE_URL}}/v2.3/webhooks/endpoints" \
-H "Authorization: Bearer {{ACCESS_TOKEN}}" \
-H "Accept: application/json"

Success Response (200)

{
"data": [
{
"id": "wh_01J1C6ZGQ6FQTH2X6M2VS3P0XW",
"url": "https://partner.example.com/webhooks/xpath",
"description": "Partner production endpoint",
"events": ["cases.*", "assignments.*"],
"status": "active",
"created_at": "2026-04-29T09:10:00Z",
"updated_at": "2026-04-29T09:10:00Z"
}
]
}

POST /v2.3/webhooks/endpoints

Create a webhook endpoint.

Headers

HeaderRequiredValue
AuthorizationYesBearer {{ACCESS_TOKEN}}
Content-TypeYesapplication/json
AcceptYesapplication/json

Request Body Fields

FieldTypeRequiredDescription
urlstringYesDestination URL for webhook deliveries.
eventsarray<string>YesEvent types subscribed by this endpoint.
descriptionstringNoEndpoint label/description.
statusstringNoInitial status (active/paused).

Example Request

curl -X POST "{{BASE_URL}}/v2.3/webhooks/endpoints" \
-H "Authorization: Bearer {{ACCESS_TOKEN}}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"url": "https://partner.example.com/webhooks/xpath",
"events": ["cases.*", "assignments.*"],
"description": "Partner production endpoint"
}'

Success Response (201)

{
"data": {
"id": "wh_01J1C6ZGQ6FQTH2X6M2VS3P0XW",
"url": "https://partner.example.com/webhooks/xpath",
"description": "Partner production endpoint",
"events": ["cases.*", "assignments.*"],
"status": "active",
"secret": "whsec_...",
"created_at": "2026-04-29T09:10:00Z",
"updated_at": "2026-04-29T09:10:00Z"
}
}

GET /v2.3/webhooks/endpoints/{webhookId}

Return one webhook endpoint.

Headers

HeaderRequiredValue
AuthorizationYesBearer {{ACCESS_TOKEN}}
AcceptYesapplication/json

Path Parameters

ParameterTypeRequiredDescription
webhookIdstringYesWebhook endpoint identifier.

Example Request

curl -X GET "{{BASE_URL}}/v2.3/webhooks/endpoints/{{WEBHOOK_ID}}" \
-H "Authorization: Bearer {{ACCESS_TOKEN}}" \
-H "Accept: application/json"

Success Response (200)

{
"data": {
"id": "wh_01J1C6ZGQ6FQTH2X6M2VS3P0XW",
"url": "https://partner.example.com/webhooks/xpath",
"description": "Partner production endpoint",
"events": ["cases.*", "assignments.*"],
"status": "active",
"created_at": "2026-04-29T09:10:00Z",
"updated_at": "2026-04-29T09:10:00Z"
}
}

PATCH /v2.3/webhooks/endpoints/{webhookId}

Update endpoint URL, status, metadata, or subscribed events.

Headers

HeaderRequiredValue
AuthorizationYesBearer {{ACCESS_TOKEN}}
Content-TypeYesapplication/json
AcceptYesapplication/json

Path Parameters

ParameterTypeRequiredDescription
webhookIdstringYesWebhook endpoint identifier.

Request Body Fields

FieldTypeRequiredDescription
urlstringNoDestination URL.
eventsarray<string>NoEvent types subscribed by this endpoint.
descriptionstringNoEndpoint label/description.
statusstringNoEndpoint status (active/paused).

Example Request

curl -X PATCH "{{BASE_URL}}/v2.3/webhooks/endpoints/{{WEBHOOK_ID}}" \
-H "Authorization: Bearer {{ACCESS_TOKEN}}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"status": "paused",
"events": ["cases.*"]
}'

Success Response (200)

{
"data": {
"id": "wh_01J1C6ZGQ6FQTH2X6M2VS3P0XW",
"url": "https://partner.example.com/webhooks/xpath",
"description": "Partner production endpoint",
"events": ["cases.*"],
"status": "paused",
"created_at": "2026-04-29T09:10:00Z",
"updated_at": "2026-04-29T09:30:00Z"
}
}

DELETE /v2.3/webhooks/endpoints/{webhookId}

Delete a webhook endpoint.

Headers

HeaderRequiredValue
AuthorizationYesBearer {{ACCESS_TOKEN}}
AcceptYesapplication/json

Path Parameters

ParameterTypeRequiredDescription
webhookIdstringYesWebhook endpoint identifier.

Example Request

curl -X DELETE "{{BASE_URL}}/v2.3/webhooks/endpoints/{{WEBHOOK_ID}}" \
-H "Authorization: Bearer {{ACCESS_TOKEN}}" \
-H "Accept: application/json"

Success Response (204)

{
"deleted": true
}

Event Types

  • cases.*
  • cases.created
  • cases.updated
  • cases.closed
  • cases.archived
  • cases.unarchived
  • cases.tasks.*
  • cases.expenses.*
  • assignments.*
  • assignments.created
  • assignments.updated
  • assignments.status.updated
  • assignments.archived
  • assignments.unarchived
  • assignments.extensions.created
  • assignments.contacts.*
  • assignments.billing-details.*

Delivery

  • Endpoints should return 2xx to acknowledge delivery.
  • Non-2xx responses are retried.
  • Use the endpoint secret to verify signatures.