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

# Errors

> Every error has a status, a stable code and a plain-English message.

Errors look like this:

```json theme={null}
{
  "success": false,
  "error": {
    "code": "invalid_parameter",
    "message": "start_date must be a date written YYYY-MM-DD, for example 2026-09-01."
  }
}
```

Branch on `error.code`, which never changes. `error.message` is written for people and may be reworded.

| Status | `error.code`        | What to do                                                                       |
| ------ | ------------------- | -------------------------------------------------------------------------------- |
| 400    | `invalid_parameter` | Fix the parameter named in the message.                                          |
| 400    | `range_too_long`    | Ask for 90 days or fewer per `/stats` call.                                      |
| 401    | `missing_api_key`   | Send `Authorization: Bearer sonder_live_…`.                                      |
| 401    | `invalid_api_key`   | The key is malformed or unknown. Ask the author to check it or create a new one. |
| 401    | `api_key_revoked`   | The author revoked it. Mark the connection as disconnected.                      |
| 403    | `plan_inactive`     | The author's Sonder plan isn't active. Keep the connection; try again later.     |
| 404    | `not_found`         | No such endpoint, or the video doesn't belong to this author.                    |
| 429    | `rate_limited`      | Wait for the seconds in `Retry-After`. See [Rate limits](/rate-limits).          |
| 500    | `internal_error`    | Our fault. Retry with backoff; it's logged on our side.                          |

The one exception is [`POST /oauth/token`](/api-reference/connect/exchange-a-code-for-a-key), which uses OAuth 2.0's own error format so OAuth libraries understand it: `{ "error": "invalid_grant", "error_description": "…" }`.
