接入文档

本站兼容 OpenAI Chat Completions 与 Anthropic Messages 两套协议。把客户端 Base URL 指向本站即可,无需改代码。

快速开始

  1. 1注册账号,在控制台创建令牌(令牌只在创建时返回一次明文)。
  2. 2把客户端 Base URL 改为 https://your-gateway.com/v1。
  3. 3API Key 填本站的 sk- 令牌,模型名填逻辑模型名。
models.sh
curl https://your-gateway.com/v1/models \
  -H "Authorization: Bearer sk-your-token"

接口总览

所有 AI 接口都在 /v1 下,使用同一枚 sk- 令牌鉴权,返回结构与 OpenAI / Anthropic 官方一致。

方法路径鉴权说明
POST/v1/chat/completionsBearer sk-OpenAI 兼容对话,支持 SSE 流式
POST/v1/messagesBearer sk-Anthropic 兼容对话,支持事件流
GET/v1/modelsBearer sk-按令牌权限返回可用模型
GET/api/announcements无需鉴权平台公告

请求头

Header必填说明
Authorization是Bearer sk-...,本站签发的令牌
Content-Type是application/json
Anthropic-Version否/v1/messages 可透传客户端版本头

模型列表响应

models.json
{
  "object": "list",
  "data": [
    { "id": "gpt-4o", "object": "model", "created": 0, "owned_by": "gateway" },
    { "id": "claude-3-5-sonnet", "object": "model", "created": 0, "owned_by": "gateway" }
  ]
}

只返回当前令牌有权使用、且至少有一条可用线路的模型;没有可用线路的模型不会出现在列表里。

鉴权

所有接口使用 Authorization: Bearer sk-...。 令牌与用户、分组绑定,可设置模型白名单、IP 白名单、额度上限与过期时间。 上游真实凭证加密保存在网关侧,不会出现在任何响应或日志中。

令牌鉴权

只存 sha256 与前缀

模型白名单

令牌级 / 分组级双层

IP 白名单

支持精确 IP 与 CIDR

对话接口

POST /v1/chat/completions,请求与响应均为 OpenAI 结构。model 填本站逻辑模型名,网关负责映射到上游真实模型。

request.json
{
  "model": "gpt-4o",
  "messages": [
    {"role": "system", "content": "你是一名严谨的助手"},
    {"role": "user", "content": "解释一下预扣与结算"}
  ],
  "stream": false,
  "max_tokens": 1024,
  "temperature": 0.7
}

流式调用

设置 "stream": true 后返回 text/event-stream,每帧为 data: {...},以 data: [DONE] 结束。 网关会补齐 stream_options.include_usage,并在上游未返回 usage 时追加一帧用量。

stream.py
from openai import OpenAI

client = OpenAI(api_key="sk-your-token", base_url="https://your-gateway.com/v1")

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "写一个二分查找"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

客户端断开时,网关立即取消上游请求,并按已产生的 token 结算,不会因为断连漏账。

Anthropic 协议

POST /v1/messages 接受 Anthropic Messages 请求, 内部转换为 OpenAI 结构复用同一条转发与计费链路,出口再翻译回 Anthropic 事件流 (message_start / content_block_delta / message_delta / message_stop)。

messages.sh
curl https://your-gateway.com/v1/messages \
  -H "Authorization: Bearer sk-your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-5-sonnet",
    "max_tokens": 1024,
    "stream": true,
    "messages": [{"role": "user", "content": "你好"}]
  }'

限流与超时

三维限流

IP / 令牌 / 用户各自独立计数,命中返回 429 与 Retry-After。

首字节超时

默认 30s。上游迟迟不返回首帧会直接切换线路重试。

流空闲超时

默认 60s。长时间没有新分片会中断并结算已产生的 token。

客户端断开连接时,网关会立即取消上游请求,并按已经生成的 token 结算——不会因为断连漏账, 也不会继续向上游计费。

错误码

OpenAI 入口返回 OpenAI 错误结构,Anthropic 入口返回 Anthropic 结构。

HTTPcode含义
401invalid_api_key令牌无效、已删除或格式不对
401token_expired令牌超过 expires_at
402insufficient_quota余额不足以覆盖本次预扣
403model_not_allowed分组或令牌白名单不允许该模型
403ip_not_allowed来源 IP 不在令牌白名单
404model_not_found逻辑模型未配置或已下线
429rate_limit_exceeded触发令牌/用户/IP 维度限流
502upstream_error上游失败且重试耗尽
503quota_backend_unavailable计费后端不可用,请求未被放行