Skip to main content
When Manifest blocks or rejects a request, the response message starts with a code in square brackets:
Look up the code below to see what it means and how to fix it. Except where a section says otherwise, chat and streaming clients receive these codes as an HTTP 200 assistant message carrying the error text, and the HTTP status codes named below apply to non-chat clients (SDKs and tools).

Authentication (M001–M005)

These fire when the bearer token on /v1/chat/completions is missing or wrong. They surface as HTTP 401 to non-chat clients.

Providers (M100–M102)

Your Manifest key is fine, but provider credentials are missing or unusable. See Routing, API key providers, and Subscription-based providers.

Limits (M200–M204)

You hit a usage cap, rate limit, or Free plan request quota. M200 comes back as an HTTP 200 assistant message for every client: the text rides in the assistant content, not in the HTTP status. M201-M203 surface as HTTP 429 for every client. M204 surfaces as HTTP 402 to non-chat clients because it is a billing plan restriction.

Request validation and model selection (M300–M303)

M300 means the request body is malformed and surfaces as HTTP 400. M302 and M303 mean Manifest can’t reach the model the request asked for. M302 comes back as an HTTP 200 assistant message for every client. M303 surfaces as HTTP 400 to non-chat clients.
M301 is missing from that list on purpose. It capped requests at 1000 messages, and the cap was removed. If an older self-hosted build still returns it, upgrade and the limit goes away.

Server (M500)

Manifest itself broke. Surfaces as HTTP 500.