Not all inference is made equal. Find the smartest route.

Jarbird is an OpenRouter-compatible API that sends each request to the cheapest provider that qualifies.

Example request
Request
POST /api/v1/chat/completions
model
anthropic/claude-sonnet-5.5
route
wren · cache hit
charge
$0.840 list $1.400

https://jarbird.com/api/v1

Anthropic and OpenAI text models

Invite-only beta

Compare route prices.

One example request: 48,000 tokens in, 2,000 out, without a cache hit.

Prices as of 21:19 UTC, 29 Oct 2026

Prices for one example request on Sonnet 5.5: 48,000 tokens in, 2,000 out
RouteInput /1MOutput /1MExample cost
wren$0.236$1.18$0.0137route
finch$0.420$2.10$0.0244
robin$0.450$2.25$0.0261
openrouter$2.00$10.00$0.1160

Not routed: swift quarantined.

You pay $0.0137 through Wren · OpenRouter list $0.1160 · Our markup (0%)

Current rates, illustrative usage. Your request’s cache and capabilities decide its route.

Change one line.

You keep the OpenAI SDK and your OpenRouter model IDs. Point the base URL at Jarbird and use your Jarbird key. The requests themselves stay the same.

Python, OpenAI SDK
client = OpenAI(Removed:     base_url="https://openrouter.ai/api/v1",Added:     base_url="https://jarbird.com/api/v1",    api_key=os.environ["API_KEY"],)

Six things decide each route.

  1. Sensitive requests

    Requests matching our secret checks go only to OpenRouter. Detection is incomplete. To keep a request off relays, use the provider request fragments below.

  2. Capabilities

    A route has to support the model, tools, images and context length you asked for.

  3. Prompt caching

    If a route already has the start of your prompt cached, that part costs the route's cache rate.

  4. Price, then reliability and speed

    The cheapest qualifying route wins. If two prices are within 2%, the tie goes to the route with your prompt cached, then to fewer recent errors, then to faster first tokens.

  5. Quality checks

    Relays are audited by model. A failed audit stops traffic for that model.

  6. Failover

    If a route fails before internal commitment, the request can move to the next one, with up to three attempts total. Commitment can happen before the first upstream byte is forwarded.

A heron standing in a still mountain lake at night, a hut on the far shore.

Checks with clear limits.

Requests matching our secret checks go only to OpenRouter. Relay tool calls are checked against declared tool names, supported argument rules and a denylist.

Secret detection is incomplete. To keep a request off relays, use either of these request fragments: {"provider":{"zdr":true}} or {"provider":{"data_collection":"deny"}}.

OpenRouter responses and ordinary text are not checked. Unsupported schema constraints remain unchecked. Legitimate calls can be blocked. Schema-valid harmful operations can pass.

Relays never see your API key, your IP address or your account. They do see the request body and the response, including your prompts, and they may log them.

What the checks leave to your client

Your client must enforce tool permissions. Wait for complete validated calls under your own execution policy. Earlier streamed fragments or completed calls cannot be recalled.

A route can be committed before any upstream content reaches you. Jarbird can switch routes only before internal commitment, with up to three attempts total. A blocked committed stream ends rather than switching routes.

Only an eligible OpenRouter route can replace a buffered refusal within the existing budget. That replacement is unchecked and can contain the same operation.

A blocked attempt or stream is unbilled. A successful replacement keeps the usual price cap and markup. Requests sent to OpenRouter by the secret check carry no markup.

Each relay goes by a bird name, such as wren or finch. A relay keeps its name for life, and no name is ever reused.

You pay what your route costs.

Jarbird adds a flat markup to the route's cost, and that markup is 0% during the beta. Failed attempts cost nothing. You pay from a prepaid balance that you top up with USDC or USDT.

Charges never exceed the equivalent OpenRouter list price.

Example request, anthropic/claude-sonnet-5.5
OpenRouter list price$1.400
Route cost, wren$0.840
Markup, 0%$0.000
You pay$0.840
Savings$0.560

These figures are an example. Real prices change with the providers.

Questions before you switch.

Which models can I call?

You can call the Anthropic and OpenAI text models in the OpenRouter catalogue, using their OpenRouter IDs.

Does streaming work?

Yes. Jarbird can switch routes only before internal commitment, with up to three attempts total. Commitment can happen before the first upstream byte is forwarded. A blocked committed stream ends rather than switching routes.

How do I see where a request went?

Every response names the route that served it in provider. The charge is in usage.cost, and the OpenRouter list price for the same request is in usage.cost_details.baseline_cost.

What is not supported yet?

Jarbird doesn't support the Responses API, the Anthropic Messages API, embeddings, image generation or your own provider keys yet.

Who can sign up?

For now, Jarbird is in an invite-only beta. You can request an invite below.

Request an invite.

Tell us what you send to language models today and roughly what it costs each month.

Invite requests aren’t open here yet. This form won’t send or save your details.