from openai import OpenAI
client = OpenAI(base_url="https://api.monkey.ceo/v1/v1", api_key="sk-…")
r = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(r.choices[0].message.content)认证
所有请求在 Authorization 头里携带 Bearer Key。Key 以 sk- 开头,只在创建时显示一次。
为每个应用创建独立的 Key,便于单独限额、禁用或删除。
export RELAY_API_KEY="sk-…"
# 每个请求
Authorization: Bearer $RELAY_API_KEY对话补全
POST /v1/chat/completions,参数与 OpenAI 一致:model、messages、temperature、max_tokens、tools 等。
不支持某个参数的模型会忽略它,而不是报错。
curl https://api.monkey.ceo/v1/v1/chat/completions \
-H "Authorization: Bearer $RELAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"你好"}]}'流式输出
设置 stream: true,响应为 Server-Sent Events。[DONE] 之前的分片携带 usage。
中途断开只为已生成的 tokens 付费。
$ curl -N https://api.monkey.ceo/v1/v1/chat/completions \
-H "Authorization: Bearer $RELAY_API_KEY" \
-d '{"model":"gpt-4o-mini","stream":true,
"messages":[{"role":"user","content":"你好"}]}'
data: {"choices":[{"delta":{"content":"你好"}}]}
data: {"choices":[{"delta":{"content":"!"}}]}
data: {"usage":{"prompt_tokens":9,"completion_tokens":3}}
data: [DONE]模型列表
GET /v1/models 返回当前可用的模型目录,与 模型页 一致。
curl https://api.monkey.ceo/v1/v1/models -H "Authorization: Bearer $RELAY_API_KEY"计费
费用 = 输入 tokens × 输入单价 + 输出 tokens × 输出单价。余额美元预付,不过期,无订阅。
上游报错、超时与限流不收费。
| 阶段 | 发生了什么 |
|---|---|
| reserve | 调用前按估算预扣;余额不足返回 402 |
| settle | 完成后按实际 token 扣费,多余部分释放 |
| release | 上游失败时全额释放 |
错误码
错误响应与 OpenAI 格式一致:{"error": {"type", "code", "message"}}。
| 状态码 | 含义 |
|---|---|
| 401 | Key 无效或已禁用 |
| 402 / 403 | 余额不足,或 Key 无权访问该模型 |
| 429 | 超过速率或额度限制,参考 retry-after |
| 503 | 模型暂停(model_paused),不计费 |
| 5xx | 上游异常,网关会自动重试其他渠道 |