跳转到主要内容
更新日期:2026-06-14

请求格式

所有 API 请求使用 HTTPS 协议,请求体使用 JSON 格式。
默认优先使用 https://api.crazyrouter.com/v1。如果你在某个工具里不确定该填根域名还是 /v1,先参考 API Endpoint 说明

必需的请求头

Header说明
AuthorizationBearer YOUR_API_KEYAPI 认证密钥
Content-Typeapplication/json请求体格式

可选请求头

Header说明
Acceptapplication/json响应格式
Content-Encodinggzip可选。请求体使用 gzip 压缩时设置

请求示例

curl https://api.crazyrouter.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -d '{
    "model": "gpt-5.5",
    "messages": [{"role": "user", "content": "Hello"}],
    "stream": false
  }'

使用 gzip 发送请求体

如果你的请求体很大,例如每次都上传长上下文、长文档或大量消息历史,可以把原始 JSON 请求体 gzip 压缩后发送。 开启 gzip 只改变传输方式,不改变请求语义。服务端会在解析 JSON 前自动解压。 需要增加请求头:
Content-Type: application/json
Content-Encoding: gzip
Content-Encoding: gzip 表示“请求体已经 gzip 压缩”。它和 Accept-Encoding: gzip 不同,后者通常用于响应压缩。

Python

import gzip
import json
import requests

payload = {
    "model": "gpt-5.5",
    "messages": [
        {"role": "user", "content": "这里放很长的上下文或文档内容..."}
    ],
    "stream": False
}

raw = json.dumps(payload, ensure_ascii=False).encode("utf-8")
compressed = gzip.compress(raw)

resp = requests.post(
    "https://api.crazyrouter.com/v1/chat/completions",
    headers={
        "Authorization": "Bearer sk-xxxxxxxx",
        "Content-Type": "application/json",
        "Content-Encoding": "gzip",
    },
    data=compressed,
    timeout=120,
)

print(resp.status_code, resp.text)

Node.js

import zlib from "node:zlib";

const payload = {
  model: "gpt-5.5",
  messages: [
    { role: "user", content: "这里放很长的上下文或文档内容..." },
  ],
  stream: false,
};

const raw = Buffer.from(JSON.stringify(payload));
const compressed = zlib.gzipSync(raw);

const resp = await fetch("https://api.crazyrouter.com/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk-xxxxxxxx",
    "Content-Type": "application/json",
    "Content-Encoding": "gzip",
  },
  body: compressed,
});

console.log(resp.status, await resp.text());

cURL

cat > body.json <<'JSON'
{
  "model": "gpt-5.5",
  "messages": [
    {
      "role": "user",
      "content": "这里放很长的上下文或文档内容..."
    }
  ],
  "stream": false
}
JSON

gzip -c body.json > body.json.gz

curl https://api.crazyrouter.com/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Content-Encoding: gzip" \
  --data-binary @body.json.gz

自动按大小启用 gzip

如果你的系统是一个工作流,通常不需要在业务逻辑里手工区分“哪些请求压缩、哪些不压缩”。建议在统一的 HTTP 客户端封装层判断 JSON body 大小,超过阈值再自动 gzip。 推荐阈值:
body >= 128KB:启用 gzip
body < 128KB:保持原样发送
如果你的请求经常是 MB 级,也可以把阈值设为 256KB。小请求不建议强制 gzip,因为压缩开销和 gzip 头部可能让体积反而变大。 Python 封装示例:
import gzip
import json
import requests

def post_json(url, payload, api_key, gzip_threshold=128 * 1024):
    raw = json.dumps(payload, ensure_ascii=False).encode("utf-8")

    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    }

    if len(raw) >= gzip_threshold:
        body = gzip.compress(raw)
        headers["Content-Encoding"] = "gzip"
    else:
        body = raw

    return requests.post(url, headers=headers, data=body, timeout=120)
Node.js 封装示例:
import zlib from "node:zlib";

async function postJson(url, payload, apiKey, gzipThreshold = 128 * 1024) {
  const raw = Buffer.from(JSON.stringify(payload));
  const headers = {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  };

  const body =
    raw.length >= gzipThreshold
      ? (() => {
          headers["Content-Encoding"] = "gzip";
          return zlib.gzipSync(raw);
        })()
      : raw;

  return fetch(url, {
    method: "POST",
    headers,
    body,
  });
}
适用场景:
  • 单次请求体通常超过 1MB
  • 重复上传长上下文或长文档
  • 客户端可以直接控制 HTTP body 和请求头

流式请求

设置 stream: true 启用 SSE 流式输出:
curl https://api.crazyrouter.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -d '{
    "model": "gpt-5.5",
    "messages": [{"role": "user", "content": "Hello"}],
    "stream": true
  }'
流式响应格式为 Server-Sent Events (SSE),每个事件以 data: 开头,最后以 data: [DONE] 结束。

在线调试

你可以使用以下方式在线调试 API:
  1. Crazyrouter Playground - 登录后访问 crazyrouter.com/console/playground 直接在浏览器中测试
  2. cURL - 使用命令行工具发送请求
  3. Postman / Apifox - 使用 API 调试工具