Developer docs
Change a webhook endpoint's events
Choose which events a webhook endpoint receives. The address is changed with change_webhook_endpoint_url instead, and the account owner confirms the new one. Only the account owner's API keys and connected apps can change webhooks.
PATCH
https://uetr.ai/api/v1/webhooks/{id}- MCP tool:
update_webhook_endpoint - Access: a key or connection with read and write access
- Only the account owner's keys and connections
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | Yes | The webhook endpoint's id. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
events | array of status_changed, final_state, checks_ended (at least 1 item, at most 3 items) | Yes | status_changed: a transfer's status changed. final_state: a transfer reached a final state, such as credited or returned. checks_ended: automatic checks on a transfer ended before a final state, including when it was archived. A delivered event's type is the name with transfer. in front, for example transfer.status_changed. |
Response
| Field | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | |
url | string | Yes | The address's host and a masked path. The full address is never shown. |
destination | json, slack, teams | Yes | json: signed JSON. slack and teams: a readable message for a Slack or Microsoft Teams incoming webhook. |
events | array of status_changed, final_state, checks_ended | Yes | |
status | pending, active, paused | Yes | pending: waiting for the account owner to confirm it on the website; until then it receives test events only. active: receiving events. paused: deliveries stopped after sustained failures; a test event that succeeds resumes it. |
paused_at | string or null | Yes | |
created_at | string | Yes | |
created_by | website, api | Yes | website: added on the website. api: added by an API key or a connected app. |
api_version | string | Yes |
Example
curl -X PATCH "https://uetr.ai/api/v1/webhooks/3b1f8c2e-6a4d-4f5e-9c7b-2d8e1a0f4b6c" \
-H "Authorization: Bearer $UETR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"events":["final_state"]}'The answer:
{
"id": "3b1f8c2e-6a4d-4f5e-9c7b-2d8e1a0f4b6c",
"url": "hooks.slack.com/services/••••",
"destination": "slack",
"events": [
"final_state"
],
"status": "active",
"paused_at": null,
"created_at": "2026-10-14T09:35:00.000Z",
"created_by": "api",
"api_version": "2026-10-14"
}Refusals
Besides the access refusals every call can meet, this call can answer:
read_only_credential(403): Read-only key or connection.machine_writes_disabled(503): Changes are switched off.request_too_large(413): Request too large.not_permitted(403): Not permitted.not_found(404): Not found.