# 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.
- [`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.
- [`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_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_id`](invalid_id.md) (400): The webhook URL's `id` is not 1–128 visible ASCII characters.
- [`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_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) (409): Too many new watches were created in the last hour.
- [`no_watches`](no_watches.md) (409): A test alert is a made-up spike on one of the account's watches, and the account has none yet.
- [`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.
- [`ping_link_limit_reached`](ping_link_limit_reached.md) (409): The account has a webhook URL for as many metrics as its watch limit.
- [`point_id_limit_reached`](point_id_limit_reached.md) (409): The account recorded as many point ids today (UTC) as its daily cap allows; the point was not stored.
- [`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.
- [`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_ping_link`](unknown_ping_link.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.
