Skip to content
Docs version r8
OpenAPIJSONYAML
API reference / Webhooks

Test event

webhookTest
EventwebhookTest

Signed per the Standard Webhooks specification. Verify with an official Standard Webhooks library and the endpoint's whsec_ signing secret: it checks Base64(HMAC-SHA256(Base64-decoded secret, webhook-id + '.' + webhook-timestamp + '.' + raw_body)) against each v1 entry in webhook-signature in constant time and rejects timestamps more than five minutes from now. Deduplicate by webhook-id. Redelivery preserves the body and webhook-id and signs again with a new timestamp.

Markdown fileTry in PlaygroundDocs version r8

VizoAPI sends this request to the webhook endpoint you create in the console.

Request headers

Request headers
FieldDescription
webhook-idstringRequired

Unique event ID, equal to event_id in the body. Unchanged on retries and redelivery; use it to deduplicate.

webhook-timestampstringRequired

Unix time in seconds when this attempt was sent.

webhook-signaturestringRequired

Space-delimited list of v1 signatures. Two are sent for 24 hours after a secret rotation; accept the request if any one matches.

Request body

A JSON object. Fields that are not listed are rejected.

Request body
FieldDescription
created_atdate-timeRequired
event_idstringRequired
testbooleanRequired
typestringRequired
webhook.test

Responses

2XX Delivery accepted

Request example

cURL
# Your endpoint receives a POST signed per Standard Webhooks. Replay one locally to test your handler:
curl -X POST "$YOUR_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -H "webhook-id: $EVENT_ID" \
  -H "webhook-timestamp: $TIMESTAMP" \
  -H "webhook-signature: v1,$SIGNATURE" \
  --data-binary @event.json
Python
# pip install standardwebhooks
from standardwebhooks import Webhook, WebhookVerificationError

wh = Webhook("whsec_...")  # your endpoint's signing secret

def verify(headers, raw_body: bytes):
    try:
        return wh.verify(raw_body, headers)  # returns the parsed event
    except WebhookVerificationError:
        return None
Node.js
// npm install standardwebhooks
import { Webhook } from "standardwebhooks";

const wh = new Webhook(process.env.WEBHOOK_SECRET); // whsec_...

// rawBody is a Buffer of the request body as received, e.g. express.raw({ type: "application/json" }).
export function verify(headers, rawBody) {
  try {
    return wh.verify(rawBody, headers); // returns the parsed event
  } catch {
    return null;
  }
}
ResponseEvent
{
  "created_at": "2026-11-02T08:01:43Z",
  "event_id": "string",
  "test": false,
  "type": "webhook.test"
}