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

# Errors

> Status codes MESO returns and what to do about each.

Errors always carry the failure envelope:

```json theme={null}
{ "success": false, "error": "Unauthorized" }
```

| Status | Meaning | Action |
| - | - | - |
| `400` | Malformed body or a missing required field | Fix the request; do not retry unchanged |
| `401` | Missing header, or a token that does not resolve to a user | Refresh the token and retry once |
| `403` | Authenticated, but the caller does not own the target rows | Do not retry |
| `404` | Unknown capability path | Check the endpoint name |
| `429` | Rate limited | Back off exponentially |
| `500` | Server or configuration fault | Retry with backoff; report if persistent |
| `504` | Upstream model timed out | Retry; consider `mode: "fast"` on planning calls |

## Failures surface

Planning capabilities have **no silent provider fallback**. If the configured
backend fails, the request fails and you see it. This is deliberate — a quietly
downgraded plan is worse than an error.

## Timeouts

Generation is slow by nature. `detailed` mode runs a multi-agent flow and can
take substantially longer than `fast`. Set client timeouts generously — a
minute or more — rather than retrying a request that is still running.


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