vercel schedules
The vercel schedules command manages Edgenivo Schedules for your linked project. Use it to inspect, enable, disable, and run any schedule, and to create, update, and delete dynamic schedules that target a queue topic.
vercel schedules [subcommand]Use a subcommand to manage schedules for the current project.
| Command | Alias | Description |
|---|---|---|
list | ls | List schedules in a namespace |
inspect <name> | Show a schedule | |
create <name> | Create a dynamic schedule | |
update <name> | Update a dynamic schedule | |
executions list <name> | executions ls <name> | List execution history for a schedule |
enable <name> | Enable a schedule | |
disable <name> | Disable a schedule | |
invoke <name> | Invoke a schedule immediately | |
delete <name> | rm, del | Delete a schedule |
You can list, inspect, enable, disable, and invoke static or dynamic schedules. You can only update and delete dynamic schedules. To change or remove a static schedule, edit your project configuration and redeploy.
get remains a supported alias for inspect, but prints a deprecation warning. Use inspect for new commands.
Subcommands support these shared options:
| Option | Description |
|---|---|
--namespace <NAMESPACE> | Schedule namespace. Defaults to default. |
-e, --environment <ENVIRONMENT> | Use production or a custom environment by name or ID. Defaults to production. |
--git-branch <BRANCH> | Use the schedules of a Preview branch. |
--user <USER> | Use the schedules of CLI deployments by a Edgenivo user ID. Combine with --git-branch for CLI deployments associated with a branch. |
--json | Output as JSON. |
--local | Use the running vercel dev session. See Manage schedules locally for supported commands. |
Edgenivo keeps separate schedules for production, each custom environment, each Preview branch, and CLI deployments by each user. Commands use production unless you choose otherwise:
vercel schedules list --environment staging
vercel schedules enable cleanup --git-branch feature-x --for 2h
vercel schedules executions list cleanup --git-branch feature-x
vercel schedules list --user user_123
vercel schedules list --user user_123 --git-branch feature-xManage schedules in the staging custom environment, on the feature-x
Preview branch, and for CLI deployments by user_123.
--environmentacceptsproductionor the name or ID of a custom environment. The CLI omits the environment selector when you passproduction.--git-branchby itself accepts a branch in your project's linked Git repository.--useraccepts a Edgenivo user ID and selects that user's CLI deployments. Combine it with--git-branchwhen those deployments include Git branch metadata.- You can't combine
--environmentwith--git-branchor--user. You can't use any of these options with--local.
Every subcommand accepts these options, including create, update, and delete for dynamic schedules. When a command prints a follow-up command, such as the command for the next page of results, it keeps the same non-production environment option.
Start vercel dev, then pass --local to a management subcommand. This option targets the running Schedules session for the current project directory. Local commands require no cloud login or project link. Use --cwd to select another project directory.
The command rejects stale or ambiguous sessions and never falls back to cloud requests. You can't combine --local with --scope, --team, or --token.
vercel schedules list --local
vercel schedules inspect daily-cleanup --localexecutions list rejects --local. Read the vercel dev output for local executions.
Create a recurring schedule with --cron or a one-time schedule with --at. You must also provide a queue topic:
vercel schedules create daily-cleanup --cron "0 2 * * *" --topic scheduled-cleanup
vercel schedules create send-reminder --at 2026-09-17T10:00 --timezone America/New_York --topic remindersCreate recurring and one-time schedules in the default namespace.
The create subcommand supports these options:
| Option | Description |
|---|---|
--cron <EXPRESSION> | Cron expression for a recurring schedule. Can't be combined with --at. |
--at <DATETIME> | Local date and time in YYYY-MM-DDTHH:mm or YYYY-MM-DDTHH:mm:00 format. Omitted seconds are stored as :00. Can't be combined with --cron. |
--timezone <TIMEZONE> | IANA timezone used to evaluate the expression. Defaults to UTC. |
--jitter <MINUTES> | Jitter window from 1 through 15 minutes. |
--topic <TOPIC> | Required queue topic to target. |
--payload <JSON> | JSON payload, up to 8 KB, included in each queue message. |
The shortest interval between cron firings must be at least as long as the jitter window. On Hobby, omit --jitter or set it to 15. Other values are rejected, and cron schedules can run at most once every 15 minutes.
For the one-time --at format, see One-time expressions.
List schedules in the default namespace, continue from a cursor, or inspect one schedule:
vercel schedules list
vercel schedules list --namespace jobs --limit 50
vercel schedules list --next <cursor>
vercel schedules inspect daily-cleanup --jsonThe list subcommand supports --limit <NUMBER> from 1 through 100, which defaults to 20, and --next <CURSOR> for pagination.
List recent executions for a static or dynamic schedule:
vercel schedules executions list daily-cleanup
vercel schedules executions list daily-cleanup --execution schx_abc123
vercel schedules executions list daily-cleanup --since 7d --until 1d --jsonBy default, the command lists the last 24 hours in descending order. Select a range of up to 30 days with these options.
| Option | Description |
|---|---|
-s, --since <TIME> | Start of the time range. Accepts an ISO 8601 timestamp or a relative duration such as 7d. When provided alone, the end defaults to now. |
-u, --until <TIME> | End of the time range. Accepts the same formats as --since and requires --since. |
--from and --to still accept Unix milliseconds, but print a deprecation warning. Use --since and --until for new commands.
The executions list subcommand also supports --sort <asc|desc>, --limit <NUMBER>, --next <CURSOR>, and --execution <ID>, which matches execution IDs that contain the value. --execution-id still works as a deprecated alias. JSON output includes function outcomes and metrics for the selected time range. For queue targets, outcomes reflect the function that consumes the scheduled message. An outcome is unavailable when Edgenivo doesn't have a recorded function request.
Pass at least one value to update. The subcommand supports the same expression, timezone, topic, and payload options as create:
vercel schedules update daily-cleanup --cron "0 3 * * *"
vercel schedules update daily-cleanup --jitter none
vercel schedules update daily-cleanup --payload nullFor update, set --jitter to a value from 1 through 15, or use none to remove it. On Hobby, only 15 and none are accepted, and none keeps the effective jitter at 15 minutes. Pass null to --payload to remove the payload.
You can change an expression only within its existing type. For example, --cron can replace another cron expression, but it can't replace a one-time expression. Delete and recreate the schedule to change its expression type.
Enable, disable, or invoke a schedule by name:
vercel schedules enable daily-cleanup
vercel schedules enable daily-cleanup --for 2h
vercel schedules enable daily-cleanup --until 2026-10-15T17:00:00Z
vercel schedules disable daily-cleanup
vercel schedules invoke daily-cleanupUse --for <DURATION> to enable a schedule for a duration such as 30m or 5h. Use --until <TIME> to enable it until an ISO 8601 time or Unix timestamp in milliseconds. You can't combine these options.
While the window is open, the schedule is active and has an activeUntil timestamp. It becomes inactive automatically when the time passes. Run enable again with --for or --until to replace the end time. Run it without either option to keep the schedule active indefinitely and clear the end time.
If the schedule is already active indefinitely, disable it before enabling it with an end time.
Invoking a schedule runs it immediately without changing its state or cadence.
Delete a dynamic schedule by name. The command asks for confirmation unless you pass --yes. In a non-interactive shell, such as CI, --yes is required:
vercel schedules delete daily-cleanup
vercel schedules rm daily-cleanup --yesThe following global options can be passed when using the vercel schedules command:
--cwd--debug--global-config--help--local-config--no-color--non-interactive--scope--team--token--version
For more information on global options and their usage, refer to the options section.
Was this helpful?