Veo 3.1 latency is 11 seconds to 6 minutes: set your poll to match
Google lists Veo 3.1 request latency from 11 seconds to 6 minutes at peak. Poll with a deadline over 6 minutes; Sume's video docs poll every 30 seconds.

Google's Veo page lists request latency as a minimum of 11 seconds and a maximum of 6 minutes during peak hours. So a client should not treat 11 seconds as typical: wait between polls, and set a total deadline longer than 6 minutes.
Sume video generation is asynchronous too, so the same pattern applies. Latency numbers are from Google's page; the polling flow is from Sume's video generation docs, read 2026-10-01.
What does the Veo page say about latency?
Two lines. Request latency: min 11 seconds, max 6 minutes (during peak hours). And a note that the higher the resolution, the higher the latency will be.
| Vendor statement | Client setting |
|---|---|
| Minimum 11 seconds | Polling more often than every few seconds gains nothing |
| Maximum 6 minutes at peak | Deadline above 6 minutes, for example 8 |
| Higher resolution, higher latency | Longer deadline for high-resolution requests |
How does a Sume video job get polled?
Submit to POST /v1/videos, receive a job id and polling URL, poll GET /v1/videos/{jobId} until the status is completed, then download from the content URL. The docs' own examples wait 30 seconds between polls and stop on failed.
const headers = { Authorization: "Bearer " + process.env.SUME_API_KEY };
const deadline = Date.now() + 8 * 60 * 1000;
async function waitForVideo(pollingUrl) {
while (Date.now() < deadline) {
await new Promise((r) => setTimeout(r, 30000));
const res = await fetch(pollingUrl, { headers });
const job = await res.json();
if (job.status === "completed") return job;
if (job.status === "failed") throw new Error("generation failed");
}
throw new Error("deadline passed; keep the job id and check later");
}Can I skip polling?
Yes. Pass callback_url in the request body and Sume sends a webhook when the job completes. It must be HTTPS. Sume signs the raw body with x-sume-webhook-signature, so verify it, and refuse to verify at all if your secret is empty.
What if the deadline passes?
Keep the job id and read it again later rather than submitting the same request twice. Sume accepts an Idempotency-Key so a retried submit returns the original job. See job result 409: poll status for the not-ready case.
Sources
Related posts
More in Developers
- Veo 3.1 videos are stored 2 days: download them, and what Sume does
Google says Veo videos are stored for 2 days, and referencing one for extension resets the timer. Save the file early; Sume jobs return Sume-hosted artifacts.
- AI Gateway async video 413 at 300 KiB: hosted URLs on Sume
AI Gateway caps the persisted video start request at 300 KiB and answers inline base64 with 413. On Sume, send public HTTPS URLs; 413 is payload_too_large.
- Vercel AI Gateway poll intervalMs and timeoutMs vs Sume polling
AI Gateway's poll option sets intervalMs (5000) and timeoutMs (600000). Sume jobs return next_poll_after_seconds, and your client owns the deadline.
- 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.
Written by Sume