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.

5 min readSume
All posts

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.

Webhook events, read 2026-10-02
Argil eventSume eventNotes
VIDEO_GENERATION_SUCCESSjob.completedArgil: data.videoUrl; Sume: payload.artifacts[].url
VIDEO_GENERATION_FAILEDjob.failedSume adds an error object and status: ERROR
AVATAR_TRAINING_SUCCESSjob.completed on the avatar jobSame event set as video jobs
AVATAR_TRAINING_FAILEDjob.failed on the avatar jobSame event set as video jobs
No cancel event on the pages readjob.canceledSume 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

All Comparisons posts

Written by Sume