---
title: Errors
description: RFC 9457 problem+json error responses from the Verifycate API
group: Guides
---

# Errors

# Errors

Error responses use RFC 9457 problem details with media type `application/problem+json`.

## Problem body

| Field | Type | Description |
| --- | --- | --- |
| `type` | string (URI) | Optional URI for the error type. Often omitted; schema default is `about:blank`. |
| `title` | string | Short summary, typically the HTTP status text (for example `Bad Request`). |
| `status` | integer | HTTP status code. |
| `detail` | string | Human-readable explanation for this occurrence. |
| `code` | string | Machine-readable error code (for example `invalid_email`, `seat_required`). |
| `instance` | string (URI) | Optional URI identifying this occurrence. |
| `errors` | array | Optional field-level details (validation). |

Treat `code` and `status` as the stable signals for client logic. Do not rely on `type` URLs resolving to documentation pages.

### Example

```json
{
  "title": "Payment Required",
  "status": 402,
  "detail": "an active seat is required for this feature",
  "code": "seat_required"
}
```

### Validation example

```json
{
  "title": "Bad Request",
  "status": 400,
  "detail": "certificate name is required",
  "code": "name_required"
}
```

## Common status codes

| Status | When |
| --- | --- |
| `400` | Invalid input (bad UUID, missing name, invalid attributes) |
| `401` | Missing or invalid API key |
| `402` | Workspace has no active Pro seat (`seat_required`) |
| `403` | Insufficient role or API key scope (`missing_permission`) |
| `404` | Resource not found |
| `429` | Rate limit exceeded (`rate_limited`). See [Rate limits](/docs/api/rate-limits). |
| `500` | Unexpected server error (`internal_error`) |
