一、responses 接口和 chat/completions
chat/completions接口需要使用messages字段,否则报错:
{
"error": {
"message": "field messages is required",
"type": "new_api_error",
"code": "invalid_request"
}
}
1. 两个接口的请求格式不同
| 用户输入字段 | messages | input |
| 消息格式 | role + content | 可以直接传字符串,也支持更复杂的输入结构 |
2. 如果报错
只需要把 input 改成 messages,其他参数基本不变。
Writing
curl -sS -N -i 'https://top/v1/chat/completions' \\
-H "Authorization: Bearer YOUR_API_KEY" \\
-H "Content-Type: application/json" \\
-d '{
"model": "gemini-3.1-pro",
"messages": [
{
"role": "user",
"content": "元音、辅音,用英语怎么说"
}
],
"stream": true
}'
这里的 YOUR_API_KEY 替换成你自己的 API Key。
3. 为什么之前的 Codex 请求又不一样?
正确的对应关系是:
/v1/chat/completions → messages
/v1/responses → input
二、 curl -sS -i 命令的-s、-S和-i选项
curl -sS -i 三个选项的具体作用
选项详解
| -s | silent | 安静模式 | 不显示进度条、下载速度、百分比等信息,让输出变得干净。 |
| -S | show-error | 显示错误信息 | 必须和 -s 一起使用。如果只用 -s,curl 出错时会完全静默,什么都不输出。加上 -S 后,即使在安静模式下,出错也会显示错误提示。 |
| -i | include | 包含 HTTP 响应头 | 在输出内容中同时显示 HTTP 响应头(Headers)和响应体(Body)。 |
组合含义总结
curl -sS -i 的完整意思是:
安静地发送请求,显示完整的 HTTP 响应头和响应体,如果出错则显示错误信息。
这是开发者、运维人员在写脚本或调试接口时非常常用的组合。
实际例子
curl -sS -i https://www.example.com
输出会是这样的格式:
HTTP/2 200
content-type: text/html; charset=UTF-8
date: …
server: …
cache-control: max-age=604800
…
<!doctype html>
<html>
<head>…
其他常用组合推荐
| curl -sS -i | 显示响应头 + 响应体(最常用) |
| curl -sS -I | 只显示响应头(不显示响应体) |
| curl -sS -o /dev/null -w "%{http_code}" | 只返回 HTTP 状态码 |
| curl -sS -L | 跟随重定向(302/301) |
- -s = 安静模式(不显示进度)
- -S = 配合 -s 使用,出错时显示错误
- -i = 显示 HTTP 响应头
三者组合 curl -sS -i 是调试接口时非常经典的写法。
三、curl -N 选项
curl -N 详细说明
选项说明
| -N | –no-buffer | 关闭输出缓冲,数据一到就立刻显示,不等缓冲区满了再输出 |
什么是“缓冲”?
默认情况下,curl 会把接收到的数据先存在缓冲区,等积累到一定量后再一次性输出。
这对普通下载没问题,但对于实时数据流(比如 SSE、流式 API、实时日志)就会导致:
- 数据明明已经到了,但屏幕上迟迟不显示
- 看起来像“卡住了”
- 要等很久才一次性刷出一大堆内容
加上 -N 后,curl 会关闭缓冲,数据一到就立刻显示在屏幕上。
最典型的使用场景
1. 调用 AI 流式 API(最常见)
curl -N -sS https://api.openai.com/v1/chat/completions \\
-H "Authorization: Bearer sk-xxx" \\
-H "Content-Type: application/json" \\
-d '{"model":"gpt-4o","stream":true,"messages":[{"role":"user","content":"hello"}]}'
- 不加 -N:AI 的回复会攒一堆再显示
- 加了 -N:AI 的回复会一个字一个字实时蹦出来(像打字机一样)
2. 查看实时日志
curl -N http://server/logs/stream
3. SSE(Server-Sent Events)
curl -N http://server/events
对比
| curl https://api.example.com/stream | 数据会缓冲,等一会儿才显示 |
| curl -N https://api.example.com/stream | 数据实时显示,一到就输出 |
总结
curl -N = 关闭输出缓冲,让数据实时输出,不等缓冲区满。
最常用于调用流式 API(如 ChatGPT、Claude 等 AI 接口)时,让回复实时显示。
四、例一
curl -N https://w.cc/v1/responses -H "Authorization: Bearer sk-1111" -H "Content-Type: application/json" -d '{"model":"grok-4.7","input":"帮我解释c++的静态类型和动态类型,并举例","stream":true}'
也可以加 \\ :
curl -N https://w.cc/v1/responses \\
-H "Authorization: Bearer sk-111" \\
-H "Content-Type: application/json" \\
-d '{
"model": "grok-4.7",
"input": "字母a的ASCII编码值是多少?",
"stream": true
}'
五、例二
curl -N https://s.hk/v1/responses \\
-H "Authorization: Bearer sk-1111z" \\
-H "Content-Type: application/json" \\
-d '{
"model": "deepseek-v4.1-flash",
"input": "字母a的ASCII编码值是多少?帮我举例解释下c++的动态类型和静态类型",
"stream": true
}'
六、例三
curl -sS -N -i 'https://.top/v1/chat/completions' \\
-H "Authorization: Bearer sk-11" \\
-H "Content-Type: application/json" \\
-d '{
"model": "gemini-3.1-pro",
"messages":[{"role":"user","content":"元音、辅音,用英语怎么说"}],
"stream": true
}'



