Webhooks
Overview
Webhooks provide near real-time notifications for events related to assignments and cases.
Endpoint Summary
| Method | Route | Purpose |
|---|---|---|
GET | /v2.3/webhooks/endpoints | List webhook endpoints |
POST | /v2.3/webhooks/endpoints | Create 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
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer {{ACCESS_TOKEN}} |
Accept | Yes | application/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
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer {{ACCESS_TOKEN}} |
Content-Type | Yes | application/json |
Accept | Yes | application/json |
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Destination URL for webhook deliveries. |
events | array<string> | Yes | Event types subscribed by this endpoint. |
description | string | No | Endpoint label/description. |
status | string | No | Initial 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
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer {{ACCESS_TOKEN}} |
Accept | Yes | application/json |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
webhookId | string | Yes | Webhook 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
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer {{ACCESS_TOKEN}} |
Content-Type | Yes | application/json |
Accept | Yes | application/json |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
webhookId | string | Yes | Webhook endpoint identifier. |
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
url | string | No | Destination URL. |
events | array<string> | No | Event types subscribed by this endpoint. |
description | string | No | Endpoint label/description. |
status | string | No | Endpoint 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
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer {{ACCESS_TOKEN}} |
Accept | Yes | application/json |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
webhookId | string | Yes | Webhook 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.createdcases.updatedcases.closedcases.archivedcases.unarchivedcases.tasks.*cases.expenses.*assignments.*assignments.createdassignments.updatedassignments.status.updatedassignments.archivedassignments.unarchivedassignments.extensions.createdassignments.contacts.*assignments.billing-details.*
Delivery
- Endpoints should return
2xxto acknowledge delivery. - Non-
2xxresponses are retried. - Use the endpoint secret to verify signatures.