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

# Errors

If the turn never starts, you get an **HTTP error**. If it starts and then fails, you get an `error` **event on the stream**.

HTTP body:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{ "error": { "code": "rate_limited", "message": "…" } }
```

On a stream `error` event, `retryable: true` means a model or provider blip — retrying is reasonable. `retryable: false` means the request was wrong — fix it.

| Code | HTTP | Meaning |
| - | - | - |
| `invalid_request` | 400, 422 | Bad body, or `context` sent on a continue turn. |
| `unauthorized` | 401 | Bad, expired, or revoked API key or client token. |
| `insufficient_credits` | 402 | No credits left. |
| `conversation_not_found` | 404 | Wrong id, or a token asking for a conversation it is not bound to. |
| `token_not_found` | 404 | Revoke was called for a token this vendor does not own. |
| `turn_conflict` | 409 | A turn is already running on this conversation. Wait for it to finish. |
| `rate_limited` | 429 | Per-token or per-vendor cap. Check `Retry-After`. |
| `model_unavailable` | 503 | All model providers unavailable. Retryable. |
| `service_unavailable` | 503 | Token store is temporarily unavailable. Retry. |
| `internal` | 500 | Server error. |

See [rate limits](/conversations/rate-limits) for `429` caps, and [client tokens](/conversations/client-tokens) for `401` / `404` on tokens.


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