[ PROMPT_NODE_23812 ]
Curl 使用示例
[ SKILL_DOCUMENTATION ]
# Claude API — cURL / 原始 HTTP
当用户需要原始 HTTP 请求或在没有官方 SDK 的语言中工作时,请使用这些示例。
## 设置
bash
export ANTHROPIC_API_KEY="your-api-key"
---
## 基本消息请求
bash
curl https://api.anthropic.com/v1/messages
-H "Content-Type: application/json"
-H "x-api-key: $ANTHROPIC_API_KEY"
-H "anthropic-version: 2023-06-01"
-d '{
"model": "claude-opus-4-7",
"max_tokens": 16000,
"messages": [
{"role": "user", "content": "法国的首都是哪里?"}
]
}'
### 解析响应
使用 `jq` 从 JSON 响应中提取字段。不要使用 `grep`/`sed` —
JSON 字符串可以包含任何字符,正则表达式解析会在引号、
转义符或多行内容上出错。
bash
# 捕获响应,然后提取字段
response=$(curl -s https://api.anthropic.com/v1/messages
-H "Content-Type: application/json"
-H "x-api-key: $ANTHROPIC_API_KEY"
-H "anthropic-version: 2023-06-01"
-d '{"model":"claude-opus-4-7","max_tokens":16000,"messages":[{"role":"user","content":"Hello"}]}')
# 打印第一个文本块 (-r 去除 JSON 引号)
echo "$response" | jq -r '.content[0].text'
# 读取使用量字段
input_tokens=$(echo "$response" | jq -r '.usage.input_tokens')
output_tokens=$(echo "$response" | jq -r '.usage.output_tokens')
# 读取停止原因 (用于工具使用循环)
stop_reason=$(echo "$response" | jq -r '.stop_reason')
# 提取所有文本块 (content 是一个数组;过滤 type=="text")
echo "$response" | jq -r '.content[] | select(.type == "text") | .text'
---
## 流式传输 (SSE)
bash
curl https://api.anthropic.com/v1/messages
-H "Content-Type: application/json"
-H "x-api-key: $ANTHROPIC_API_KEY"
-H "anthropic-version: 2023-06-01"
-d '{
"model": "claude-opus-4-7",
"max_tokens": 64000,
"stream": true,
"messages": [{"role": "user", "content": "写一首俳句"}]
}'
响应是服务器发送事件 (SSE) 的流:
event: message_start
data: {"type":"message_start","message":{"id":"msg_...","type":"message",...}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"st