Vercel function max duration 800s: Sume wait budget
Vercel Pro and Enterprise allow 800s, with 1800s in beta. Sume still caps a blocking wait at 30s, so video jobs need a poll loop with its own deadline.

The maximum Vercel Function duration is 800 seconds on Pro and Enterprise, with an extended 1800 seconds in beta and 300 seconds on Hobby. That is more room than before, but a Sume request still blocks for at most 30 seconds, so a video job needs a poll loop or a webhook rather than one long request.
Vercel numbers are from its Functions limitations page (updated 2026-08-24), read 2026-09-30. Sume numbers are from Jobs and results.
What are the Vercel limits?
Per the page: Hobby is 300s default and maximum; Pro and Enterprise are 300s default, 800s maximum, and 1800s extended maximum (beta). The 800s maximum is generally available. Secure Compute and Static IPs do not support durations above 800 seconds during the beta. If a function does not finish in time it returns a 504 FUNCTION_INVOCATION_TIMEOUT.
How does that compare with Sume's wait?
Different things are being limited. wait_timeout_seconds is clamped to 0..30 and bounds how long the HTTP request blocks, not how long the job takes. Image jobs often finish inside it; video, avatar-video and face-swap jobs routinely do not. The overall deadline is client-side, and the docs call 20 minutes reasonable for video.
| Limit | Value | What it bounds |
|---|---|---|
| Vercel Hobby | 300s | One function invocation |
| Vercel Pro and Enterprise | 800s (1800s beta) | One function invocation |
Sume wait_timeout_seconds | 0 to 30s | One blocking HTTP request |
| Sume job deadline | Set by your client | Your own poll loop |
Should I just raise maxDuration and wait?
It does not remove the 30-second clamp, and a client-side timeout does not cancel the job; it keeps running and billing. Submit with mode: "async", save the job id, and finish the function. Then poll status_url from a later invocation, or receive the webhook. The docs say delivery is an optimization, never the only recovery path, so keep polling available. See Vercel function timeout for AI video in Next.js.
What does a 504 mean for my job?
Your function stopped; the Sume job did not. Store the job id before you wait, so a 504 leaves you able to read the result later instead of resubmitting a paid request.
Sources
Related posts
More in Developers
- Vercel Queues retry can resubmit a paid Sume job
A Vercel Queues consumer that times out is redelivered, and maxDeliveries is unlimited by default. Reuse one Idempotency-Key per message so Sume bills once.
- Video 1.0 4k resolution error: only 720p and 1080p on that URL
Video 1.0 accepts 720p (default) and 1080p from its legacy vocabulary and rejects 4k. For 4K send a sume/auto request to POST /v1/videos instead.
- Video 1.0 bitrate_mode: still in the shape, rejected by Auto
bitrate_mode is retained in Video 1.0's legacy request shape but Auto rejects it. Omit it, and note that Gemini Omni Flash 1.1 has no bitrate_mode either.
- Video 1.0 duration vs duration_seconds: what if they differ?
Video 1.0 accepts duration and its alias duration_seconds. If you send both they must agree; the value is checked against the Auto serving family.
Written by Sume