Vercel Hobby cron runs once a day, up to 59 minutes late
Vercel Hobby cron runs once a day with hourly precision, so a job can start up to 59 minutes late. When to move paid work to a Sume bulk run or Scheduled agent.

On the Hobby plan Vercel runs a cron job at most once a day, with hourly precision, so a job set for 09:00 may start any time up to 09:59. That is fine for a digest and a poor fit for a job that needs a fixed minute. Keep the cron as a thin trigger and let Sume own the paid work, the budget and the retries.
What does Vercel's page say?
The cron usage page gives the limits per plan.
| Topic | Hobby | Pro and Enterprise |
|---|---|---|
| Frequency | Once per day | Once per minute |
| Precision | Per hour, up to 59 minutes late | Per minute |
| Jobs per project | 100 | 100 |
| What runs | A Vercel Function, so function limits apply | A Vercel Function, so function limits apply |
What happens if I write a faster expression on Hobby?
The page says a more frequent expression fails deployment, so you find out at deploy time, not at 3 a.m. Because the cron calls a Vercel Function, the function's time limit also applies. A function that waits on a long render will run into it, so do not wait.
What should the function do instead?
Start work and return. A Sume Format run is asynchronous: you create it, keep the run id, and read the receipt or take the webhook later. For many items, a bulk run takes 1 to 100 items with concurrency from 1 to 16, so one cron call can start a whole batch without holding the function open.
Give the call an Idempotency-Key tied to the day, so a retry after a timeout returns the original instead of spending twice. A bulk replay with the same key and payload returns 202 and the old queue. A different payload under the same key is a 409 idempotency_conflict, with details.queue_id pointing at the queue that already exists.
- Set generation_spend_cap_usd on each item; the default comes from the Format's cap.
- Use a webhook per item for completion, because the queue itself has no webhook.
- Read the queue with GET /v1/format-run-queues/{id} when you want counts.
When is a Sume schedule better than a Vercel cron?
If you need a fixed minute or an IANA timezone, a Sume Scheduled agent has both: a 5-field cron expression plus a timezone. It is created in the dashboard, and its default per-run spend cap is $1.00. Vercel cron is still the better fit when the trigger belongs to your app's own deploy. Details are in the bulk runs reference and the scheduled agents guide.
Sources
Related posts
More in Agents
- Verify a Sume run webhook in Python: replay window and empty secret
A Python verifier for the sume-v1 signature on a Sume run webhook: raw body, five-minute replay window, constant-time compare, and no empty secrets.
- A weekly scheduled agent run for podcast clips: cron, cap and trigger
Set a Sume Scheduled Action to run every week, with a cron schedule, an IANA time zone and a spend cap that a manual or API run can lower but never raise.
- Run the Sume video agent from your backend with Agent Completions
POST /v1/agent/completions runs the same agent as the Sume Agents chat, with tools and media generation, and returns an async run receipt you poll or webhook.
- Safe automation for AI agents that call paid APIs
Keep agents read-only by default, keep secrets out of logs, and on hosted MCP send an idempotency_key, preview with dry_run, and cap with max_spend_usd.
Written by Sume