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

# Errors

> Every myAbode Deals API error is an RFC 9457 problem-details response with a stable code and a request ID. The full list of error codes and how to handle each.

Every error from the myAbode Deals API has the same shape, served as `application/problem+json` ([RFC 9457](https://www.rfc-editor.org/rfc/rfc9457)):

```json theme={null}
{
  "type": "https://api.myabode.ca/errors/API_KEY_REQUIRED",
  "title": "Unauthorized",
  "status": 401,
  "detail": "An API key is required. Send it as: Authorization: Bearer mya_…",
  "code": "API_KEY_REQUIRED",
  "request_id": "req_d3049ebd18701f2934d81bffcc9809c0"
}
```

* **Branch on `code`.** It is stable. `detail` is for people and may change.
* **Keep the `request_id`.** Include it when you contact support and we can find the exact request.
* **Validation errors list each problem** in `errors[]`, with a JSON Pointer to the rejected value.

## Error codes

| Status | Code | What it means | What to do |
| - | - | - | - |
| 400 | `VALIDATION_ERROR` | A parameter is invalid: a filter, a page size or an ID | Fix the values named in `errors[]` |
| 400 | `INVALID_CURSOR` | The cursor can't be read, or was sent with a different `sort` | Drop the cursor and start from the first page |
| 401 | `API_KEY_REQUIRED` | No `Authorization: Bearer` header | Send your key |
| 401 | `API_KEY_INVALID` | The key is unknown, revoked or expired | Check the key, or create a new one |
| 403 | `INSUFFICIENT_SCOPE` | The key doesn't hold the scope this endpoint needs | Create a key with the right [scope](https://docs.myabode.ca/api/authentication.md#scopes) |
| 404 | `NOT_FOUND` | No such resource, or one your key has the scope for but can't read | Check the ID and your key's access |
| 410 | `CURSOR_EXPIRED` | An event-feed cursor is too old to read | Restart the [event feed](https://docs.myabode.ca/api/events.md#when-a-cursor-expires) from `start=latest` |
| 429 | `RATE_LIMITED` | Too many requests this minute | Wait for `Retry-After` seconds. See [Rate limits](https://docs.myabode.ca/api/rate-limits.md) |

A key with the right scope that can't read a resource gets `404`, not `403`, so a key can't learn whether a deal exists in another brokerage. A missing scope is always `403 INSUFFICIENT_SCOPE`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.