API v2 problem types
Every v2 failure answers RFC 9457 application/problem+json carrying a stable code. Branch on code, never on the prose. Each row below is the page a document's type URI resolves to.
| Code | Status | Meaning |
|---|---|---|
contact_already_confirmed | 409 | This contact is already confirmed. |
contact_type_not_creatable | 422 | Contacts of this type can no longer be created. |
credential_write_only | 422 | The read sentinel cannot be sent as a credential value. |
duplicate_contact | 409 | A contact with this type, address, gateway and alert delay already exists. |
duplicate_monitor | 409 | A monitor with this url and type already exists on this account. |
duplicate_resource | 409 | A resource with this key already exists on this account. |
filter_required | 422 | This operation refuses to run without an explicit filter. |
idempotency_key_conflict | 409 | This idempotency key is already in use for a different request. |
idempotency_key_required | 400 | This operation requires an Idempotency-Key header. |
insufficient_agents | 422 | Not enough monitoring locations match the requested selection. |
insufficient_balance | 402 | The account balance is too low to deliver this message. |
insufficient_rights | 403 | The subaccount does not hold the rights this operation requires. |
internal_error | 500 | The request failed because of an unexpected server error. |
interval_below_type_floor | 422 | The requested check interval is below this monitor type's floor. |
invalid_alert_delay | 422 | The requested alert delay is not one of the supported values. |
invalid_confirmation_code | 422 | The confirmation code is not valid. |
invalid_cursor | 422 | The pagination cursor is not valid. |
invalid_interval | 422 | The requested check interval is not allowed for this account. |
invalid_limit | 422 | The requested page size is outside the allowed range. |
invalid_range | 422 | The requested time range is not valid. |
invalid_settings | 422 | A value inside settings is not valid for this monitor type. |
invalid_token | 401 | The access token is missing, malformed or expired. |
invalid_url | 422 | The url is not usable for this check. |
ip_not_allowed | 403 | The caller's IP address is not on this token's allow-list. |
job_not_cancellable | 409 | This job has already reached a terminal state. |
job_not_resumable | 409 | This job cannot be resumed. |
malformed_request | 400 | The request could not be parsed. |
method_not_allowed | 405 | This method is not allowed on this resource. |
missing_scope | 403 | The token does not carry the scope this operation requires. |
monitor_type_discontinued | 422 | This monitor type is discontinued. |
not_found | 404 | The requested resource does not exist. |
package_interval_conflict | 403 | No check interval satisfies both this monitor type and the account's plan. |
package_limit | 403 | The account's package does not allow this operation. |
payload_too_large | 413 | The request payload is larger than this endpoint accepts. |
quota_exceeded | 429 | The account's API quota for this scope is exhausted. |
rate_limited | 429 | Too many requests - slow down. |
selection_mismatch | 409 | The selection changed since it was reported. |
service_unavailable | 503 | The service is temporarily unavailable. |
too_many_items | 422 | The request carries more items than this operation accepts. |
type_immutable | 422 | This resource's type cannot be changed after creation. |
unknown_contact_ref | 422 | A subscription references a contact ref that no contacts[] item declares. |
unknown_enum_value | 422 | The value is not one this field accepts. |
unknown_event_type | 422 | The webhook declares an event type outside the published catalogue. |
unknown_expand | 422 | The request asked to expand a value this endpoint does not offer. |
unknown_field | 422 | The request asked for a field this row does not publish. |
unknown_parameter | 422 | The request carries a query parameter this endpoint does not define. |
unknown_pool | 422 | The requested agent pool does not exist. |
unsupported_media_type | 415 | The request's media type is not one this endpoint reads. |
unsupported_report_channel | 422 | Reports cannot be delivered to a contact of this type. |
upstream_error | 502 | A service this request depends on failed. |
url_blacklisted | 403 | This url is not accepted for monitoring. |
validation_failed | 422 | The request body or query is not valid. |
52 registered types. A code that is not on this list can never reach the wire.