Send your first batch
A fast path from sign-up to a delivered batch. For the full step-by-step guides and API reference, head to the docs.
BatchRouter is a batch-AI routing platform: submit a batch once and it routes across providers on SLA-aware lanes, with quotes you can read back and receipts for every routing decision. It speaks the OpenAI-Batch format, so most clients work with a base-URL swap.
Three ways in
Direct chat completions
POST /v1/chat/completions
The standard OpenAI request body, answered right away. Set "stream": true to get the reply as server-sent events.
One request, queued as a batch
POST /v1/chat/completions with "batch": true
The same request, run as a one-item batch. You get 202 and a job id right away, then read the result from GET /v1/chat/completions/{id} or a webhook.
Bulk batches
POST /v1/batches, or /v1/openai/v1 for OpenAI Batch clients
Many requests at once, from the native API or a JSONL file. An existing OpenAI Batch client works with a base-URL swap.
The steps below are the bulk path. The two chat-completions calls look like this:
curl https://api.batchrouter.com/v1/chat/completions \
-H "Authorization: Bearer $BATCHROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5-4-mini","stream":true,"messages":[{"role":"user","content":"Say hello."}]}'curl https://api.batchrouter.com/v1/chat/completions \
-H "Authorization: Bearer $BATCHROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5-4-mini","batch":true,"messages":[{"role":"user","content":"Say hello."}]}'
# 202 {"id":"chatjob_...","object":"chat.completion.job","status":"queued",...}
# then: GET https://api.batchrouter.com/v1/chat/completions/chatjob_...- 1step 1 / 4
Create an API key
Sign up, confirm the verification email, then create a key under Account → API keys (keys start with br_live_ and are shown once). Until the email is confirmed the account and its keys are read-only: every write returns 403 email_verification_required. Agents can self-register with POST /v1/auth/agent-register (email and password required), and a person confirms the emailed link. Store the key as BATCHROUTER_API_KEY.
- 2step 2 / 4
Get a free quote
Price a batch with POST /v1/quotes/model. Quotes are free and return a quote_id you pass to create — credits are only reserved when the batch is created.
shellcurl https://api.batchrouter.com/v1/quotes/model \ -H "Authorization: Bearer $BATCHROUTER_API_KEY" \ -H "Content-Type: application/json" \ -d '{"items":[{"customer_item_id":"item-1","operation":"responses","model":"gpt-5-4-mini","input":{"messages":[{"role":"user","content":"Summarize: BatchRouter routes batch-AI workloads across providers."}]}}]}' - 3step 3 / 4
Submit the batch
Create the batch with the quote_id and an Idempotency-Key header for safe retries. BatchRouter routes across provider lanes and returns a batch id (bat_…).
shellcurl https://api.batchrouter.com/v1/batches \ -H "Authorization: Bearer $BATCHROUTER_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{"quote_id":"qlock_...","items":[ ... ]}' - 4step 4 / 4
Poll or receive results
Poll GET /v1/batches/{id} until completed, then fetch GET /v1/batches/{id}/results (or an /artifact-url for large batches). Prefer a webhook to skip polling — set webhook.url on create and verify the X-BatchRouter-Signature.
OpenAI-Batch compatible
Point your existing OpenAI batch client at BatchRouter and keep your JSONL format.
Transparent pricing
Every quote itemizes provider cost, BatchRouter fee, and discount. Unselected lanes return rejection reasons.
SLA-aware lanes
Choose standard (24h), flex, or priority — BatchRouter routes to lanes that meet your deadline.
Read the full documentation
Step-by-step guides for authentication, submitting batches, the JSONL format, quotes & pricing, polling & results, webhooks, OpenAI compatibility, SLA-aware routing, and the complete API reference — at docs.batchrouter.com.