Skip to main content

Documentation Index

Fetch the complete documentation index at: https://manifest.build/docs/llms.txt

Use this file to discover all available pages before exploring further.

Manifest reads two request headers to override routing decisions, and returns a set of X-Manifest-* response headers so clients can see what happened without parsing the response body.

Request headers

HeaderValueEffect
AuthorizationBearer mnfst_<key>Required. Authenticates the agent.
Content-Typeapplication/jsonRequired.
x-manifest-tiersimple | standard | complex | reasoningForce the routing tier. Skips scoring.
x-manifest-specificitycoding | web_browsing | data_analysis | image_generation | video_generation | social_media | email_management | calendar_management | tradingForce the task-specific routing category. Skips detection. Confidence is 1.0.
anthropic-version2023-06-01Required for /v1/messages. Forwarded to the upstream.
Header overrides are useful when your agent already knows the task type and doesn’t need Manifest to re-detect it.

Response headers (every request)

HeaderDescriptionExample
X-Manifest-TierAssigned complexity tiercomplex
X-Manifest-ModelModel that actually served the responseclaude-sonnet-4-6
X-Manifest-ProviderUpstream provideranthropic
X-Manifest-ConfidenceScoring confidence (0–1)0.87
X-Manifest-ReasonWhy the tier was pickedkeyword: "prove" → reasoning
X-Manifest-SpecificityDetected specificity category (only set when one was assigned)coding

Response headers (fallback only)

When the primary model fails and Manifest succeeds on a fallback, two extra headers are added:
HeaderDescriptionExample
X-Manifest-Fallback-FromThe primary model that was attempted firstgpt-5
X-Manifest-Fallback-IndexPosition in the fallback chain (0 = first fallback)0
When every model in the chain fails:
HeaderDescription
X-Manifest-Fallback-ExhaustedSet to true. Response status is 424.

Reading headers in code

const response = await fetch("http://localhost:2099/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.MANIFEST_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "manifest/auto",
    messages: [{ role: "user", content: "Hello" }],
  }),
});

console.log(response.headers.get("x-manifest-tier")); // → "simple"
console.log(response.headers.get("x-manifest-model")); // → "gpt-5-mini"
console.log(response.headers.get("x-manifest-provider")); // → "openai"
Header names are case-insensitive in HTTP, but most browser fetch implementations lowercase them when reading. The proxy emits them as X-Manifest-*.