Create Message
Send a conversation to any Router model using the Anthropic Messages schema. Set stream: true to receive server-sent events. Authenticate with your Perplexity API key — both Authorization: Bearer and the Anthropic SDK’s default x-api-key header are accepted.
Authorization: Bearer and the Anthropic SDK’s default x-api-key header are accepted, so the stock SDK api_key parameter works unchanged. No anthropic-version header is required.Parameter support
Parameter support
model, max_tokens (required), messages, system, stream, temperature, top_p, top_k, stop_sequences, thinking (only {"type": "disabled"}), tools, tool_choice. Message content and tool_result.content accept text, image, document, and search_result blocks. Document sources can be base64, plain text, or URLs and may include title and context.Accepted but not forwarded to the model: metadata.Rejected with a 400: service_tier, thinking with {"type": "enabled"}, cache_control on content blocks or tools, plus any unrecognized top-level field. A tool’s description is optional.Errors
Errors
429 with type overloaded_error and a Retry-After header. Requests that fail before producing output are not billed.Authorizations
Your Perplexity API key.
Body
Request body for POST /router/v1/messages.
Public model slug, e.g. perplexity/kimi-k3.
Maximum number of tokens to generate. Required by the Messages API.
1 <= x <= 2147483647System prompt as plain text or an array of text blocks.
0 <= x <= 10 <= x <= 1Only sample from the top K options for each subsequent token.
When true, respond with server-sent events.
- Option 1
- Option 2
- Option 3
- Option 4
Legacy budget-based thinking; budget_tokens maps to the nearest llm-api reasoning-effort tier.
- Option 1
- Option 2
- Option 3
Accepted and ignored — llm-api's service_tier is OpenAI-only.
auto, standard_only Ephemeral cache breakpoint. ttl "1h" is rejected until 1h writes are billed distinctly (they price 2x the 5m rate).
Accepted and ignored — context edits are not applied. Kept raw so evolving strategies decode.
Rejected by validation — no code-execution containers.
Rejected by validation — geo pinning cannot be honored, silently ignoring it would break residency expectations.
Rejected by validation — no server-side MCP execution.
"standard" is inert; "fast" is rejected (no fast-mode routing).
standard, fast Rejected by validation — fallback models would bill as the requested slug.
Rejected by validation together with fallbacks.
Response
Successful response. JSON for non-streaming requests; a text/event-stream of typed events (message_start through message_stop) when stream is true.
Non-streaming response body and the message_start payload.
message assistant - Option 1
- Option 2
- Option 3
end_turn, max_tokens, stop_sequence, tool_use, pause_turn, refusal, model_context_window_exceeded