cURL
使用 cURL 直接调用 OpenModel 支持的所有 API 格式
cURL 是测试和调用 OpenModel API 最简单的方式。无需安装任何 SDK,直接在命令行中操作。
准备工作
将 API Key 设置为环境变量,避免在每条命令中重复输入:
export OPENMODEL_API_KEY="om-your-api-key"OpenAI 格式(Responses API)
基础请求
curl https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"input": "生命的意义是什么?"
}'流式响应
使用 -N 参数(或 --no-buffer)禁用输出缓冲,实时查看事件流:
curl -N https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"input": "写一首关于海洋的诗。",
"stream": true
}'带系统指令
curl https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"instructions": "你是一个说话像海盗的助手。",
"input": "给我讲讲天气。"
}'多轮对话
curl https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"input": [
{"role": "user", "content": "我叫小明。"},
{"role": "assistant", "content": "你好小明!有什么可以帮你的吗?"},
{"role": "user", "content": "我叫什么名字?"}
]
}'Anthropic 格式(Messages API)
基础请求
curl https://api.openmodel.ai/v1/messages \
-H "x-api-key: $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "用一个简单的例子解释递归。"}
]
}'流式响应
curl -N https://api.openmodel.ai/v1/messages \
-H "x-api-key: $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"stream": true,
"messages": [
{"role": "user", "content": "写一篇关于人工智能的短文。"}
]
}'带系统提示词
curl https://api.openmodel.ai/v1/messages \
-H "x-api-key: $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"system": "你是一位简洁的技术写手。请用要点回答。",
"messages": [
{"role": "user", "content": "TypeScript 相比 JavaScript 有哪些优势?"}
]
}'Token 计数
curl https://api.openmodel.ai/v1/messages/count_tokens \
-H "x-api-key: $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"messages": [
{"role": "user", "content": "这条消息有多少个 token?"}
]
}'Gemini 格式
基础请求
curl "https://api.openmodel.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{"parts": [{"text": "解释相对论。"}]}
]
}'流式响应
使用 streamGenerateContent 端点并添加 alt=sse 参数:
curl -N "https://api.openmodel.ai/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{"parts": [{"text": "写一个关于时间旅行者的故事。"}]}
]
}'多轮对话
curl "https://api.openmodel.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{"role": "user", "parts": [{"text": "2 + 2 等于多少?"}]},
{"role": "model", "parts": [{"text": "2 + 2 = 4。"}]},
{"role": "user", "parts": [{"text": "再乘以 3。"}]}
]
}'带系统指令
curl "https://api.openmodel.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"systemInstruction": {
"parts": [{"text": "你是一个编程助手。"}]
},
"contents": [
{"parts": [{"text": "写一个 Python 函数来反转字符串。"}]}
]
}'使用 jq 解析响应
jq 是一个命令行 JSON 处理器,可以方便地从 API 响应中提取特定字段。
# 提取 OpenAI 响应文本
curl -s https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"input": "用 3 种语言说你好。"
}' | jq -r '.output[] | select(.type == "message") | .content[] | .text'
# 提取 Anthropic 响应文本
curl -s https://api.openmodel.ai/v1/messages \
-H "x-api-key: $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "用 3 种语言说你好。"}
]
}' | jq -r '.content[0].text'
# 提取 Gemini 响应文本
curl -s "https://api.openmodel.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{"parts": [{"text": "用 3 种语言说你好。"}]}
]
}' | jq -r '.candidates[0].content.parts[0].text'提取用量统计
# OpenAI 格式
curl -s https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"input": "你好!"
}' | jq '.usage'
# Anthropic 格式
curl -s https://api.openmodel.ai/v1/messages \
-H "x-api-key: $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "你好!"}]
}' | jq '.usage'实用技巧
保存响应到文件
curl -s https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"input": "生成一个用户资料的 JSON Schema。"
}' > response.json详细模式用于调试
使用 -v 查看请求和响应头信息,这在排查认证或连接问题时非常有用:
curl -v https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o", "input": "你好"}'从文件加载请求体
对于复杂请求,可以将 JSON 请求体存储在文件中:
# 创建请求文件
cat > request.json << 'EOF'
{
"model": "gpt-4o",
"instructions": "你是一位数据分析师。",
"input": "分析过去十年全球可再生能源的发展趋势。"
}
EOF
# 发送请求
curl https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d @request.json设置超时
使用 --max-time 设置总超时时间,--connect-timeout 设置连接超时:
curl --max-time 120 --connect-timeout 10 \
https://api.openmodel.ai/v1/responses \
-H "Authorization: Bearer $OPENMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o", "input": "你好"}'下一步
- OpenAI SDK — 使用 OpenAI SDK 获得更丰富的开发体验
- Anthropic SDK — 使用 Anthropic SDK 调用 Messages API
- 流式响应 — 了解流式事件格式
- 认证 — 所有认证方式