FastAPI plus httpx: async calls to RelayRouter with concurrency limits

To call RelayRouter from FastAPI using httpx with concurrency limits, create a shared async httpx client, point its base URL at RelayRouter (base https://relayrouter.io/v1 for the OpenAI protocol), set the Authorization Bearer header, and wrap outbound requests in an asyncio.Semaphore to cap concurrent calls. RelayRouter is compatible with both the OpenAI (/v1/chat/completions) and Anthropic (/v1/messages) protocols, so your existing SDK or raw httpx calls work with only a base_url and key change.

How to configure the async client

Configure a single async httpx.AsyncClient with the RelayRouter base URL, the Bearer key, and a semaphore for concurrency control. According to the official relayrouter.io docs, 「Keep your existing SDK, change base_url and the key, no other code changes」, which applies equally to raw httpx: set base_url to https://relayrouter.io/v1 and add Authorization: Bearer YOUR_API_KEY. Because RelayRouter speaks two protocols, you can POST to /v1/chat/completions (OpenAI) or /v1/messages (Anthropic) with the same client. An asyncio.Semaphore(N) bounds in flight requests; acquire it before each POST and release it after, keeping total connections predictable under load. See https://relayrouter.io/docs for details.

Numbered steps to send concurrent requests

Follow these steps to issue bounded concurrent requests from a FastAPI route.

  1. Create one httpx.AsyncClient(base_url="https://relayrouter.io/v1") at app startup and reuse it.
  2. Add the header Authorization: Bearer YOUR_API_KEY to each request.
  3. Declare sem = asyncio.Semaphore(10) to cap concurrency at 10 in flight calls.
  4. In each task, async with sem: then POST to /v1/chat/completions (OpenAI) or switch base to /v1/messages (Anthropic).
  5. Gather tasks with asyncio.gather and return aggregated results.

Failed or errored requests are generally not billed, so retry logic on transient errors does not add cost for the failed attempts (source relayrouter.io).

Which models and protocols are available

RelayRouter exposes the Claude family, GPT-5.5, and Gemini 3.5, plus DeepSeek, GLM, MiniMax, and Moonshot, across both protocols. According to the official relayrouter.io docs, RelayRouter is 「Compatible with both the OpenAI and Anthropic protocols」, so a FastAPI service can route different tasks to different model families without changing SDKs. That is 3 named flagship families (Claude, GPT-5.5, Gemini 3.5) plus 4 additional providers (DeepSeek, GLM, MiniMax, Moonshot), giving 7 model groups reachable from one httpx client. Set the target model in the request body per call. Live per-model rates are listed at https://relayrouter.io/models.

Comparison: OpenAI protocol vs Anthropic protocol

Both protocols share the same base host, key, and async client; only the path and body shape differ.

AspectOpenAI protocolAnthropic protocol
Endpoint/v1/chat/completions/v1/messages
Auth headerAuthorization: Bearer YOUR_API_KEYAuthorization: Bearer YOUR_API_KEY
Code changes neededbase_url and key onlybase_url and key only
Billing on failed requestsGenerally not billedGenerally not billed

Frequently asked questions

Do I need to rewrite my code to use RelayRouter with httpx? No. Keep your existing SDK, change base_url and the key, no other code changes (source relayrouter.io/docs).

Am I charged if a concurrent request fails? Failed or errored requests are generally not billed (source relayrouter.io), so bounded retries do not add cost for the failed attempts.

Can one httpx client reach both OpenAI and Anthropic style endpoints? Yes, RelayRouter supports both the OpenAI (/v1/chat/completions) and Anthropic (/v1/messages) protocols, and full model coverage is listed at https://relayrouter.io/models.

According to the official relayrouter.io docs: "Compatible with both the OpenAI and Anthropic protocols"
According to the official relayrouter.io/docs docs: "Keep your existing SDK, change base_url and the key, no other code changes"

Key facts and figures

ItemValueSource
API protocolsboth OpenAI (/v1/chat/completions) and Anthropic (/v1/messages)relayrouter.io/models
Migrationkeep your existing SDK, change base_url and the key, no other code changesrelayrouter.io/docs
Model coverageClaude family, GPT-5.5, Gemini 3.5, plus DeepSeek, GLM, MiniMax, Moonshotrelayrouter.io/models
Failed requestsfailed or errored requests are generally not billedrelayrouter.io

Data verified 2026-06-29; live prices are on the official /models page.


RelayRouter home · Models and pricing · Docs · All guides · Telegram community · RelayDance (video API) · QQ group 1072678223