---
url: https://limapi.com/docs/guide/anthropic-messages.md
---
# 协议三：Anthropic Messages

```
POST /api/anthropic/v1/messages
Authorization: Bearer sk-xxx
Content-Type: application/json
```

兼容 Anthropic Messages 接口，可直接使用 Anthropic SDK 或 Claude Code 接入 Claude 系列模型。

::: tip SDK base\_url
使用 Anthropic SDK 时，`base_url` 设为 `https://limapi.com/api/anthropic`（SDK 会自动拼接 `/v1/messages`）。
:::

## Request

| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| model | string | \* | 模型 ID，如 `claude-sonnet-4-6`、`claude-opus-5` |
| max\_tokens | integer | \* | 最大输出 token 数 |
| messages | array | \* | 对话消息列表 |
| system | string or array | 可选 | 系统提示词（Anthropic 格式中 system 是顶层字段） |
| stream | boolean | 可选 | 是否流式输出，默认 false |
| temperature | number | 可选 | 采样温度 |
| top\_p | number | 可选 | Nucleus sampling |
| stop\_sequences | array | 可选 | 停止序列列表 |
| tools | array | 可选 | 工具定义列表 |
| tool\_choice | object | 可选 | 工具选择策略 |
| metadata | object | 可选 | 元数据 |

**消息格式：**

```json
{
  "role": "user",
  "content": "你好"
}
```

**多模态消息：**

```json
{
  "role": "user",
  "content": [
    { "type": "text", "text": "描述这张图片" },
    {
      "type": "image",
      "source": {
        "type": "base64",
        "media_type": "image/jpeg",
        "data": "..."
      }
    }
  ]
}
```

**工具定义：**

```json
{
  "tools": [
    {
      "name": "get_weather",
      "description": "获取城市天气",
      "input_schema": {
        "type": "object",
        "properties": {
          "city": { "type": "string" }
        },
        "required": ["city"]
      }
    }
  ]
}
```

**请求示例：**

```json
{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "messages": [
    { "role": "user", "content": "你好，介绍一下自己" }
  ]
}
```

## Response（非流式）

```json
{
  "id": "msg_xxx",
  "type": "message",
  "role": "assistant",
  "content": [
    { "type": "text", "text": "你好！我是 Claude，一个 AI 助手。" }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 12,
    "output_tokens": 30,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0
  }
}
```

**响应字段：**

| 字段 | 类型 | 说明 |
|------|------|------|
| id | string | 消息 ID |
| type | string | 固定为 `message` |
| role | string | 固定为 `assistant` |
| content | array | 输出内容块列表 |
| model | string | 使用的模型 ID |
| stop\_reason | string | 停止原因：`end_turn` / `max_tokens` / `stop_sequence` / `tool_use` |
| usage | object | Token 用量统计：`cache_read_input_tokens` 按缓存命中价计费，`cache_creation_input_tokens` 按缓存写入价计费。`cache_control.ttl` 只有在该模型登记了 1h 档写入价时才会落到 1h 档，否则按 5min 档，详见 [缓存计费](/guide/#缓存计费) |

**content\[i]：**

| 字段 | 类型 | 说明 |
|------|------|------|
| type | string | `text`（文本）或 `tool_use`（工具调用） |
| text | string | 文本内容（type=text） |
| id | string | 工具调用 ID（type=tool\_use） |
| name | string | 工具名称（type=tool\_use） |
| input | object | 工具参数（type=tool\_use） |

## Response（流式）

当 `stream: true` 时，以 SSE 形式返回事件流：

```
event: message_start
data: {"type":"message_start","message":{"id":"msg_xxx","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","stop_reason":null,"usage":{"input_tokens":12,"output_tokens":0}}}

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

event: ping
data: {"type":"ping"}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"你好"}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"！"}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":30}}

event: message_stop
data: {"type":"message_stop"}
```

**流式事件类型：**

| 事件 | 说明 |
|------|------|
| `message_start` | 消息开始，包含完整的 message 对象（content 为空） |
| `content_block_start` | 内容块开始 |
| `content_block_delta` | 内容块增量（text\_delta 或 input\_json\_delta） |
| `content_block_stop` | 内容块结束 |
| `message_delta` | 消息级增量（stop\_reason 和 output usage） |
| `message_stop` | 消息结束 |
| `ping` | 心跳事件 |

## 代码示例

### Python（Anthropic SDK）

```python
import anthropic

client = anthropic.Anthropic(
    base_url="https://limapi.com/api/anthropic",
    api_key="sk-xxx",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好，介绍一下自己"}],
)

print(message.content[0].text)
```

### JavaScript（Anthropic SDK）

```javascript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://limapi.com/api/anthropic",
  apiKey: "sk-xxx",
});

const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "你好，介绍一下自己" }],
});

console.log(message.content[0].text);
```

### cURL

```bash
curl https://limapi.com/api/anthropic/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxx" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "你好，介绍一下自己"}
    ]
  }'
```

## 在 Claude Code 中使用

本端点完整支持 Claude Code（含长思考流式、工具调用、图片粘贴）。接入教程见 [AI Agent 生态 → Claude Code](/agents/claude-code)。
