unbiased ai

Build on the Claude Agent SDK, run on Pareto

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

A demonstration of the Claude Agent SDK on Pareto, recreated from a real run. Not a screenshot.

Set it up in the options

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.

  1. Get an Unbiased API key

    Choose a plan, then create a key in the Unbiased platform. New accounts are reviewed and approved by a person before the key works.

  2. Install the SDK

    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.

  3. Pass the endpoint in env

    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.

  4. Name the model pareto, twice

    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.

  5. Give the agent its tools

    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.

Tested on October 20, 2026Claude Agent SDK 0.2.169 (Python) on Pareto (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.
Python · agent.py
# 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())
TypeScript · agent.ts
// 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.

Claude Agent SDK stays. The model changes.

The endpoint, the key and the model name change. Your prompts, tools and message handling stay put.

One model string, several models behind it

Pareto 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 →
An illustration, not a wiring diagram. The blend includes frontier and open models, and its composition can change.

What an agent task costs on Pareto

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.

Terminal-Bench 4.0Tasks an agent completes in a terminal
$0.48/task
50.8% solved
DeepSWE v1.1Changes an agent makes in a real codebase
$0.24/task
69.9% solved

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.

Pay for Claude Agent SDK by the month

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.

Personal

$10/month

  • 50M tokens a week
  • 20 requests per minute
  • For one person
Choose Personal

Personal Max

$100/month

  • 600M tokens a week
  • 60 requests per minute
  • For one person
Choose Personal Max

Team

Pay as you go

  • Prepaid credits at published rates
  • 300 requests per minute
  • No weekly token cap
Get started with Team

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.

Claude Agent SDK on Pareto, questions answered

Does the Claude Agent SDK work with a model that isn’t Claude?

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.

Why does stderr print an unrecognized_model line?

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.

What about subagents that ask for sonnet or opus?

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.

Can I ship a product built this way?

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.

Is Pareto made by the Claude Agent SDK team?

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.

What happens when I hit the weekly allowance?

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.

Do I choose between models?

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.

Is my code kept?

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.

Pareto works in other tools too

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.

Give your agent the spreadsheet nobody wants to open

One options block, one key and the agent loop you already wrote. Pareto starts at $10 a month for 50M tokens a week.