> The full uetr.ai documentation index is at https://uetr.ai/llms.txt, and every page under https://uetr.ai/docs/api is also Markdown at its address plus `.md`.

# Send a test event

Queue one test event to a webhook endpoint, about a sample transfer and never one of the account's own. It is sent within about a minute; read the endpoint's deliveries to see the receiver's answer. Pending endpoints can receive test events. Only the account owner's API keys and connected apps can send tests.

`POST https://uetr.ai/api/v1/webhooks/{id}/test`

- MCP tool: `send_webhook_test`
- 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. |

## Response

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `delivery` | object | Yes |  |
| `delivery.id` | string (uuid) | Yes |  |
| `delivery.event_id` | string (uuid) | Yes | The webhook-id header the receiver saw. |
| `delivery.event_type` | `status_changed`, `final_state`, `checks_ended`, `test` | Yes |  |
| `delivery.status` | `pending`, `delivered`, `failed`, `dropped` | Yes | pending: waiting to be sent or retried. delivered: the receiver answered with a 2xx status. failed: every attempt failed; a test event is tried once and never retried. dropped: removed before sending, for example after an address change. |
| `delivery.attempts` | integer | Yes |  |
| `delivery.last_status_code` | integer or null | Yes | The receiver's last HTTP status code, or null if it never answered. |
| `delivery.last_attempt_at` | string or null | Yes |  |
| `delivery.created_at` | string | Yes |  |

## Example

```sh
curl -X POST "https://uetr.ai/api/v1/webhooks/3b1f8c2e-6a4d-4f5e-9c7b-2d8e1a0f4b6c/test" \
  -H "Authorization: Bearer $UETR_API_KEY"
```

The answer:

```json
{
  "delivery": {
    "id": "5d9b3f7a-2e6c-4a1d-8f4b-7c0e3a6d9b2f",
    "event_id": "a1c3e5f7-9b2d-4f6a-8c0e-2b4d6f8a0c3e",
    "event_type": "test",
    "status": "pending",
    "attempts": 0,
    "last_status_code": null,
    "last_attempt_at": null,
    "created_at": "2026-10-14T09:36:00.000Z"
  }
}
```

## Refusals

Besides the [access refusals](/docs/api/errors#access-refusals) every call can meet, this call can answer:

- [`read_only_credential`](/docs/api/errors#read_only_credential) (403): Read-only key or connection.
- [`machine_writes_disabled`](/docs/api/errors#machine_writes_disabled) (503): Changes are switched off.
- [`request_too_large`](/docs/api/errors#request_too_large) (413): Request too large.
- [`not_permitted`](/docs/api/errors#not_permitted) (403): Not permitted.
- [`not_found`](/docs/api/errors#not_found) (404): Not found.