Feature
Cron jobs without a server.
Add a schedule to any function and nvoke will call it on time. Same editor, same logs, same API as your HTTP endpoints — just with a cron expression attached.
// schedule: */15 * * * * (every 15 minutes)
export default async function () {
const res = await fetch("https://api.example.com/health");
if (!res.ok) await notifySlack("Upstream is down");
return { ok: res.ok, status: res.status };
}Scheduled runs, unified with HTTP
A scheduled function on nvoke is the same thing as an HTTP endpoint — the only difference is that the platform calls it on a cron expression instead of a client. That means you can test a scheduled function by hitting its URL directly, and you can promote a manual endpoint to a scheduled one without rewriting anything.
The scheduler is implemented on top of a monotonic tick. If you set a schedule of */5 * * * *, nvoke will fire at 00, 05, 10, and so on — not five minutes after deploy. This matters when you are backfilling data or coordinating scheduled jobs across multiple functions.
What scheduled functions are good for
The obvious cases: polling an upstream API for changes, generating daily reports, warming caches, triggering digest emails, rolling encryption keys, reconciling accounting data. The shared property is that you need code to run on time, but you do not want to run a server to host it.
If you are currently using a GitHub Actions schedule trigger as a poor man's cron, a scheduled nvoke function is the right move. Actions schedules are best-effort and often run many minutes late; nvoke fires on the tick.
Standard cron syntax
Five-field cron expressions. "0 * * * *" for hourly, "0 9 * * 1" for Monday mornings. Timezone is UTC by default and can be set per function.
At-most-once per tick
If a run is still executing when the next tick comes due, nvoke skips it. Overlapping runs are a common footgun we decided not to ship.
Replay and backfill
Every scheduled run shows up in the logs like any other invocation. Re-run a past execution with a single click to backfill.
Schedule your first job.
Paste a function. Pick a cadence. nvoke takes it from there.