> ## Documentation Index
> Fetch the complete documentation index at: https://help.skillsdb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Error Catalogue

> Every error type the SkillsDB REST API can return, and exactly what to do about each

<Info>
  **Quick Summary:** Every REST API error is an [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) problem+json body. Its `type` field is a URL that resolves to a page in this catalogue telling you what happened and what to do.
</Info>

Every error response has `Content-Type: application/problem+json` and this shape:

```json theme={null}
{
  "type": "https://help.skillsdb.com/api-docs/errors/validation-error",
  "title": "Validation failed",
  "status": 400,
  "detail": "limit must be at most 200",
  "instance": "/api/v1/careers",
  "requestId": "01a01ed7-a41b-7183-a017-be375fd23874",
  "errors": [{ "field": "limit", "code": "out_of_range", "message": "..." }]
}
```

Always log the `requestId` — it is the one string SkillsDB support can trace a request by. Some errors carry extra fields (extension members), documented on their pages.

| Type                                                              | Status | When                                                  |
| ----------------------------------------------------------------- | ------ | ----------------------------------------------------- |
| [validation-error](/api-docs/errors/validation-error)             | 400    | The request itself is malformed                       |
| [invalid-credential](/api-docs/errors/invalid-credential)         | 401    | The API key is missing, wrong, expired or revoked     |
| [insufficient-scope](/api-docs/errors/insufficient-scope)         | 403    | The key or its acting person lacks the permission     |
| [not-found](/api-docs/errors/not-found)                           | 404    | No such resource in your company                      |
| [method-not-allowed](/api-docs/errors/method-not-allowed)         | 405    | The path exists, but not for this HTTP method         |
| [conflict](/api-docs/errors/conflict)                             | 409    | The current state of the resource refuses the request |
| [idempotency-key-reused](/api-docs/errors/idempotency-key-reused) | 409    | Same Idempotency-Key, different content               |
| [version-gone](/api-docs/errors/version-gone)                     | 410    | The API version was sunset                            |
| [unprocessable](/api-docs/errors/unprocessable)                   | 422    | Well-formed, but rejected by a business rule          |
| [rate-limit-exceeded](/api-docs/errors/rate-limit-exceeded)       | 429    | Over the hourly allowance                             |
| [internal-error](/api-docs/errors/internal-error)                 | 500    | Our fault — quote the requestId to support            |
