Models

Every run executes on a model. Set model on an agent (the default for all its runs) or on a single run. Omit it for the platform default: gpt-5.6-sol at high reasoning effort.

List models

client.models.list() returns every selectable model with USD prices per million tokens. It is the live source of truth: an id outside the list returns a 422 naming the valid choices, and new models become selectable with no SDK change (model is a plain string).

Python

Each entry:

FieldMeaning
idPass as model on an agent or run
providerAuthor slug (anthropic, openai, ...)
defaulttrue on the model used when model is omitted. Per viewer: accounts whose runs cannot route the gateway default (own Claude subscription, gateway off) see the Claude fallback flagged instead
max_effortHighest effort tier the model accepts. See Reasoning effort
pricingUSD per million tokens: input_per_mtok, output_per_mtok, plus prompt-cache read and write rates
zdr_supportedtrue if at least one provider supports zero data retention. See ZDR
zdr_providersProvider slugs with ZDR support. Empty when zdr_supported is false
retention_noteHuman-readable retention guidance
Advanced: filters, aliases, and SDK field coverage

GET /api/v2/models accepts query filters:

  • ?zdr=true filters by zdr_supported
  • ?author=openai filters by provider slug
  • ?curated=true returns the short Platform list instead of the full catalog (100+ models)

zdr in the response is a deprecated alias of zdr_supported (same value). The Python SDK's Model object exposes id, name, description, provider, default, max_effort, and pricing; read the ZDR fields from the raw API response.

Set the model

A per-run choice wins for that run only:

Python

Resolution precedence, most specific first: per-run model, then the task's model, then the agent's, then the platform default.

A task can override its agent's model, which is the tool for a mixed workload — one high-stakes recurring task on a stronger model while the agent's routine work stays on the default:

Python

effort follows the same cascade and the same null-clears-the-pin rule.

Common choices (the full catalog is larger):

ModelProviderNotes
gpt-5.6-solOpenAIGPT-5.6 Sol flagship. Platform default
gpt-5.6-terraOpenAIAbout half Sol's cost
gpt-5.6-lunaOpenAIFast, lowest-cost OpenAI tier
opusAnthropicClaude Opus 5. The Claude fallback for own-subscription runs
fableAnthropicClaude Fable 5. About 2x Opus cost
sonnetAnthropicClaude Sonnet 5. Fast, low cost
gemini-3.6-flashGoogle1M-token context, Flash-tier cost
glm-5.2z.aiOpen source, 1M-token context
minimax-m3MiniMaxOpen source, 1M-token context
deepseek-v4-proDeepSeekOpen source reasoning, 1M-token context
deepseek-v4-flash-0731DeepSeekOpen source, lowest cost
kimi-k2-7-codeMoonshot AITuned for coding, 262k-token context
deepseek-v3-2DeepSeekPrevious DeepSeek generation, superseded by deepseek-v4-flash-0731
qwen3.8-maxAlibaba1M-token context. No zero-data-retention host — see below
grok-4.5xAI500k-token context. No zero-data-retention host — see below

Two of these have no ZDR-capable host at all: qwen3.8-max (Alibaba is the only provider) and grok-4.5 (xAI is the only provider). We serve them because they are worth having, not because the retention story is good — the provider may retain what you send. They report zdr_supported: false with a retention_note on GET /api/v2/models, they are excluded from ?zdr=true, and they are not offered in the web app's model picker. Do not send customer data to them.

Reasoning effort

effort controls how hard the model reasons before acting: low | medium | high | xhigh | max. Higher effort means deeper reasoning and more tokens per run; lower is faster and cheaper. Omit it for the platform default: max on Claude models, high on all others.

Same shape as model: set it on the agent, override it per run, explicit null resets.

Python

Precedence mirrors model: per-run effort, then the task's effort, then the agent's, then the platform default. Resumes and replies inherit the run's effort, so a conversation keeps the depth it started with.

Ceilings, not errors. xhigh and max are Claude-only tiers. Other models clamp a higher request down to high, never reject it, so an agent set to max stays valid when a run overrides the model. Each model's ceiling is max_effort in the catalog. An invalid tier returns a 422 naming the valid choices.

Advanced: where effort takes effect

Effort changes reasoning depth on Claude models and the GPT-5.6 family (gpt-5.6-sol / terra / luna). The remaining models — gpt-5.5, gemini-3.6-flash, glm-5.2, minimax-m3, the DeepSeek models, kimi-k2-7-code, kimi-k3, qwen3.8-max and grok-4.5 — accept the field but currently run at their native depth.

Zero data retention (ZDR)

zdr_supported=true means at least one provider for that model supports zero data retention. It does not mean every route is ZDR, and it does not mean ZDR is enabled for your account. Retention protection applies only when routing lands on a ZDR-capable host and ZDR is enabled on the key. zdr_providers names the capable hosts.

zdr_supported=false means we have no confirmed zero-data-retention host for that model — either none exists, or the model is not in the synced provider catalog. Either way treat it as may-retain: those models stay selectable on the API, so check the flag before sending customer data, or filter with GET /api/v2/models?zdr=true.

See Data Retention for the account-level picture.

Next: Agents · Data Retention

Was this page helpful?