Problem types
Every error from the versioned customer API under /v1 is anapplication/problem+json body (RFC 7807) with type, title,status, detail and instance. The unversioned operationalGET /health/ready probe is the exception: its 503 response is plain JSON with dependency checks. When type is a URL under https://plotdr.ch/problems/, it is one of the types below, and the URL opens its page. Its title is the name of the type shown below, the same for every occurrence; the specifics are in detail. Branch on type andstatus, not on the text in title or detail.
| Type | Status | Meaning |
|---|---|---|
validation-error | 422 | Validation error |
quota-exceeded | 429 | Monthly check quota exceeded |
not-archived | 409 | Record not archived |
confirmation-mismatch | 409 | Confirmation does not match |
archived | 409 | Record archived |
Responses with type about:blank
Most errors use "type": "about:blank", the RFC 7807 default: the HTTP status anddetail say what went wrong, and no page here applies. Their title is the HTTP status phrase, such as Not Found. The most common ones:
| Status | Usual reason |
|---|---|
| 401 | No credentials, an unknown or revoked API key, or an Authorization header that is not a Bearer token. |
| 402 | A dds report requested on the Free plan. |
| 403 | The key's organization is not on the API Pro plan, or the endpoint is reserved for a signed-in admin. |
| 404 | The ID does not exist in your organization. |
| 413 | The request body is larger than 10 MB. |
| 422 | A few dashboard actions, such as removing your own account or opening an expired link. Every input-validation 422 is a validation-error instead. Details. |
| 429 | The per-minute rate limit. Wait for the number of seconds in the Retry-After header. Rate limits. |
| 500 | An unexpected error on PlotDR's side. Contact support with the response's X-Request-ID. |
| 503 | A batch or report could not be queued. Retry shortly. |
The getting-started guide explains the error format, and theAPI reference lists the responses of each endpoint.