Argil VIDEO_GENERATION_SUCCESS webhook vs Sume job.completed payload
Argil sends four webhook events with videoUrl in data; Sume sends signed terminal job.completed, job.failed and job.canceled events. Handler differences.

Argil registers a callback URL and sends four event names: VIDEO_GENERATION_SUCCESS, VIDEO_GENERATION_FAILED, AVATAR_TRAINING_SUCCESS and AVATAR_TRAINING_FAILED. Sume sends three terminal job events, job.completed, job.failed and job.canceled, each signed with HMAC SHA 256. If you are porting a handler from one to the other, the event names, the payload shape and the signature check all change.
The Argil facts are from its webhook events, success event and create webhook pages. The Sume facts are from Webhooks. All were read on 2026-10-02.
What does an Argil webhook look like?
You create a webhook with POST /webhooks, passing a callbackUrl and an events array with at least one event, authenticated with an x-api-key header. The success payload has an event field and a data object with videoId, videoName, videoUrl and extras.
The pages I read do not document a signature header, a secret field or a retry policy, so I am not claiming any. If you rely on Argil callbacks, confirm those points in Argil's own documentation before you depend on them.
What does a Sume webhook look like?
On a Sume model request you send mode: "webhook" with a public HTTPS webhook_url. Sume sends terminal events only, with no progress or partial deliveries. The body carries event, request_id, job_id, status and a payload with artifacts, each with a media.sume.com URL.
Deliveries are signed. The x-sume-webhook-signature header holds sume-v1=<hex> computed as HMAC SHA 256 over <timestamp>.<raw_body>, and x-sume-webhook-timestamp carries the timestamp. Sume retries up to 10 attempts, 30 seconds apart by default, with a 10 second timeout per attempt, and the docs tell you to use job_id as your idempotency key.
Mapping the events
Avatar training has no webhook event on Sume because creating an avatar is just another job; the same three terminal events cover it.
| Argil event | Sume event | Notes |
|---|---|---|
VIDEO_GENERATION_SUCCESS | job.completed | Argil: data.videoUrl; Sume: payload.artifacts[].url |
VIDEO_GENERATION_FAILED | job.failed | Sume adds an error object and status: ERROR |
AVATAR_TRAINING_SUCCESS | job.completed on the avatar job | Same event set as video jobs |
AVATAR_TRAINING_FAILED | job.failed on the avatar job | Same event set as video jobs |
| No cancel event on the pages read | job.canceled | Sume cancels before generation starts |
What should my handler change?
Branch on event rather than assuming one shape, verify the Sume signature against the raw body before parsing, and store job_id so a retry is harmless. Keep a polling fallback on GET /v1/jobs/:id/status, because Sume's docs call delivery an optimization and never the only recovery path. For the signature code, see verifying a Sume avatar-video webhook in Python.
Sources
Related posts
More in Comparisons
- AssemblyAI Universal-3.5 Pro $0.21 per hour vs Sume STT
AssemblyAI lists Universal-3.5 Pro async at $0.21 an hour plus $0.02 for speaker labels. Sume STT is $0.60 an hour with no add-on line. What to compare.
- Asset Studio 1-Click A/B Testing vs a Sume bulk run of hook variants
Google's Asset Studio adds Gemini Omni video and 1-Click A/B Testing. If your Q4 test spans channels, queue the hook variants as a Sume bulk run instead.
- Azure personal voice consent: name and company must match audio
Azure personal voice requires a recorded consent statement whose talent name and company match the audio. The fields, formats and what Sume collects instead.
- Bannerbear 60 POSTs per 10 seconds vs Sume's per-minute budgets
Bannerbear allows 60 POST requests per 10-second window. Sume budgets writes and reads per minute by plan: 120 to 1200 writes, reads 40 times higher.
Written by Sume