Skip to content
Docs

vercel alerts

The vercel alerts command lists recent alerts for the linked project, a specific project, or an entire team. The inspect subcommand shows details for a single alert group, and the rules subcommand tree manages alert notification rules from the terminal.

By default, vercel alerts reads alerts for the linked project from the last 24 hours. You can change the scope with --project or --all, filter by alert type, change the time range, and switch between table, AI investigation, or JSON output.

Use this command when you want to inspect alert activity from the terminal without opening the dashboard.

terminal
# List alerts for the linked project from the last 24 hours
vercel alerts
 
# List team-wide alerts
vercel alerts --all
 
# Filter by alert type and time range
vercel alerts --type usage_anomaly --since 2026-03-01T00:00:00.000Z

Using the vercel alerts command to list recent alerts for a project or team.

These options only apply to the vercel alerts command.

The --project option, shorthand -p, lists alerts for a specific project and overrides the linked project. Pass the project name (the name shown in the dashboard and vercel project ls) or its ID, for example my-app or prj_abc123.

terminal
vercel alerts --project my-app

You can't combine --project with --all.

The --all option, shorthand -a, lists team-wide alerts instead of using the linked project.

terminal
vercel alerts --all

You must be in team scope to use --all.

The --type option filters by alert type. You can repeat the flag or pass comma-separated values.

terminal
vercel alerts --type usage_anomaly
vercel alerts --type custom_alert
vercel alerts --type usage_anomaly,error_anomaly
vercel alerts --type usage_anomaly --type error_anomaly

The --ai option prints AI investigation sections instead of the default table output.

This view includes the alert title, resolved time, summary, and key findings when that data is available.

terminal
vercel alerts --ai

The --since option sets the start of the time range. Use an ISO 8601 timestamp.

If you don't pass --since or --until, the command defaults to the last 24 hours.

terminal
vercel alerts --since 2026-03-01T00:00:00.000Z

The --until option sets the end of the time range. Use an ISO 8601 timestamp.

terminal
vercel alerts --since 2026-03-01T00:00:00.000Z --until 2026-03-02T00:00:00.000Z

--since must be earlier than --until.

The --limit option sets the maximum number of alert groups to return.

The supported range is 1 through 100.

terminal
vercel alerts --limit 25

The --format option supports json output for scripting and automation.

terminal
vercel alerts --format json

When you use --format json, the command returns a groups array with the alert group payload from the API.

List alerts for the linked project:

terminal
vercel alerts

List team-wide alerts:

terminal
vercel alerts --all

Filter by usage and error anomalies:

terminal
vercel alerts --type usage_anomaly --type error_anomaly

Print AI investigation summaries for a custom time range:

terminal
vercel alerts --ai --since 2026-03-01T00:00:00.000Z --until 2026-03-02T00:00:00.000Z

Export alerts as JSON:

terminal
vercel alerts --format json

Show details for a single alert group.

terminal
vercel alerts inspect <groupId>
NameDescription
groupIdRequired. ID of the alert group to inspect.
OptionDescription
--formatOutput format. Supports json.
-p, --projectProject name or ID to filter by, for example my-app or prj_abc123. Overrides the auto-detected linked project.
-a, --allUse team-wide scope. Ignores linked project auto-scoping.

Inspect a group in the linked project:

terminal
vercel alerts inspect grp_abc123

Inspect as JSON:

terminal
vercel alerts inspect grp_abc123 --format json

Use rule schemas, then create, list, update, or delete alert notification rules from the terminal. The command mirrors the rules surface in the dashboard's Alerts settings.

Use vercel alerts rules --help to see the rules command tree.

Rule IDs are returned by rules add and shown by rules ls. Use those IDs with rules inspect, rules update, and rules rm.

CommandAliasesDescription
rules lslistList alert rules for the current scope.
rules schemaNoneShow supported rule types, fields, and body examples.
rules addcreateCreate an alert rule from a JSON body file.
rules inspectgetShow one alert rule by ID.
rules rmremove, deleteDelete an alert rule.
rules updatepatchPatch an alert rule from a JSON body file.

List alert rules for the current scope.

Aliases: list.

terminal
vercel alerts rules ls
OptionDescription
-p, --projectProject name or ID, for example my-app or prj_abc123. Overrides the linked project. Requires team context.
-a, --allTeam-wide rules only. Omits the project filter and ignores the linked project.
--typeFilter by alert rule type. Repeatable and comma-separated, for example --type custom_alert or --type usage_anomaly,error_anomaly.
--formatOutput format. Supports json.
terminal
# List rules for the linked project
vercel alerts rules ls
 
# List team-wide rules
vercel alerts rules ls --all
 
# List rules for a specific project
vercel alerts rules ls --project my-app
 
# List custom alert rules
vercel alerts rules ls --type custom_alert
 
# List usage and error anomaly rules
vercel alerts rules ls --type usage_anomaly,error_anomaly
 
# JSON output
vercel alerts rules ls --format json

Show supported alert rule types. Pass --type to see one type's fields, allowed filter values, and body examples.

terminal
vercel alerts rules schema
OptionDescription
--typeRule type to describe. Supports usage_anomaly, error_anomaly, and custom_alert.
--formatOutput format. Supports json.
terminal
# Show the fields and examples for a built-in usage anomaly rule
vercel alerts rules schema --type usage_anomaly
 
# Show the fields and examples for a built-in error anomaly rule
vercel alerts rules schema --type error_anomaly
 
# Show the fields and examples for a custom alert rule
vercel alerts rules schema --type custom_alert
 
# Return a schema as JSON
vercel alerts rules schema --type custom_alert --format json

For custom alerts, run vercel metrics schema <metric-or-prefix> to discover metrics, aggregations, and dimensions. Public metric IDs use the vercel. namespace. The alert query uses the corresponding event and measure names in queryJsonString:

Public metricQuery eventQuery measure
vercel.request.countincomingRequestcount
vercel.function_invocation.countserverlessFunctionInvocationcount
vercel.external_api_request.countoutgoingRequestcount
vercel.sandbox.cpu_total_time_mssandboxUsagecpuTotalTimeMs

Create an alert rule from a JSON body file. Do not include id or teamId in the body; the API assigns them.

Aliases: create.

terminal
vercel alerts rules add --body ./rule.json
OptionDescription
--bodyPath to a JSON file containing the new rule.
-p, --projectProject name or ID. Supplies the project target when the body omits projectId.
-a, --allTeam-wide.
--formatOutput format. Supports json.

Create a JSON file for the rule body, then pass it with --body.

In the examples below, replace prj_123 with your project ID.

Rule-level filters use OData expressions, as shown in the projectId and filter fields below.

For built-in rules, pass --project or set projectId in the body to target a project. The CLI does not infer built-in rule targeting from the linked project.

usage-rule.json
{
  "name": "Production usage anomalies",
  "alertTypes": [{ "type": "usage_anomaly" }],
  "projectId": "projectId in ('prj_123')",
  "autosubscribeOwnersInKnock": true
}
terminal
vercel alerts rules add --body ./usage-rule.json

Create a built-in 4xx error anomaly rule by filtering the error_anomaly alert type:

4xx-error-rule.json
{
  "name": "Production 4xx error anomalies",
  "alertTypes": [
    {
      "type": "error_anomaly",
      "filter": "statusGroup eq '4xx'"
    }
  ],
  "projectId": "projectId in ('prj_123')"
}
terminal
vercel alerts rules add --body ./4xx-error-rule.json

Custom alert rules target one project. Set the raw project ID in projectId, pass --project, or run the command from a linked project.

The queryJsonString value is an escaped JSON string that describes the Observability query. Choose a descriptive name for each rollups key. For a ratio, formula.left and formula.right must reference those exact keys.

custom-threshold-rule.json
{
  "name": "Checkout error rate",
  "alertTypes": [{ "type": "custom_alert" }],
  "customAlert": {
    "queryJsonString": "{\"event\":\"incomingRequest\",\"rollups\":{\"errors\":{\"measure\":\"count\",\"aggregation\":\"sum\",\"filter\":\"httpStatus ge 500\"},\"requests\":{\"measure\":\"count\",\"aggregation\":\"sum\"}},\"granularity\":{\"hours\":1}}",
    "triggerType": "threshold",
    "triggerOperator": "gt",
    "triggerThreshold": 0.05,
    "formula": { "operator": "divide", "left": "errors", "right": "requests" },
    "minThreshold": 20
  }
}
terminal
vercel alerts rules add --body ./custom-threshold-rule.json

Create a custom anomaly rule for route-level edge request volume:

custom-anomaly-rule.json
{
  "name": "Edge request volume anomaly",
  "alertTypes": [{ "type": "custom_alert" }],
  "customAlert": {
    "queryJsonString": "{\"event\":\"incomingRequest\",\"rollups\":{\"requests\":{\"measure\":\"count\",\"aggregation\":\"sum\"}},\"groupBy\":[\"route\"],\"granularity\":{\"minutes\":5}}",
    "triggerType": "anomaly",
    "triggerOperator": "gt",
    "triggerThreshold": 3
  }
}
terminal
vercel alerts rules add --body ./custom-anomaly-rule.json

Show one alert rule by ID.

Aliases: get.

terminal
vercel alerts rules inspect <ruleId>
NameDescription
ruleIdRequired. ID of the rule to inspect.
OptionDescription
-p, --projectProject name or ID, for example my-app or prj_abc123.
-a, --allTeam-wide.
--formatOutput format. Supports json.
terminal
vercel alerts rules inspect ar_abc123
vercel alerts rules inspect ar_abc123 --format json

Delete an alert rule.

Aliases: remove, delete.

terminal
vercel alerts rules rm <ruleId>
NameDescription
ruleIdRequired. ID of the rule to delete.
OptionDescription
-p, --projectProject name or ID, for example my-app or prj_abc123.
-a, --allTeam-wide.
--formatOutput format. Supports json.
-y, --yesSkip the confirmation prompt.
terminal
# Delete with confirmation
vercel alerts rules rm ar_abc123
 
# Delete without prompt
vercel alerts rules rm ar_abc123 --yes
 
# Delete by using the delete alias
vercel alerts rules delete ar_abc123 --yes

Patch an alert rule from a JSON body file. Omitted fields remain unchanged. Set a supported optional field to null to clear it.

Aliases: patch.

terminal
vercel alerts rules update <ruleId> --body ./patch.json
NameDescription
ruleIdRequired. ID of the rule to update.
OptionDescription
--bodyPath to a partial JSON file with fields to update.
-p, --projectProject name or ID, for example my-app or prj_abc123.
-a, --allTeam-wide.
--formatOutput format. Supports json.

Save the fields you want to change in a JSON file:

rename-rule.json
{
  "name": "Production usage anomalies - critical",
  "autosubscribeOwnersInKnock": false
}
terminal
# Patch a rule
vercel alerts rules update ar_abc123 --body ./rename-rule.json
 
# Patch by using the patch alias
vercel alerts rules patch ar_abc123 --body ./rename-rule.json
 
# Patch and return JSON
vercel alerts rules update ar_abc123 --body ./rename-rule.json --format json
  • To learn how to configure and receive alerts, see Alerts.
  • If you want to automatically investigate alerts with AI, see Agent Investigation.

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

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

Last updated August 5, 2026

Was this helpful?

supported.