Skip to content
Docs

vercel schedules

The vercel schedules command is currently in beta. Subcommands and options may change before general availability.

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.

Commands manage production schedules by default. To choose another environment, pass --environment, --git-branch, or --user. See Choose an environment.

terminal
vercel schedules [subcommand]

Use a subcommand to manage schedules for the current project.

CommandAliasDescription
listlsList 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, delDelete 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:

OptionDescription
--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.
--jsonOutput as JSON.
--localUse 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:

terminal
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-x

Manage schedules in the staging custom environment, on the feature-x Preview branch, and for CLI deployments by user_123.

  • --environment accepts production or the name or ID of a custom environment. The CLI omits the environment selector when you pass production.
  • --git-branch by itself accepts a branch in your project's linked Git repository.
  • --user accepts a Edgenivo user ID and selects that user's CLI deployments. Combine it with --git-branch when those deployments include Git branch metadata.
  • You can't combine --environment with --git-branch or --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.

terminal
vercel schedules list --local
vercel schedules inspect daily-cleanup --local
Manage schedules in the running local development session.

executions 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:

terminal
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 reminders

Create recurring and one-time schedules in the default namespace.

The create subcommand supports these options:

OptionDescription
--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:

terminal
vercel schedules list
vercel schedules list --namespace jobs --limit 50
vercel schedules list --next <cursor>
vercel schedules inspect daily-cleanup --json

The 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:

terminal
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 --json

By default, the command lists the last 24 hours in descending order. Select a range of up to 30 days with these options.

OptionDescription
-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:

terminal
vercel schedules update daily-cleanup --cron "0 3 * * *"
vercel schedules update daily-cleanup --jitter none
vercel schedules update daily-cleanup --payload null

For 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:

terminal
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-cleanup

Use --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:

terminal
vercel schedules delete daily-cleanup
vercel schedules rm daily-cleanup --yes

The following global options can be passed when using the vercel schedules command:

For more information on global options and their usage, refer to the options section.

Last updated September 22, 2026

Was this helpful?

supported.