Personal
$10/month
- 50M tokens a week
- 20 requests per minute
- For one person
The Claude Agent SDK gives your own program the agent loop behind Claude Code: it reads files, writes code, runs commands and keeps going until the job is done. Put four settings in the options and that loop runs on Pareto instead. On each request Pareto selects frontier and open models and blends their outputs into one answer, and your Unbiased plan pays for the tokens.
Tested live with the Python SDK 0.2.16950M tokens a week
The SDK starts a bundled Claude Code process for each query, and that process reads its endpoint and key from the environment. Hand them over through the env option, name the model, and the rest of your agent stays as written.
Choose a plan, then create a key in the Unbiased platform. New accounts are reviewed and approved by a person before the key works.
pip install claude-agent-sdk (Python 3.10+) or npm install @anthropic-ai/claude-agent-sdk (Node 18+). On most platforms both bundle the Claude Code binary they run. The TypeScript SDK gets it through npm optional dependencies, so don’t skip them, or there is no binary to start.
Set ANTHROPIC_BASE_URL to https://api.unbiased.ai, with no /v1, and put your key in ANTHROPIC_AUTH_TOKEN, which is sent as a Bearer token. In TypeScript, env replaces the whole environment, so spread process.env into it. In Python it is added on top.
Set model to pareto, and set ANTHROPIC_DEFAULT_HAIKU_MODEL to pareto as well. Background jobs such as session titles use that slot and would otherwise ask for a Claude model by name.
List the tools it may use without asking. acceptEdits approves file edits and basic file commands such as mkdir and mv, but not other shell commands, so include Bash in allowed_tools if the agent needs to run what it writes.
pareto). A 31-line Python agent read a sales CSV, wrote and ran an analysis script, and saved a summary with correct revenue totals by region. Run record.# pip install claude-agent-sdk
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage
TASK = (
"Read data/sales.csv. Write analyze.py that computes revenue by region, "
"run it, and save a short summary to summary.md"
)
options = ClaudeAgentOptions(
model="pareto",
allowed_tools=["Read", "Write", "Bash", "Glob"],
permission_mode="acceptEdits",
env={
"ANTHROPIC_BASE_URL": "https://api.unbiased.ai",
"ANTHROPIC_AUTH_TOKEN": "your-unbiased-api-key",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "pareto",
},
)
async def main():
async for message in query(
prompt=TASK,
options=options,
):
if isinstance(message, AssistantMessage):
for block in message.content:
if hasattr(block, "name"):
print(f"Tool: {block.name}")
elif isinstance(message, ResultMessage):
print(f"Done: {message.subtype}")
print(message.result)
asyncio.run(main())// npm install @anthropic-ai/claude-agent-sdk
import { query } from "@anthropic-ai/claude-agent-sdk";
const prompt =
"Read data/sales.csv. Write analyze.py that computes revenue by region, " +
"run it, and save a short summary to summary.md";
for await (const message of query({
prompt,
options: {
model: "pareto",
allowedTools: ["Read", "Write", "Bash", "Glob"],
permissionMode: "acceptEdits",
env: {
...process.env,
ANTHROPIC_BASE_URL: "https://api.unbiased.ai",
ANTHROPIC_AUTH_TOKEN: "your-unbiased-api-key",
ANTHROPIC_DEFAULT_HAIKU_MODEL: "pareto",
},
},
})) {
if (message.type === "result") console.log(`Done: ${message.subtype}`);
}We ran the Python version live; the TypeScript version follows Anthropic’s gateway docs. Unset ANTHROPIC_API_KEY in the shell that runs your agent, as our test did, so only your Unbiased key is sent. In real code, load the key from your own secret store rather than the source file.
The endpoint, the key and the model name change. Your prompts, tools and message handling stay put.
query(), ClaudeSDKClient and the message typesUnchangedparetoapi.unbiased.aiPareto is Unbiased’s blended AI model. On each request it selects frontier and open models and blends their outputs into one answer, so Claude Agent SDK talks to one model string, pareto, and never has to pick.
“When the frontier improves, Pareto improves; when frontier prices fall, you should benefit.” From the pricing page.
How a Pareto answer gets made →Agents make many model calls per task, so the price of a finished task matters more than the price of a token. The model card publishes both for Pareto on two public agent benchmarks.
Pareto 26.10, preliminary October 1, 2026 runs that may change; denominators and the cost method still require confirmation. Cost is the reported mean USD per task at API rates, not an estimate for your workload. Model card and method.
One API key works across Claude Agent SDK and any other tool you point at Pareto. Pick a monthly allowance, or pay per token on Team.
$10/month
$100/month
Pay as you go
Subscriptions are for one person and are not unlimited. New API accounts are reviewed by a person before access turns on, and commercial or production use needs a separate written agreement. Rates and limits are on Pricing.
Yes, in our test. The SDK’s Claude Code process sends Anthropic Messages requests to whatever ANTHROPIC_BASE_URL names, and Unbiased accepts that format. Anthropic does not support Claude Code or the SDK with non-Claude models, so for help with this setup, contact Unbiased rather than Anthropic. On October 20, 2026 we ran the Python SDK 0.2.169 against Pareto: a 31-line agent read a sales CSV, wrote and ran an analysis script, and saved a summary with the correct totals. Format compatibility is not a promise that every SDK feature works, so tell us if one doesn’t.
The bundled Claude Code knows Anthropic’s model names, and pareto is not one of them. It may log [claude-code:unrecognized_model] to stderr and carry on; our run still finished with Done: success.
A model alias such as sonnet or opus resolves through Claude Code’s alias variables. If your agent definitions use one, set ANTHROPIC_DEFAULT_SONNET_MODEL or ANTHROPIC_DEFAULT_OPUS_MODEL to pareto in the same env, or give the subagent the model pareto directly. Our test used a single agent.
Two sets of terms apply. Anthropic’s Commercial Terms cover your use of the SDK, and its branding rules say your product may not call itself Claude Code. On the Unbiased side, plans are for one person, and commercial or production use needs a separate written agreement. The agent builders page covers that path.
No. Pareto is Unbiased’s model. Claude Agent SDK is made by Anthropic, and Unbiased is not affiliated with or endorsed by them. You keep Claude Agent SDK and point it at the Unbiased API.
Requests over your plan’s limits return an HTTP 429 error. Personal includes 50M tokens a week and 20 requests per minute. Personal Max raises that to 600M a week and 60 requests per minute for $100/month. Team uses prepaid pay-as-you-go credits with no weekly token cap.
No. You send every request to one model string, pareto. Pareto selects frontier and open models for each request and blends their outputs into one answer.
Personal and Personal Max are not our zero data retention tier: prompts and responses may be kept up to 30 days, as section 5(c) of the Terms explains. For work that must not be kept, ask about the Zero Data Retention API on the Private AI page.
The same key and the same model string go into each of these. See them all.
Product names belong to their owners. Except where a guide says otherwise, Unbiased is not affiliated with or endorsed by the makers of the tools on this page.
One options block, one key and the agent loop you already wrote. Pareto starts at $10 a month for 50M tokens a week.