AI Gateway startVideo webhookUrl: the same pattern on Sume
experimental_startVideo returns once the job is accepted and can call a webhookUrl. On Sume, send mode webhook with webhook_url and keep polling as backup.

experimental_startVideo sends the start request and returns as soon as AI Gateway accepts the job; it takes a webhookUrl for webhook-driven completion. The Sume equivalent is a normal video submit with mode: "webhook" and a webhook_url: you get a 202 with the job id and polling URLs, then a terminal event is posted to your URL.
Vercel's side is from its video generation page and Sume's from Webhooks and Jobs and results, read 2026-10-01.
What does startVideo do on Vercel?
The page says it needs ai@7.0.76 or later and @ai-sdk/gateway@4.0.61 or later, takes the same options as experimental_generateVideo plus webhookUrl, and pairs with experimental_getVideoStatus, which makes one status request and returns pending, completed or error.
How do I do the same on Sume?
Submit with mode: "webhook" and a public HTTPS webhook_url. Sending webhook_url (or its alias callback_url) without a mode also gives webhook. The URL must be public HTTPS; localhost, private-network and non-HTTPS URLs are rejected.
curl https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "seedance-2",
"prompt": "A serene mountain landscape at sunset",
"mode": "webhook",
"webhook_url": "https://example.com/hooks/sume"
}'How do the two map?
| Step | Vercel AI Gateway | Sume |
|---|---|---|
| Start | experimental_startVideo | Submit with mode: "webhook"; 202 with job id |
| Completion push | webhookUrl | webhook_url; events job.completed, job.failed, job.canceled |
| Check once | experimental_getVideoStatus | Poll status_url until terminal, then GET result_url |
What must my receiver do?
Return any 2xx after durably storing the event. Network errors and non-2xx responses are retried, up to 10 attempts total, with a fixed delay between attempts and a 10s timeout per attempt. Use job_id as your idempotency key. The docs call delivery an optimization, not the only recovery path, so keep status_url polling available for events that never arrive. Verifying signatures is covered in signed webhooks.
Sources
Related posts
More in Developers
- Video starts on a black frame: fix the first Timeline segment
A render that opens on black usually has a fade or a late first clip. Timeline 1.0 refuses a first start other than 0 and any first-segment transition.
- Vimeo pixel aspect ratio 1:1: setsar in a video filter
Vimeo recommends square pixels (1:1). Sume's video filter allowlist includes setsar, setdar and scale, so a filtergraph can set the sample aspect ratio.
- Wan 3.0 smart duration and adaptive ratio vs Sume's explicit fields
QwenCloud lists smart duration and adaptive aspect ratio for Wan 3.0. On Sume you send an integer duration and an aspect_ratio the model supports.
- Wan 3.0 sound toggle vs Sume generate_audio for Wan
Wan 3.0 lists a sound toggle at QwenCloud. On Sume, generate_audio defaults to the model's audio capability and some models reject false.
Written by Sume