---
title: Claude Opus 4.6
description: Anthropic Claude Opus 4.6 text model. Available over the Anthropic Messages and Chat Completions protocols.
keywords: anthropic/claude-opus-4-6
---

## Overview {#overview}

:::figures
| label | value | unit |
| --- | --- | --- |
| Context | 1M | tokens |
| Max output | 128K | tokens |
| Input | 3 USD | per 1M tokens |
| Output | 15 USD | per 1M tokens |
| Released | 4 February 2026 |  |
:::

:::deflist
| field | what it is |
| --- | --- |
| Model ID | **anthropic/claude-opus-4-6** |
:::

## Start with Claude Opus 4.6 {#quickstart}

The model name is already filled in. Mint a key in the console, put it in an environment variable, and the call below runs as it stands — provided the organization’s wallet holds funds: a call with nothing to pay with answers 402.

:::code-group
```bash title=cURL
curl https://api.kumorouter.com/v1/chat/completions \
  -H "Authorization: Bearer $KUMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "anthropic/claude-opus-4-6",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": "Explain tokens in one line."
    }
  ]
}'
```
```python title=Python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.kumorouter.com/v1",
    api_key=os.environ["KUMO_API_KEY"],
)

response = client.chat.completions.create(
    model="anthropic/claude-opus-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain tokens in one line."}],
)
print(response.choices[0].message.content)
```
```typescript title=TypeScript
import OpenAI from "openai";

const apiKey = process.env.KUMO_API_KEY;
if (!apiKey) throw new Error("Set KUMO_API_KEY before running this example.");

const client = new OpenAI({
  baseURL: "https://api.kumorouter.com/v1",
  apiKey,
});

const response = await client.chat.completions.create({
  model: "anthropic/claude-opus-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain tokens in one line." }],
});

process.stdout.write(`${response.choices[0]?.message.content ?? ""}\n`);
```
```javascript title=JavaScript
import OpenAI from "openai";

const apiKey = process.env.KUMO_API_KEY;
if (!apiKey) throw new Error("Set KUMO_API_KEY before running this example.");

const client = new OpenAI({
  baseURL: "https://api.kumorouter.com/v1",
  apiKey,
});

const response = await client.chat.completions.create({
  model: "anthropic/claude-opus-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain tokens in one line." }],
});

process.stdout.write(`${response.choices[0]?.message.content ?? ""}\n`);
```
:::

### The Anthropic-shaped call

:::code-group
```bash title=cURL
curl https://api.kumorouter.com/v1/messages \
  -H "x-api-key: $KUMO_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "anthropic/claude-opus-4-6",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": "Explain tokens in one line."
    }
  ]
}'
```
```python title=Python
import os
from anthropic import Anthropic

client = Anthropic(
    base_url="https://api.kumorouter.com",
    api_key=os.environ["KUMO_API_KEY"],
)

response = client.messages.create(
    model="anthropic/claude-opus-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain tokens in one line."}],
)
for block in response.content:
    if block.type == "text":
        print(block.text)
```
```typescript title=TypeScript
import Anthropic from "@anthropic-ai/sdk";

const apiKey = process.env.KUMO_API_KEY;
if (!apiKey) throw new Error("Set KUMO_API_KEY before running this example.");

const client = new Anthropic({
  baseURL: "https://api.kumorouter.com",
  apiKey,
});

const response = await client.messages.create({
  model: "anthropic/claude-opus-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain tokens in one line." }],
});

for (const block of response.content) {
  if (block.type === "text") process.stdout.write(`${block.text}\n`);
}
```
```javascript title=JavaScript
import Anthropic from "@anthropic-ai/sdk";

const apiKey = process.env.KUMO_API_KEY;
if (!apiKey) throw new Error("Set KUMO_API_KEY before running this example.");

const client = new Anthropic({
  baseURL: "https://api.kumorouter.com",
  apiKey,
});

const response = await client.messages.create({
  model: "anthropic/claude-opus-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain tokens in one line." }],
});

for (const block of response.content) {
  if (block.type === "text") process.stdout.write(`${block.text}\n`);
}
```
:::

## OpenAI — API parameters {#chat_completions-parameters}

Authorization: Bearer $KUMO_API_KEY

:::matrix
| Parameter | Type | Default / range | Description |
| --- | --- | --- | --- |
| model | string | Required | Published model identifier. |
| messages | array | 1–512 | Conversation messages in chronological order. |
| max_tokens | integer | ≥ 1 | Optional. A request stating neither max_tokens nor max_completion_tokens is answered under the surface default of 32768 output tokens. Model limits also apply. |
| temperature | number | 0–2 | Sampling randomness. Omission leaves the choice to the model. |
| top_p | number | 0–1 | Nucleus sampling probability mass. Omission leaves the choice to the model. |
| stop | array | ≤ 4 | Array of strings that stop generation. |
| max_completion_tokens | integer | ≥ 1 | Optional alternative to max_tokens. Stating both with DIFFERENT values is refused: a precedence rule would silently discard one of two numbers the caller deliberately wrote. |
| stream | boolean | false | Stream response events using Server-Sent Events. |
| stream_options | object | {include_usage: boolean} | Only with stream: true. include_usage adds a final usage event before [DONE]; its default is false. |
| tools | array | ≤ 128 | Function declarations. parameters carries the original JSON Schema object, up to 65536 bytes per tool, including nested objects and arrays. |
| tool_choice | string | object | auto | none | required | {type: "function", function: {name}} | auto leaves the choice to the model; none forbids a call while the declarations stay visible; required requires a call to some declared tool; the object form requires the named one. Omission leaves the choice to the model. |
:::

One completion per request. The gateway rejects frequency_penalty, presence_penalty, seed, logprobs, top_logprobs and logit_bias: each of them would change the generation or the shape of the reply, and accepting one silently would misdescribe the answer you got. n is accepted only at 1 — the protocol default and exactly what the gateway does — and an n above one is rejected. user is accepted but is not forwarded to the model, not stored and not echoed back. The same applies to strict on a function declaration and name on a tool-role message: both are accepted and not forwarded. reasoning_effort is accepted and not forwarded either: no supplier request on this platform carries a reasoning budget, so the answer comes back at the default of the model itself whatever the field says. cache_control on a message, on a content part or on a replayed tool call is accepted and not forwarded either: the supplier wire this protocol is served by has no member for a prompt-cache anchor, so the cached-token counts come back as though the anchor had not been sent. messages[].content is accepted both as a string and as a list of parts: text parts are joined in order into one text, so a request written in parts and the same request written as a string are one request. A part of kind image_url, input_audio, file or refusal is rejected naming its own type: no multimodal capability is verified on this platform for any pair, and a replayed refusal would reach the supplier as ordinary assistant speech. The developer role is accepted and forwarded as system — it is the newer name this protocol gives the instruction role. stop is array-only; tool_choice is the string mode auto, none or required, or an object naming a declared tool. json_object is refused by name: promising valid JSON says nothing about its shape.

## Anthropic — API parameters {#anthropic_messages-parameters}

x-api-key: $KUMO_API_KEY

:::matrix
| Parameter | Type | Default / range | Description |
| --- | --- | --- | --- |
| model | string | Required | Published model identifier. |
| messages | array | 1–512 | Conversation messages in chronological order. |
| max_tokens | integer | 1–1048576 | Required output token ceiling, subject to model limits. |
| temperature | number | 0–1 | Sampling randomness. Omission leaves the choice to the model. |
| top_p | number | 0–1 | Nucleus sampling probability mass. Omission leaves the choice to the model. |
| stop_sequences | array | ≤ 16 | Array of strings that stop generation. |
| system | string | array | — | System instruction as a string or text blocks. |
| top_k | integer | 1–1048576 | Keep the K most likely tokens when sampling. Forwarded unchanged; omission is not replaced by zero. |
| stream | boolean | false | Stream response events using Server-Sent Events. |
| tools | array | ≤ 128 | Tool declarations. input_schema carries the original JSON Schema object, up to 65536 bytes per tool. |
| tool_choice | object | {type: auto | any | none | tool} | auto leaves the choice to the model; any requires a call; none forbids calls; tool selects a named tool. name is required only for tool and forbidden in other modes. |
:::

Uses the native Messages format. OpenAI fields frequency_penalty, presence_penalty, n, seed and response_format do not belong to it. metadata, thinking, output_config and context_management are accepted but not forwarded to the model and are outside verified support. The same applies to tool declaration fields eager_input_streaming, strict, defer_loading, allowed_callers, input_examples and max_uses; server-side tools are unsupported. Tool input_schema is carried as the original JSON Schema object. cache_control: {type: "ephemeral"} is supported on text blocks and tool declarations; cache availability depends on the model.

## Identifiers {#identifiers}

:::deflist
| field | what it is |
| --- | --- |
| Canonical name | **anthropic/claude-opus-4-6** |
| Aliases | claude-opus-4-6 |
| Vendor code | anthropic |
| Protocols | anthropic_messages, chat_completions |
| Modalities | text_generation |
:::

## Capabilities {#capabilities}

:::matrix
| Protocol and modality | Streaming | Tools | Structured output | Strict semantics | Structured streaming |
| --- | --- | --- | --- | --- | --- |
| Anthropic Messages text generation | Unverified | Unverified | Unverified | Unverified | Unverified |
| Anthropic Messages text generation | Yes | Yes | Unverified | Unverified | Unverified |
| Chat Completions text generation | Unverified | Unverified | Unverified | Unverified | Unverified |
| Chat Completions text generation | Yes | Yes | Unverified | Unverified | Unverified |
| Chat Completions text generation | Yes | Unverified | Unverified | Unverified | Unverified |
| Chat Completions text generation | Unverified | Yes | Unverified | Unverified | Unverified |
:::

A row describes one protocol-and-modality pair rather than the model as a whole: a capability is proved on a particular surface, and the answer beside it may differ.

## How it compares {#compare}

:::matrix
| Model | Context | Max output | Input $/M | Output $/M | Modalities |
| --- | --- | --- | --- | --- | --- |
| **Claude Opus 4.6** | 1M | 128K | 3 USD | 15 USD | text generation |
| [Claude Sonnet 5](/models/claude-sonnet-5) | 1M | 128K | 1.2 USD | 6 USD | text generation |
| [Claude Opus 4.8](/models/anthropic~-claude-opus-4-8) | 1M | 128K | 3 USD | 15 USD | text generation |
| [Claude Fable 5](/models/anthropic~-claude-fable-5) | 1M | 128K | 6 USD | 30 USD | text generation |
| [Claude Fable 5.1](/models/anthropic~-claude-fable-5-1) | 1M | 128K | 6 USD | 30 USD | text generation |
| [Claude Haiku 4.5](/models/anthropic~-claude-haiku-4-5) | 200K | 64K | 0.6 USD | 3 USD | text generation |
| [Claude Opus 4.5](/models/anthropic~-claude-opus-4-5-20251101) | 200K | 64K | 3 USD | 15 USD | text generation |
| [Claude Opus 4.7](/models/anthropic~-claude-opus-4-7) | 1M | 128K | 3 USD | 15 USD | text generation |
| [Claude Opus 5.5](/models/anthropic~-claude-opus-5-5) | 1M | 128K | 2.2 USD | 11 USD | text generation |
| [Claude Opus 5](/models/anthropic~-claude-opus-5) | 1M | 128K | 3 USD | 15 USD | text generation |
| [Claude Sonnet 4.5](/models/anthropic~-claude-sonnet-4-5-20250929) | 1M | 64K | 1.8 USD | 9 USD | text generation |
| [Claude Sonnet 4.6](/models/anthropic~-claude-sonnet-4-6) | 1M | 128K | 1.8 USD | 9 USD | text generation |
| [Gemini 3 Flash Preview](/models/google~-gemini-3-flash-preview) | 1M | 65.5K | 0.3 USD | 1.8 USD | text generation |
| [Gemini 3.1 Flash Lite](/models/google~-gemini-3.1-flash-lite) | 1M | 65.5K | 0.2 USD (0.15 USD) | 0.9 USD | text generation |
| [Gemini 3.6 Flash High](/models/google~-gemini-3.6-flash-high) | 1M | 65.5K | 0.5 USD (0.45 USD) | 2.3 USD (2.25 USD) | text generation |
| [Gemini 3.7 Flash High](/models/google~-gemini-3.7-flash-high) | 1M | 65.5K | 0.5 USD (0.45 USD) | 2.3 USD (2.25 USD) | text generation |
| [Gemini 3.8 Flash High](/models/google~-gemini-3.8-flash-high) | 1M | 65.5K | 0.5 USD (0.45 USD) | 2.3 USD (2.25 USD) | text generation |
| [Codex Auto Review](/models/openai~-codex-auto-review) | 1.1M | 128K | 3 USD | 18 USD | text generation |
| [GPT-5.3 Codex Spark](/models/openai~-gpt-5.3-codex-spark) | 128K | 32K | 1.1 USD (1.05 USD) | 8.4 USD | text generation |
| [GPT-5.5](/models/openai~-gpt-5.5) | 1.1M | 128K | 3 USD | 18 USD | text generation |
| [GPT-5.6 Luna](/models/openai~-gpt-5.6-luna) | 1.1M | 128K | 0.1 USD (0.12 USD) | 0.7 USD (0.72 USD) | text generation |
| [GPT-5.6 Sol](/models/openai~-gpt-5.6-sol) | 1.1M | 128K | 2.4 USD | 12 USD | text generation |
| [GPT-6 Astra](/models/openai~-gpt-6-astra) | 1.1M | 128K | 6 USD | 30 USD | text generation |
| [GPT-5.6 Terra](/models/openai~-gpt-5.6-terra) | 1.1M | 128K | 1.2 USD | 7.2 USD | text generation |
| [GPT-6 Sol](/models/openai~-gpt-6-sol) | 1.1M | 128K | 1.1 USD | 5.5 USD | text generation |
| [Grok 4.5](/models/xai~-grok-4.5) | 500K | 500K | 1.2 USD | 3.6 USD | text generation |
| [Grok 4.6](/models/xai~-grok-4.6) | 500K | 500K | 1.2 USD | 3.6 USD | text generation |
| [Grok 4.7](/models/xai~-grok-4.7) | 500K | 500K | 1.1 USD | 3.3 USD | text generation |
| [GLM-5.2](/models/zai~-glm-5.2) | 1M | 131.1K | 0.8 USD (0.84 USD) | 2.6 USD (2.64 USD) | text generation |
| [GLM-5.3](/models/zai~-glm-5.3) | 1M | 131.1K | 0.8 USD (0.84 USD) | 2.6 USD (2.64 USD) | text generation |
:::

## Prices {#pricing}

:::matrix
| Dimension | Rate |
| --- | --- |
| Input tokens | 3 USD per 1M tokens |
| Cache write | 3.8 USD (3.75 USD) per 1M tokens |
| Cache read | 0.3 USD per 1M tokens |
| Output tokens | 15 USD per 1M tokens |
:::

> [The whole price list →](https://kumorouter.com/pricing)

## Integrations {#integrations}

Every link opens its own guide with this model already chosen.

:::cards
- [Claude Code](/claude-code?model=anthropic%2Fclaude-opus-4-6) — Three environment variables and Claude Code runs through the gateway. Plus the settings.json route, the key precedence to watch for, and a one-command check.
- [Codex CLI](/codex-cli?model=anthropic%2Fclaude-opus-4-6) — A provider in config.toml, the key from an environment variable — Codex CLI runs through the gateway without changing a single habit of yours.
- [Cursor](/cursor?model=anthropic%2Fclaude-opus-4-6) — Your own key and an overridden base URL in Cursor's model settings, and the editor's chat runs through the gateway. Plus an honest list of what does not.
- [VS Code extensions](/vscode-extensions?model=anthropic%2Fclaude-opus-4-6) — Cline, Roo Code and Continue all take the same OpenAI-compatible provider: base URL, key, model ID. Here is where those fields live in each of them.
- [SDKs](/sdks?model=anthropic%2Fclaude-opus-4-6) — The official OpenAI and Anthropic SDKs, Python and Node: install, a client with the gateway's base URL and the key from the environment, one call. Your code stays your code.
- [Integrations](/integrations?model=anthropic%2Fclaude-opus-4-6) — Point the tool you already use at the gateway: a base URL and a key. The platform's live recipes, step-by-step guides, and a prompt that lets your agent do the setup.
:::

> [Errors](page:errors) [Rate limits](page:limits) [Models](page:models)
