auto as the model, and routing picks the real model behind the scenes.
Base URL
Authentication
Every request requires a Manifest harness key:mnfst_.
Endpoints
The proxy translates between formats internally, so you can send an OpenAI-shaped request and Manifest will reshape it before forwarding to an Anthropic-only model. The reverse works too.
Chat completions
model rewritten to the actual model ID. All standard OpenAI fields (temperature, max_tokens, tools, tool_choice, response_format, stream, etc.) pass through.
Anthropic messages
Listing models
GET /v1/models returns the models your harness can reach, in OpenAI format. The first entry is always auto (routing); the rest are the real model IDs from your connected providers.
auto to let Manifest route, or send any listed model ID to skip routing and go straight to that provider. If you send a model ID that is not in this harness-specific list, Manifest returns M302: Model not available. See Routing → Route a specific model.
Inspect model capabilities
Add?capabilities=true to include known capability metadata for each concrete model. Without this query parameter, the response keeps the standard OpenAI model-list shape.
Capability fields are optional. A missing field means that support is unknown, not that the model does not support it. Manifest omits the entire
capabilities object when it has no known metadata for a model.
The synthetic auto model never includes capabilities because it can resolve to a different model for each request. Concrete model IDs remain directly routable exactly as listed, including IDs with the -subscription suffix.
Inspect model costs
Add?cost=true to include known token prices for each concrete model. Prices are in USD per million tokens. Without this query parameter, the response keeps the standard OpenAI model-list shape.
A zero value means the model has no per-token charge, as with some free or subscription-backed routes. If one price is unknown, Manifest omits only that field. If both prices are unknown, Manifest omits the entire
cost object.
The synthetic auto model never includes cost because its concrete model is selected for each request. To inspect both metadata types in one response, combine the query parameters: ?capabilities=true&cost=true.
Streaming
Set"stream": true to get an SSE stream back. The stream format matches the upstream protocol: OpenAI-style data: {...} chunks for /v1/chat/completions, Anthropic event blocks for /v1/messages.
Routing and fallback both work with streams. If the primary model fails before the first chunk, the request restarts on the fallback. If it fails mid-stream, the connection closes. There’s no silent mid-stream retry.
Errors
The proxy returns a standard JSON error envelope:
Status
424 is the only one that does not trigger a fallback. Manifest returns it itself when the chain is exhausted, so re-routing it would loop forever.
Rate limits
Self-hosted instances default to 100 requests per 60 seconds per harness. Override withTHROTTLE_TTL and THROTTLE_LIMIT (Environment variables).
Cloud rate limits are tied to your plan and shown in the dashboard.