Sends a signed test event to the URL you pass, or to the workspace webhook URL when you leave it out. Use it to check that your endpoint is reachable and verifies signatures before real call events arrive.
Request#
| Field | Type | Required | Description |
|---|---|---|---|
url |
string | No | Absolute URL to send the test to. Defaults to the workspace webhook URL. |
The request is a POST with this JSON body:
{ "event": "test", "timestamp": 1760918400000 }It carries the same signature as real webhooks, in both x-tried-signature and x-retell-signature, in the form v=<timestamp>,d=<hex HMAC-SHA256>. The HMAC is computed over the raw body followed by the timestamp, keyed with the workspace's webhook key (the API key marked is_webhook_key, else the oldest key). See Webhooks.
The test is delivered like any other webhook: each attempt times out after the workspace webhook timeout (10 seconds by default), and a failed attempt is retried up to 3 times with exponential backoff, so a failing endpoint can hold the request open for a while. Every attempt is stored and shows up in List webhook deliveries with event test. Addresses that resolve to private or internal networks are blocked.
Example request#
curl -X POST https://api.tried.com.au/workspace/test-webhook \
-H "Authorization: Bearer $TRIED_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://hooks.example.com.au/tried"}'const res = await fetch("https://api.tried.com.au/workspace/test-webhook", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TRIED_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ url: "https://hooks.example.com.au/tried" }),
});
const { success } = await res.json();import os, requests
res = requests.post(
"https://api.tried.com.au/workspace/test-webhook",
headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
json={"url": "https://hooks.example.com.au/tried"},
)
success = res.json()["success"]Response#
200 OK
{ "success": true }| Field | Type | Description |
|---|---|---|
success |
boolean | true when an attempt got a 2xx response. false when every attempt failed; check List webhook deliveries for the status codes and errors. |
The test is recorded in the audit log as webhook.test.
Errors#
| Status | When |
|---|---|
400 |
No webhook URL configured (no url given and the workspace has none), or url is not a valid URL. |
401 |
Missing or invalid API key. |
403 |
The key's IP allowlist or scopes reject the request. This route needs the admin scope. Dashboard members get The member role is read-only. |
429 |
Rate limit exceeded. See Rate limits. |
See Errors for the body format.