> Documentation index: https://api.hlplanet.com/llms.txt. Every page is also available as Markdown by adding .md to its URL.

# Errors

Every error returns a non-2xx status and the same JSON shape:

```json
{
  "error": {
    "code": "unknown_keyboard",
    "message": "Unknown keyboard or size \"banana\". Use a size (100%, 98%, TKL, 75%, 65%, 60%) or one of these keyboards: …"
  }
}
```

| Status | code | When |
|---|---|---|
| 400 | `missing_parameter` | A required query parameter is missing |
| 400 | `invalid_parameter` | A parameter is out of range or not one of the allowed values |
| 400 | `unknown_keyboard` | An item is neither a size nor a known keyboard |
| 400 | `unknown_size` | The `size` filter is not a known size |
| 404 | `unknown_size`, `unknown_keyboard`, `unknown_key` | The path names something that doesn't exist |
| 404 | `not_found` | No such endpoint |
| 405 | `method_not_allowed` | Only `GET`, `HEAD` and `OPTIONS` are supported |

Messages are written for people and can change; match on `code`.
