# Error codes

Every error is an RFC 9457 problem with a stable `code`; its `type` links the page below.

- [`account_rule_limit_reached`](account_rule_limit_reached.md) (409): The account has the maximum number of rules set by you.
- [`alert_closed`](alert_closed.md) (409): `expected_change` needs an open alert: the check accepts the new level as a new normal while the alert runs.
- [`alert_not_found`](alert_not_found.md) (404): No alert with this id in this account.
- [`body_too_large`](body_too_large.md) (413): The body is over 2 MB.
- [`channel_not_in_plan`](channel_not_in_plan.md) (403): The plan does not include this alert channel.
- [`destination_limit_reached`](destination_limit_reached.md) (409): The plan's number of alert destinations is reached.
- [`destination_not_active`](destination_not_active.md) (409): The destination is pending, paused or off, so it gets no test alert.
- [`destination_not_found`](destination_not_found.md) (404): No destination with this id in this account.
- [`destination_off`](destination_off.md) (409): The destination is off, so verify sends nothing.
- [`duplicate_rule`](duplicate_rule.md) (409): A rule with the same scope, direction and hours already exists.
- [`email_destination_exists`](email_destination_exists.md) (409): The account already has an email destination (there is one owner address).
- [`email_send_failed`](email_send_failed.md) (502): The e-mail could not be sent just now.
- [`email_unavailable`](email_unavailable.md) (503): Alert e-mail is not available in this environment yet (no sending domain).
- [`event_limit_reached`](event_limit_reached.md) (409): The account stores the most known events it may.
- [`event_not_found`](event_not_found.md) (404): No event with this id in this account, or it is over.
- [`event_started`](event_started.md) (409): This level change has started: the checks already learned from it.
- [`feedback_final`](feedback_final.md) (409): The alert was closed as an expected change; its new level became the new normal.
- [`feedback_window_closed`](feedback_window_closed.md) (409): Feedback can change until 30 days after the alert ends.
- [`forbidden`](forbidden.md) (403): This API key may not do this.
- [`group_in_use`](group_in_use.md) (409): A destination takes this group, so it cannot be deleted.
- [`group_limit_reached`](group_limit_reached.md) (409): The account has as many groups as its plan allows.
- [`group_not_found`](group_not_found.md) (404): No group with this id in this account.
- [`idempotency_key_conflict`](idempotency_key_conflict.md) (400): `Idempotency-Key` and `Batch-Id` are both sent and differ.
- [`idempotency_key_reused`](idempotency_key_reused.md) (409): This `Idempotency-Key` was already used with a different body (kept 24 hours on ingest; as long as the event on `POST /v1/events`).
- [`import_not_found`](import_not_found.md) (404): No import with this id in this account.
- [`import_too_large`](import_too_large.md) (400): The import is over its size limits (watch-days, or stored days touched across its watches).
- [`internal`](internal.md) (500): CountWatch failed while handling the request.
- [`invalid_cursor`](invalid_cursor.md) (400): The `cursor` was not issued by this list.
- [`invalid_delivery_id`](invalid_delivery_id.md) (400): The webhook URL's `id` is not 1–128 visible ASCII characters.
- [`invalid_dimensions`](invalid_dimensions.md) (400): A dimension in the query string is not valid.
- [`invalid_event`](invalid_event.md) (400): The event is not valid.
- [`invalid_group`](invalid_group.md) (400): The group is not valid.
- [`invalid_idempotency_key`](invalid_idempotency_key.md) (400): The `Idempotency-Key` is not 1–64 visible ASCII characters.
- [`invalid_import`](invalid_import.md) (400): An import entry is not valid; nothing was imported.
- [`invalid_json`](invalid_json.md) (400): The body is not valid JSON.
- [`invalid_mute`](invalid_mute.md) (400): `muted_until` is not a time in the next 7 days.
- [`invalid_n`](invalid_n.md) (400): `n` is not a whole number from 1 to 1,000,000.
- [`invalid_points`](invalid_points.md) (400): No point in the request was valid.
- [`invalid_query`](invalid_query.md) (400): A query parameter is repeated or not valid.
- [`invalid_range`](invalid_range.md) (400): `from` or `to` is not a valid time, or `from` is not before `to`.
- [`invalid_rate_rule`](invalid_rate_rule.md) (400): The rate rule is not valid.
- [`invalid_request`](invalid_request.md) (400): The body or a parameter does not match the operation's schema.
- [`invalid_routing_key`](invalid_routing_key.md) (400): The PagerDuty routing key is not valid.
- [`invalid_rule`](invalid_rule.md) (400): The rule is not valid.
- [`invalid_since`](invalid_since.md) (400): `since` is not a valid time.
- [`invalid_source`](invalid_source.md) (400): `source` is neither `explicit` nor `push`.
- [`invalid_url`](invalid_url.md) (400): The destination URL is not allowed.
- [`method_not_allowed`](method_not_allowed.md) (405): This path does not take this method.
- [`metric_not_found`](metric_not_found.md) (404): No watch of this account has this metric.
- [`metric_watch_limit_reached`](metric_watch_limit_reached.md) (409): This metric has as many watches as allowed.
- [`new_watch_rate_limited`](new_watch_rate_limited.md) (429): Too many new watches were created in the last hour. A webhook URL hit answers 429 with Retry-After; in an ingest or import answer (200 or 202) it is the reason one point or entry was rejected.
- [`not_a_change_alert`](not_a_change_alert.md) (409): `expected_change` applies to spike and drop alerts only.
- [`not_for_this_kind`](not_for_this_kind.md) (400): This field does not belong to this destination kind.
- [`not_found`](not_found.md) (404): No operation has this method and path.
- [`nothing_stored`](nothing_stored.md) (409): No watch of the import could be stored.
- [`owner_email_missing`](owner_email_missing.md) (409): Alert e-mail goes only to the owner's signed-in address, and this account has none.
- [`owner_turned_off`](owner_turned_off.md) (409): The owner turned alert e-mails off from the link in an e-mail; the API cannot turn them on or mail another confirm link.
- [`point_id_limit_reached`](point_id_limit_reached.md) (429): The account recorded as many point ids today (UTC) as its daily cap allows; the point was not stored. A webhook URL hit answers 429 with Retry-After (until midnight UTC); in an ingest answer it is the reason one point was rejected.
- [`range_too_long`](range_too_long.md) (400): The range is longer than this resolution allows.
- [`rate_limited`](rate_limited.md) (429): Too many requests per second.
- [`rate_rule_exists`](rate_rule_exists.md) (409): The group has a rate rule of this kind for this dimension value.
- [`rate_rule_limit_reached`](rate_rule_limit_reached.md) (409): The group has as many rate rules as it may hold.
- [`rate_rule_not_found`](rate_rule_not_found.md) (404): No rate rule with this id on this group.
- [`request_limit_reached`](request_limit_reached.md) (429): The plan's monthly request limit is reached.
- [`rule_limit_reached`](rule_limit_reached.md) (409): This metric or watch has as many rules set by you as the plan allows.
- [`rule_not_found`](rule_not_found.md) (404): No rule with this id in this account.
- [`store_busy`](store_busy.md) (503): Your account is busy for a moment.
- [`test_alert`](test_alert.md) (409): A test alert takes no feedback: feedback tunes the rules, and its spike was made up.
- [`token_limit_reached`](token_limit_reached.md) (409): The account has the maximum number of API keys.
- [`token_not_found`](token_not_found.md) (404): No API key with this id in this account.
- [`too_many_points`](too_many_points.md) (400): The request has more than 10,000 points.
- [`too_many_watches`](too_many_watches.md) (400): The import has more than 1,000 watches.
- [`ts_unit`](ts_unit.md) (400): A time looks like Unix seconds.
- [`unauthorized`](unauthorized.md) (401): The request has no valid API key.
- [`unknown_webhook_url`](unknown_webhook_url.md) (404): This webhook URL does not exist or was rotated.
- [`verification_failed`](verification_failed.md) (422): The endpoint did not answer 2xx with the challenge within 3 seconds.
- [`verify_limit_reached`](verify_limit_reached.md) (429): This destination, or this account, had as many verify attempts as allowed (5 per destination per hour, 20 per account per day).
- [`watch_limit_reached`](watch_limit_reached.md) (409): The account has as many watches as its plan allows; the point would create a new one.
- [`watch_not_found`](watch_not_found.md) (404): No watch with this id in this account.
- [`webhook_url_limit_reached`](webhook_url_limit_reached.md) (409): The account has a webhook URL for as many metrics as its watch limit.
