Paths · OpenRouter

OpenRouter is the chat door, with a prefix.

OpenRouter bills that account. REA does not. OpenRouter is not a partner of REA. The catalog is theirs and it changes. This page does not publish a count.

The call

Put openrouter/ in front of their model id. The prefix is not sent. The id after it can look like openai/gpt-4o-mini or anthropic/claude-sonnet-4-5. Without that prefix, those names still go to that vendor.

curl -s https://api.reacontrolplane.com/v1/chat/completions \
  -H "Authorization: Bearer rea_YOUR_REA_KEY.YOUR_OPENROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"openrouter/openai/gpt-4o-mini","messages":[{"role":"user","content":"Reply with exactly: REA LIVE"}]}'

If the tool has a header field, the API key is the REA key alone and X-Upstream-Api-Key is the OpenRouter key.

curl -s https://api.reacontrolplane.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_REA_API_KEY" \
  -H "X-Upstream-Api-Key: YOUR_OPENROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"openrouter/openai/gpt-4o-mini","messages":[{"role":"user","content":"Reply with exactly: REA LIVE"}]}'

An id that already starts with openrouter/, such as openrouter/auto, is written twice: openrouter/openrouter/auto. Messages, Responses, and Gemini do not carry this prefix. Claude Code, Codex, and Gemini CLI stay on their own vendors. X-REA-Upstream does not select OpenRouter.