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.
# 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.000ZUsing 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.
vercel alerts --project my-appYou can't combine --project with --all.
The --all option, shorthand -a, lists team-wide alerts instead of using the linked project.
vercel alerts --allYou 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.
vercel alerts --type usage_anomaly
vercel alerts --type custom_alert
vercel alerts --type usage_anomaly,error_anomaly
vercel alerts --type usage_anomaly --type error_anomalyThe --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.
vercel alerts --aiThe --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.
vercel alerts --since 2026-03-01T00:00:00.000ZThe --until option sets the end of the time range. Use an ISO 8601 timestamp.
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.
vercel alerts --limit 25The --format option supports json output for scripting and automation.
vercel alerts --format jsonWhen you use --format json, the command returns a groups array with the alert group payload from the API.
List alerts for the linked project:
vercel alertsList team-wide alerts:
vercel alerts --allFilter by usage and error anomalies:
vercel alerts --type usage_anomaly --type error_anomalyPrint AI investigation summaries for a custom time range:
vercel alerts --ai --since 2026-03-01T00:00:00.000Z --until 2026-03-02T00:00:00.000ZExport alerts as JSON:
vercel alerts --format jsonShow details for a single alert group.
vercel alerts inspect <groupId>| Name | Description |
|---|---|
groupId | Required. ID of the alert group to inspect. |
| Option | Description |
|---|---|
--format | Output format. Supports json. |
-p, --project | Project name or ID to filter by, for example my-app or prj_abc123. Overrides the auto-detected linked project. |
-a, --all | Use team-wide scope. Ignores linked project auto-scoping. |
Inspect a group in the linked project:
vercel alerts inspect grp_abc123Inspect as JSON:
vercel alerts inspect grp_abc123 --format jsonUse 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.
| Command | Aliases | Description |
|---|---|---|
rules ls | list | List alert rules for the current scope. |
rules schema | None | Show supported rule types, fields, and body examples. |
rules add | create | Create an alert rule from a JSON body file. |
rules inspect | get | Show one alert rule by ID. |
rules rm | remove, delete | Delete an alert rule. |
rules update | patch | Patch an alert rule from a JSON body file. |
List alert rules for the current scope.
Aliases: list.
vercel alerts rules ls| Option | Description |
|---|---|
-p, --project | Project name or ID, for example my-app or prj_abc123. Overrides the linked project. Requires team context. |
-a, --all | Team-wide rules only. Omits the project filter and ignores the linked project. |
--type | Filter by alert rule type. Repeatable and comma-separated, for example --type custom_alert or --type usage_anomaly,error_anomaly. |
--format | Output format. Supports json. |
# 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 jsonShow supported alert rule types. Pass --type to see one type's fields, allowed filter values, and body examples.
vercel alerts rules schema| Option | Description |
|---|---|
--type | Rule type to describe. Supports usage_anomaly, error_anomaly, and custom_alert. |
--format | Output format. Supports json. |
# 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 jsonFor 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 metric | Query event | Query measure |
|---|---|---|
vercel.request.count | incomingRequest | count |
vercel.function_invocation.count | serverlessFunctionInvocation | count |
vercel.external_api_request.count | outgoingRequest | count |
vercel.sandbox.cpu_total_time_ms | sandboxUsage | cpuTotalTimeMs |
Create an alert rule from a JSON body file. Do not include id or teamId in the body; the API assigns them.
Aliases: create.
vercel alerts rules add --body ./rule.json| Option | Description |
|---|---|
--body | Path to a JSON file containing the new rule. |
-p, --project | Project name or ID. Supplies the project target when the body omits projectId. |
-a, --all | Team-wide. |
--format | Output 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.
{
"name": "Production usage anomalies",
"alertTypes": [{ "type": "usage_anomaly" }],
"projectId": "projectId in ('prj_123')",
"autosubscribeOwnersInKnock": true
}vercel alerts rules add --body ./usage-rule.jsonCreate a built-in 4xx error anomaly rule by filtering the error_anomaly alert type:
{
"name": "Production 4xx error anomalies",
"alertTypes": [
{
"type": "error_anomaly",
"filter": "statusGroup eq '4xx'"
}
],
"projectId": "projectId in ('prj_123')"
}vercel alerts rules add --body ./4xx-error-rule.jsonCustom 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.
{
"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
}
}vercel alerts rules add --body ./custom-threshold-rule.jsonCreate a custom anomaly rule for route-level edge request volume:
{
"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
}
}vercel alerts rules add --body ./custom-anomaly-rule.jsonShow one alert rule by ID.
Aliases: get.
vercel alerts rules inspect <ruleId>| Name | Description |
|---|---|
ruleId | Required. ID of the rule to inspect. |
| Option | Description |
|---|---|
-p, --project | Project name or ID, for example my-app or prj_abc123. |
-a, --all | Team-wide. |
--format | Output format. Supports json. |
vercel alerts rules inspect ar_abc123
vercel alerts rules inspect ar_abc123 --format jsonDelete an alert rule.
Aliases: remove, delete.
vercel alerts rules rm <ruleId>| Name | Description |
|---|---|
ruleId | Required. ID of the rule to delete. |
| Option | Description |
|---|---|
-p, --project | Project name or ID, for example my-app or prj_abc123. |
-a, --all | Team-wide. |
--format | Output format. Supports json. |
-y, --yes | Skip the confirmation prompt. |
# 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 --yesPatch an alert rule from a JSON body file. Omitted fields remain unchanged. Set a supported optional field to null to clear it.
Aliases: patch.
vercel alerts rules update <ruleId> --body ./patch.json| Name | Description |
|---|---|
ruleId | Required. ID of the rule to update. |
| Option | Description |
|---|---|
--body | Path to a partial JSON file with fields to update. |
-p, --project | Project name or ID, for example my-app or prj_abc123. |
-a, --all | Team-wide. |
--format | Output format. Supports json. |
Save the fields you want to change in a JSON file:
{
"name": "Production usage anomalies - critical",
"autosubscribeOwnersInKnock": false
}# 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:
--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?