Developers
Pareto API docs
Pareto is Unbiased’s blended model, one model string built so AI providers compete for every request. It speaks the OpenAI and Anthropic formats, so the client you already use works. Change the base URL, the key and the model string. Scores are on the model card, rates on the pricing page.
Quickstart
- Base URL:
https://api.unbiased.ai/v1 - Model string:
pareto - Key: create a platform.unbiased.ai account and request access. Pareto is in private beta; your API key is issued on the platform.
curl https://api.unbiased.ai/v1/chat/completions \
-H "Authorization: Bearer $UNBIASED_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "pareto", "messages": [{"role": "user", "content": "Hello"}]}'
Rather have your agent do the setup? Hand it start/agent.md.
Authentication
Send your API key as Authorization: Bearer <api-key> or in the x-api-key header. Keep it in an environment variable or your OS keychain, never in a repo.
Endpoints
| Endpoint | Format | Use it from |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | OpenAI SDKs and any OpenAI-compatible tool |
POST /v1/messages | Anthropic Messages | Anthropic SDKs and Anthropic-compatible tools |
Both accept stream: true for server-sent events in their own format. Anthropic-format example:
curl https://api.unbiased.ai/v1/messages \
-H "x-api-key: $UNBIASED_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "pareto", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}]}'
Rate limits
| Plan | Requests per minute | Tokens |
|---|---|---|
| Personal | 20 | 25M a week |
| Personal Max | 60 | 300M a week |
| Team | 300 | No weekly cap; prepaid credits |
Requests over the limit return HTTP 429. Back off and retry. Plans and token rates are on the pricing page.
Errors
Errors come back as JSON in the format of the endpoint you called. A missing key on /v1/chat/completions:
{"error": {"message": "Missing API key. ...", "type": "invalid_request_error", "code": "invalid_api_key"}}
The same on /v1/messages:
{"type": "error", "error": {"type": "authentication_error", "message": "Missing API key. ..."}, "request_id": "req_..."}
Status codes: 400 invalid request, 401 missing or invalid key, 429 rate limit reached, 500 server error. Include the request ID (in the error body on /v1/messages, in the x-request-id response header on /v1/chat/completions) when you write to info@unbiased.ai, never the key.
Versioning and known gaps
- The major version is in the path:
/v1. Changes are announced in product updates. GET /v1/modelsis not implemented yet. If a client insists on listing models, hardcodepareto.- Unknown model ids are not rejected yet, so a typo is still served and billed as Pareto. Always send
pareto.
Command line (macOS)
The Pareto installer adds a pareto command to your terminal: a pinned Pi coding-agent client wired to Pareto, in an isolated runtime under ~/.local/share/pareto. It asks for your key in a private system prompt, stores it in macOS Keychain, and adds a Pareto launcher to ~/Applications. It does not change Claude, Codex, Cursor, or an existing Pi setup.
curl -fsSL https://unbiased.ai/install/pareto -o /tmp/install-pareto.sh && bash /tmp/install-pareto.sh
Check the connection any time with ~/.local/bin/pareto doctor. More detail on Connect Pareto.
For agents and tools
- openapi.json: OpenAPI 3.1 spec for both endpoints
- llms.txt: site overview, including when to use Pareto
- start/agent.md: step-by-step setup instructions for an agent
- install/pareto: the macOS command-line installer (bash)
- data/prices.json: dated token prices