Free webhook tester: see what a webhook sends before coding
A free webhook tester gives you a public HTTPS URL and shows each request's headers and body. Point Sume's Send test at it to see a signed payload.

A free webhook tester is a hosted page that gives you a unique public HTTPS URL and shows every request sent to it, with its headers and raw body, so you can see what a webhook sends before you write a receiver. To see Sume's, paste that URL into Send test on the dashboard's Webhooks tab for a signed webhook.test delivery, or pass it as one run's webhook URL to capture a real receipt.
Sume facts come from Webhooks, Run webhooks, Runs and results, and the Sume API reference, read on 2026-09-27. This post names no tester: any service that gives you a public HTTPS URL and shows the raw request works the same way. To send deliveries to code on your own machine instead, see Test Sume webhooks locally with ngrok or a Cloudflare Tunnel.
How do I send a test webhook to a tester URL?
Use Send test: the control on /dashboard/webhooks, or POST /v1/webhooks/test-deliveries with a key carrying account:write. Paste the tester's URL, and Sume POSTs a dummy, signed webhook.test payload to it; it never replays a real job or run. The URL must be public HTTPS; localhost, private-network, and non-HTTPS URLs are rejected. Sume webhook not received? explains the fields the call returns.
curl -X POST https://api.sume.com/v1/webhooks/test-deliveries \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "webhook_url": "https://example.com/your-tester-url" }'What will the tester show?
A POST with a JSON body and Sume's signature headers. The test body is small and says outright that it is not a job or run, as the sample below shows; a real delivery carries the same headers, with the run receipt or the job result in payload.
| Part | What you'll see | Meaning |
|---|---|---|
content-type | application/json | The body is JSON |
x-sume-webhook-timestamp | Unix seconds, such as 1785000000 | Signed together with the body |
x-sume-webhook-signature | sume-v1=<hex> | HMAC-SHA256 over <timestamp>.<raw_body>; two comma-separated entries during a secret rotation |
x-sume-webhook-secret-fingerprint | 12 hex characters | A fingerprint of your current signing secret; safe to share, unlike the secret |
event in the body | webhook.test | Real deliveries say format.run.terminal, job.completed, and so on |
request_id in the body | req_wh_test_… | On a run delivery it equals the run id and is the dedupe key |
{
"event": "webhook.test",
"request_id": "req_wh_test_…",
"payload": {
"ok": true,
"message": "Sume webhook test. Not a job or Format run."
}
}How do I capture a real webhook payload?
Create one run or job with the tester's URL as its webhook URL: communication.webhook_url on a Format run, or callback_url on POST /v1/videos. Sume POSTs a run's receipt once, when it completes or fails, and never for a canceled or skipped run. You can't aim an existing run at the tester later, because Redeliver does not send to a different URL.
- A run delivery's
payloadis the receipt, byte-identical todatafromGET /v1/format-runs/{run_id}, so reading the run with your key shows the same object without any tester. - A receipt over 1 MiB arrives with
payload: nulland an error that says where to fetch it.
Can I test signature verification in a webhook tester?
Not inside it: a tester doesn't hold your signing secret, and it never should. Use the tester to capture bytes, then run your own verifier on them:
- Copy the raw body byte for byte, not a reformatted view, with the timestamp and signature headers. A re-serialized body does not verify: key order and whitespace are part of what was signed.
- A captured delivery goes stale fast against a five-minute replay window, the default Sume calls reasonable.
verifyWebhookfrom@sume-com/sdkskips the timestamp check whentoleranceSecondsis0; use that only for an offline test. - A tester's reply only shows what the tester answered. Any
2xxcounts as delivered and a3xxis a failed attempt, so point Send test at your real endpoint before you go live.
Is it safe to send real payloads to a public tester?
Treat anything you send there as public.
- Real receipts carry
media.sume.comURLs that don't expire and open for anyone holding them, so capture test content only. - Any run created with a webhook URL can still POST to it when it reaches a terminal state, so stop using the tester URL when you're done.
- Never paste your API key or signing secret into a tester; Sume's docs keep keys on trusted servers. The fingerprint is the part that is safe to share.
Sources
Related posts
More in Developers
- How to automate AI video generation from code
To automate AI video generation, save a working brief as a recipe, start it from code per event, list or schedule, and take each video by webhook.
- How to choose an AI video generation API: 12-point checklist
Choose an AI video generation API by how it handles jobs, retries, webhooks, spend caps, failures, and outputs: a checklist with Sume's answers.
- MCP server needs authentication in Claude Code: how to fix
Claude Code flags an MCP server as needing authentication after a 401 or 403 it can't clear. How to sign in again, and when an API key fits better.
- MCP tool annotations: readOnlyHint and how clients use them
MCP tool annotations are optional hints such as readOnlyHint. What each one means, its default, and how ChatGPT, VS Code, and Copilot use them.
Written by Sume