Error format
Every error response has this shape:| Field | Type | Description |
|---|---|---|
code | string | Machine-readable error code for programmatic handling. |
message | string | Human-readable description of what went wrong. |
field | string | null | The request field that caused the error, when applicable. |
HTTP status codes
| Status | Meaning | When you’ll see it |
|---|---|---|
200 | OK | Successful read or update. |
201 | Created | Successfully created a new resource. |
204 | No Content | Successful delete. |
400 | Bad Request | Invalid request body, missing required field, or malformed parameter. |
401 | Unauthorized | Missing or invalid API token. |
403 | Forbidden | Valid token but insufficient permissions (e.g., no Pro subscription). |
404 | Not Found | The requested resource doesn’t exist or doesn’t belong to your account. |
409 | Conflict | Resource already exists (e.g., duplicate tag name). |
422 | Unprocessable Entity | Request is well-formed but semantically invalid (e.g., invalid URL). |
429 | Too Many Requests | Rate limit exceeded. See rate limits. |
500 | Internal Server Error | Something went wrong on our end. Retry with backoff. |
Error codes
| Code | Status | Description |
|---|---|---|
bad_request | 400 | Generic invalid request. |
validation_error | 400 | A specific field failed validation. Check field. |
unauthorized | 401 | Invalid or missing API token. |
forbidden | 403 | Pro subscription required, or resource not accessible. |
not_found | 404 | Resource not found or not owned by you. |
conflict | 409 | Resource already exists. |
unprocessable | 422 | Request is syntactically valid but can’t be processed. |
rate_limited | 429 | Too many requests. Check Retry-After header. |
internal_error | 500 | Server error. Retry with exponential backoff. |
Validation errors
When a specific field is invalid, thefield property tells you which one: