Vercel 800 s max duration: do you still need a Sume webhook?

Vercel Pro allows 800 s functions and a 30-minute beta. A Sume video job can still outlast one request, so use async or webhook mode and return in seconds.

5 min readSume
All posts

Yes, still use a webhook or a poll. Vercel now lets Pro and Enterprise functions run for up to 800 seconds, with an extended beta up to 1,800 seconds, but a Sume sync wait is capped at 30 seconds and a video job has no promise to finish inside any one function. Submit, store the job id, return, and let the terminal event or a status poll finish the work.

The Vercel numbers

The Vercel duration page (last updated 2026-08-24) lists the Fluid compute limits. Durations above 800 seconds must be set per function, in code or vercel.json, not as a project default. Secure Compute and Static IPs do not support values above 800. For a FastAPI app, key the functions entry on the entrypoint file, for example app/main.py.

Vercel Fluid compute duration, read 2026-10-08
PlanDefaultMaximumExtended beta
Hobby300 s300 sNot listed
Pro300 s800 s1,800 s
Enterprise300 s800 s1,800 s

The Sume side

sync and subscribe modes clamp wait_timeout_seconds to 0 through 30. When the job is still running the response says sync.timed_out and gives a status_url. The default mode is async.

A longer function does not change the job. If your function times out, the job keeps running and bills; read the job again instead of submitting a second one.

Sume wait limits, from the docs read 2026-10-08
SettingValue
wait_timeout_seconds0 to 30, clamped
Webhook retriesUp to 10, 30 s apart
Per-attempt timeout10 s
Replay window300 s default

When a long function is useful

A long function fits work that you cannot split, such as a single download of a large file. It does not fit a wait on a render. The beta runtimes are Node 20, 22 and 24, Bun 1.x and 1.4.x, and Python 3.12 to 3.14.

  • Submit with mode: "webhook" and a public HTTPS webhook_url.
  • Verify the sume-v1 signature on the raw body.
  • Dedupe on job_id.
  • Keep a cron or a user-triggered poll on status_url as a fallback.

Cost of getting it wrong

A function that waits on a video holds a billed instance for the full wait. A webhook route runs for milliseconds. Even at 800 seconds, one slow job still blocks one request slot.

Setting the duration for the route you keep

If you keep a route that calls Sume, set its maxDuration to the small value it needs, not to the maximum. A submit takes a second or two. The Vercel page says values above 800 seconds must be set per function, and the extended beta does not work with Secure Compute or Static IPs, so a project that uses either cannot rely on it at all.

For a Python app on FastAPI, the functions key must name the entrypoint file such as app/main.py.

Use the shortest path that fits the job.

  • Image jobs that finish in seconds: mode: "sync" with a wait under 30 seconds, then poll if sync.timed_out is set.
  • Video, avatar and audio jobs: mode: "webhook" and a signed receiver.
  • Anything you cannot guess: async and a poll that follows next_poll_after_seconds.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume