# 用 Anthropic 协议接入

> 用 Anthropic SDK 或 Claude Code 指向 TokRouter 的 /v1/messages 端点,可以用同一把 Key 调用任意厂商的模型。

网关原生接受 Anthropic Messages 协议(`POST /v1/messages`)。这意味着 **Anthropic SDK 与 Claude Code
只需要改一个 base URL**,不需要适配层。

## Anthropic Python SDK

```python
import os
import anthropic

client = anthropic.Anthropic(
    api_key=os.environ["TOKROUTER_API_KEY"],
    base_url="https://api.tokrouter.dev",   # SDK 会自己拼上 /v1/messages
)

msg = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "用一句话解释 SSE"}],
)
print(msg.content[0].text)
```

## TypeScript SDK

```ts

const client = new Anthropic({
  apiKey: process.env.TOKROUTER_API_KEY!,
  baseURL: 'https://api.tokrouter.dev',
})
```

## 直接用 HTTP

```bash
curl https://api.tokrouter.dev/v1/messages \
  -H "x-api-key: $TOKROUTER_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-5-5",
    "max_tokens": 512,
    "messages": [{"role": "user", "content": "你好"}]
  }'
```

<Callout type="info" title="两种鉴权头都接受">
Anthropic 协议用 `x-api-key`,`OpenAI` 协议用 `Authorization: Bearer`。指向本网关时两种都可用,
按你使用的 SDK 默认值即可,不需要同时传。
</Callout>

## 用 Anthropic 协议调其他厂商的模型

`model` 字段决定上游厂商,与入站协议无关:

```python
msg = client.messages.create(
    model="gpt-5.4",        # Anthropic 协议 → OpenAI 模型
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好"}],
)
```

<Callout type="warn" title="协议互转有边界">
字段按 Anthropic Messages 语义解释后再映射到目标厂商。目标模型不支持的能力(例如某些模型没有
视觉输入或工具调用)会在网关侧报错,而不是静默降级。字段级差异见[协议互转](/zh/guides/protocol-interop/)。
</Callout>
