# Errors
URL: /api/errors

Error response shape and the full list of error codes.



Every error response follows the same shape:

```json
{
  "error": {
    "code": "collection_not_found",
    "message": "collection `products` not found"
  }
}
```

## Codes [#codes]

| Code                   | HTTP status | Meaning                                                                             |
| ---------------------- | ----------- | ----------------------------------------------------------------------------------- |
| `collection_exists`    | 409         | A collection with that name already exists                                          |
| `collection_not_found` | 404         | No collection with that name                                                        |
| `document_not_found`   | 404         | No document with that id                                                            |
| `invalid_schema`       | 400         | Malformed or invalid collection schema                                              |
| `invalid_document`     | 400         | Document failed validation against the schema                                       |
| `invalid_query`        | 400         | Malformed filter/sort/facet expression, or a field used that wasn't declared for it |
| `unauthorized`         | 401         | Missing API key on a route that requires one                                        |
| `forbidden`            | 403         | Search key used on a write route, or a key that doesn't match                       |
| `corrupt_data`         | 500         | On-disk data failed integrity checks                                                |
| `io_error`             | 500         | Underlying filesystem I/O error                                                     |
| `invalid_json`         | 400         | Request body was not valid JSON                                                     |
| `internal_error`       | 500         | Unclassified server error                                                           |
