# Manifest ## Docs - [CLAUDE](https://manifest.build/docs/CLAUDE.md) - [Manifest error codes](https://manifest.build/docs/errors.md): Reference for every Manifest proxy error code (M001-M500). What you saw, why it happened, and how to fix it. Covers auth, providers, limits, validation. - [M001: Missing Authorization header](https://manifest.build/docs/errors/M001.md): Manifest error M001 fires when /v1/chat/completions is called without an Authorization header. Returns HTTP 401. Fix: send `Authorization: Bearer mnfst_`. - [M002: Empty Bearer token](https://manifest.build/docs/errors/M002.md): Manifest error M002 fires when the Authorization header is set but the Bearer token is blank. Often an unexpanded env var. Returns HTTP 401. - [M003: Invalid key format](https://manifest.build/docs/errors/M003.md): Manifest error M003 fires when the Bearer token doesn't start with mnfst_. Often a provider key (sk-...) pasted in the wrong field. Returns HTTP 401. - [M004: Key expired](https://manifest.build/docs/errors/M004.md): Manifest error M004 fires when the API key you sent is past its expiration date. Returns HTTP 401. Fix: rotate the key in the dashboard. - [M005: Key not recognized](https://manifest.build/docs/errors/M005.md): Manifest error M005 fires when the mnfst_ key has the right shape but no matching agent exists. Often a rotated or deleted key. Returns HTTP 401. - [M100: Provider API key missing](https://manifest.build/docs/errors/M100.md): Manifest error M100 fires when routing picks a provider that has no API key for this agent (OpenAI, Anthropic, Gemini, OpenRouter, etc). Fix: add the key in Routing. - [M101: No providers configured](https://manifest.build/docs/errors/M101.md): Manifest error M101 fires when an authenticated agent has zero providers connected. Common on first run. Fix: connect a provider on the Routing page. - [M200: Usage limit exceeded](https://manifest.build/docs/errors/M200.md): Manifest error M200 fires when an agent crosses a cost or message-count cap you configured. Returns HTTP 429. Fix: raise the threshold or wait for the period to reset. - [M201: Per-user rate limit exceeded](https://manifest.build/docs/errors/M201.md): Manifest error M201 fires when one user sends more than 200 requests per minute. Returns HTTP 429. Fix: back off, retry, or raise the cap on self-hosted. - [M202: Per-IP rate limit exceeded](https://manifest.build/docs/errors/M202.md): Manifest error M202 fires when one IP sends more than 500 requests per minute across all agents. Returns HTTP 429. Fix: stagger workers or raise the IP cap. - [M203: Concurrency limit exceeded](https://manifest.build/docs/errors/M203.md): Manifest error M203 fires when an agent has more than 10 in-flight requests. Returns HTTP 429. Common with parallel streaming. Fix: reduce parallelism. - [M300: Missing messages array](https://manifest.build/docs/errors/M300.md): Manifest error M300 fires when the /v1/chat/completions body has no messages array (missing, not an array, or empty). Returns HTTP 400. - [M301: Messages array too long](https://manifest.build/docs/errors/M301.md): Manifest error M301 fires when a request has more than 1000 messages. Returns HTTP 400. Fix: trim conversation history or summarize older turns. - [M500: Internal server error](https://manifest.build/docs/errors/M500.md): Manifest error M500 is a generic 500 fallback for unhandled errors in the proxy. Usually transient. Fix: retry, then check backend logs on self-hosted. - [Fallback](https://manifest.build/docs/fallback.md): Set up a fallback chain so a provider outage or rate limit returns a working response instead of an error. - [Manifest documentation](https://manifest.build/docs/introduction.md): Open-source LLM router for agents. Sends each query to the cheapest model that can handle it, often saving up to 70% on inference costs. - [API key providers](https://manifest.build/docs/providers/api-key-providers.md): Bring your own API key for OpenAI, Anthropic, Google, xAI, DeepSeek, Mistral, Qwen, Moonshot, MiniMax, Z.ai, or OpenRouter. - [Custom providers](https://manifest.build/docs/providers/custom-providers.md): Plug in any OpenAI- or Anthropic-compatible endpoint, including vLLM, TGI, LocalAI, or your own internal service. - [Local models](https://manifest.build/docs/providers/local-models.md): Run any GGUF model on your own hardware with Ollama, LM Studio, or llama.cpp. No API costs, no data leaving your machine. - [Subscription-based providers](https://manifest.build/docs/providers/subscription-based-providers.md): Reuse a paid plan you already have: ChatGPT Plus, Claude Max, GitHub Copilot, GLM Coding Plan, MiniMax, OpenCode Go, or Ollama Cloud. - [API](https://manifest.build/docs/reference/api.md): The Manifest proxy speaks both OpenAI and Anthropic. Endpoints, auth, streaming, and error responses. - [Environment variables](https://manifest.build/docs/reference/environment-variables.md): Every environment variable Manifest reads at startup, grouped by what it controls: database, auth, rate limiting, email, OAuth, telemetry. - [Glossary](https://manifest.build/docs/reference/glossary.md): Definitions for agent, tier, specificity, momentum, fallback chain, manifest/auto, scoring, and confidence. - [Headers](https://manifest.build/docs/reference/headers.md): Every x-manifest-* request header and X-Manifest-* response header, with what each one does. - [Routing](https://manifest.build/docs/routing.md): How Manifest scores each prompt across 23 dimensions, then sends it to the cheapest model that can handle it. - [Self-hosted](https://manifest.build/docs/self-hosted.md): Run Manifest on your own machine with Docker. Covers the quick installer, docker-compose, bringing your own PostgreSQL, signed images, and telemetry opt-out. - [Set limits](https://manifest.build/docs/set-limits.md): Email alerts and 429 hard caps on token or cost spending, set per agent and per period.