Sume Send test vs Redeliver: which to use for avatar video jobs
Send test posts a dummy webhook.test payload to a URL you type; Redeliver re-sends a real job's terminal event with a fresh signature. When to use each.
Use Send test to prove your endpoint and secret work before any real job exists, and Redeliver to replay the real terminal event of a specific job after your receiver was down. Send test never replays a job; Redeliver never sends a dummy.
Both are described in Webhooks, read 2026-10-10.
The difference
| Send test | Redeliver | |
|---|---|---|
| Where | /dashboard/webhooks, or POST /v1/webhooks/test-deliveries with account:write | Delivery row, or POST /v1/jobs/{job_id}/webhook/redeliver with jobs:write |
| Payload | webhook.test with ok: true and a message; no job_id | The job's real job.completed, job.failed or job.canceled event |
| Destination | A URL you type | The job's original URL |
| Signature | Signed | Fresh timestamp and fresh signature |
| Uses an automatic attempt | No | No; works after all 10 are used |
A first-time setup
Before you wire avatar videos in, send a test to your staging URL. A pass proves the URL is reachable, the raw body reaches your verifier unmodified, and the signing secret is right. If verification fails, compare the x-sume-webhook-secret-fingerprint header with the fingerprint shown next to the secret in the dashboard; neither side has to send the secret.
Then create one short avatar video with webhook_url and mode: webhook, and watch the real event arrive.
After an outage
If your receiver returned errors during a deploy and Sume used its attempts, the job is still complete: the result is available at its result URL. Redeliver pushes the terminal event again, so your pipeline moves on without a manual lookup.
Treat job_id as the idempotency key on your side. A redelivery is the same job, so a handler that inserts by job_id and ignores duplicates stays correct.
Limits worth remembering
Redeliver does not change the destination: a new URL means a new job. And a webhook is an optimization, not the only recovery path, so keep the status URL poll available for events that never arrive.
A short checklist
Before go-live: send a test, confirm the verifier returns true for it, and confirm it returns false when you alter one byte of the body. Then run a real short avatar job end to end. After go-live: log the delivery id and job_id for every event, alert on a gap between a job's creation and its terminal event, and use Redeliver, not a new job, to recover a missed event.
Keep Send test away from production data flows. Because it never carries a job_id, a receiver that tries to look one up should treat it as a harmless no-op.
Common mistakes
Teams often use Send test to look for a real job's payload and conclude that the integration is broken because there is no job_id. The test body is deliberately generic. Another common mistake is creating a new job to recover a missed event: that costs a second render, when Redeliver would have re-sent the first at no extra generation cost.
A third is verifying the signature against a parsed and re-serialized body. Both Send test and real deliveries are signed over the raw bytes, so use the raw body in the verifier.
Permissions
The two actions use different scopes. Send test through the API needs account:write, and Redeliver needs jobs:write. A key made for a render worker usually has the second but not the first, so a failing test call from that key is a scope error, not a broken endpoint. Use a dashboard session for tests, and keep the render key narrow.
Where each action leaves a trace
A redelivery shows up as a new delivery row for the same job, while a test does not appear in Requests at all. When you audit an integration, expect the first to add rows for a known job_id and the second to add none.
Sources
Related posts
More in Developers
- Sume webhook URL localhost returns 400: test with a tunnel
Sume refuses localhost, private ranges, and plain HTTP webhook URLs with a 400 at create. Use a public HTTPS tunnel and verify the signature.
- Suno v6-wild is less predictable: how to keep a track on Sume
Suno describes v6-wild as less predictable. Sume Music has no seed, so you cannot rerun a track; keep the job result and its URL as the only master.
- Tailscale Funnel for Sume webhooks: a public HTTPS URL for localhost
Sume webhook URLs must be public HTTPS, so localhost is rejected. Tailscale Funnel gives your dev machine one, plus a receiver that refuses an empty secret.
- TTS output_format: choose wav or mp3 for joins, captions and clips
Sume TTS returns mp3 by default. Choose wav when you will join, slice per sentence or feed lip-sync; mp3 is smaller but adds padding at every edge.
Written by Sume