API 接入文档
一个地址、一个 Key,就能调用 GPT、Claude、Gemini 等主流模型。兼容 OpenAI 和 Anthropic 两种格式,现有代码改个地址就能用。
目录
快速开始 选择模型 术语速查 Claude Code Codex CLI Cherry Studio 等客户端 让 AI 帮你配置 Claude 原生接口 Responses 接口 图片生成与编辑 流式输出 参数与输出上限 计费方式 本地验算 报错怎么办 兼容说明
快速开始
只需要三样东西:接口地址、API Key 和模型名称。准备好之后,几分钟就能发出第一条请求。
| 需要准备 | 填写内容 | 说明 |
|---|---|---|
| 接口地址(Base URL) | https://api.302api.com | OpenAI、Anthropic 两种格式共用这一个地址 |
| API Key(密钥) | 在控制台创建 | 相当于账号密码,用来识别你并扣费 |
| 模型名称(Model ID) | gpt-6-luna、claude-sonnet-5-5 等 | 见选择模型,必须一字不差 |
- 创建 Key 并保存到本机在控制台创建 API Key,保存到环境变量
API302_KEY。不要写进代码、网页前端,也不要截图外发。 - 发送第一条请求复制下面任意一种写法运行,能看到模型回复就说明接通了。
- 核对用量返回结果里的
usage是本次消耗的 Token 数;到控制台“调用记录”可以看到对应扣费。
curl https://api.302api.com/v1/chat/completions \
-H "Authorization: Bearer ${API302_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-6-luna","messages":[{"role":"user","content":"你好"}],"max_completion_tokens":256}'import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["API302_KEY"], base_url="https://api.302api.com/v1",
max_retries=0, timeout=120.0)
result = client.chat.completions.create(
model="gpt-6-luna",
messages=[{"role": "user", "content": "你好"}],
max_completion_tokens=256,
)
print(result.choices[0].message.content)
print(result.usage)import os
import anthropic
client = anthropic.Anthropic(api_key=os.environ["API302_KEY"], base_url="https://api.302api.com",
max_retries=0, timeout=120.0)
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "你好"}],
)
print("".join(block.text for block in message.content if block.type == "text"))
print(message.usage)const response = await fetch("https://api.302api.com/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.API302_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-6-luna",
messages: [{ role: "user", content: "你好" }],
max_completion_tokens: 256,
}),
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data.error));
console.log(data.choices[0].message.content);
console.log(data.usage);接口地址填 https://api.302api.com 或 https://api.302api.com/v1 都可以,两种写法长期可用。如果客户端报“找不到路径”,换另一种写法试试。
怎么判断回复是否完整
finish_reason为stop:正常结束。finish_reason为length:达到输出上限被截断,回答不完整,需要调大上限。finish_reason为tool_calls:模型要求调用工具,需要你的程序执行工具后把结果发回去。- 没有返回
usage不代表免费,请到控制台调用记录核对。
选择模型
不知道选哪个?日常对话和批量任务用便宜的 luna 或 Haiku,写代码和复杂分析用 astra、Opus 或 Fable,拿不准就用 sol 或 Sonnet。
| 模型名称 | 适合做什么 | 可用接口 |
|---|---|---|
gpt-6-astra | 最强推理与编程,复杂任务 | Chat、Responses |
gpt-6-sol | 能力与价格均衡的主力模型 | Chat、Responses |
gpt-6-luna | 便宜、快,适合批量和简单任务 | Chat、Responses |
claude-fable-5-1 | 高难度推理、长时间智能体任务 | Claude 原生、Chat |
claude-opus-5-5 | 长时间编程与复杂工作流 | Claude 原生、Chat |
claude-sonnet-5-5 | 速度与能力兼顾,Claude Code 首选 | Claude 原生、Chat |
claude-haiku-5-5 | 高吞吐、低延迟的轻量任务 | Claude 原生、Chat |
gemini-3.8-flash | 多模态对话、软件工程与智能体 | Chat |
deepseek-v4-pro | 推理与编程,回复前先输出思考过程 | Chat |
DeepSeek-V4.1-Flash-1017 | 速度快、价格低,回复前先输出思考过程;旧名 deepseek-v4.1-flash 仍可调用 | Chat |
gpt-image-2.5-flaregpt-image-2.5-sunburst | 图片生成与编辑 | 图片接口 |
gemini-3-pro-imagegemini-3.1-flash-image | Nano Banana 系列生图 | Chat(非流式) |
表中“Chat”指 /v1/chat/completions,“Responses”指 /v1/responses,“Claude 原生”指 /v1/messages。全部模型的价格见模型与价格,实时清单和当前售价以控制台模型页为准,也可以用接口查询(不产生费用):
curl https://api.302api.com/v1/models \
-H "Authorization: Bearer ${API302_KEY}"术语速查
第一次接触 API?下面这些词在文档里会反复出现。
- API KeyAPI Key
- 调用接口的密钥,相当于账号密码。泄露后别人可以花你的余额,发现泄露请立即在控制台停用并换新。
- 接口地址Base URL
- 程序把请求发到哪里。本站统一是
https://api.302api.com。 - 模型名称Model ID
- 告诉接口要用哪个模型,比如
gpt-6-luna,必须一字不差。 - Tokentoken
- 模型计算文字长度的单位,也是计费单位。文字越长 Token 越多,准确数量以每次返回的
usage为准。 - 输入 / 输出input / output
- 输入是你发给模型的内容(提问、历史对话、文件),输出是模型生成的回复。两者单价不同,输出通常更贵。
- 上下文context
- 模型一次能“看到”的全部内容,包括历史对话。越长越慢、越贵,太长时可以压缩对话或开新会话。
- 缓存cache
- 反复发送的相同开头内容(如固定的系统提示)可以命中缓存,按更低价格计费。
- 流式输出stream
- 边生成边返回,文字像打字一样逐段出现;关闭时要等全部生成完才一次性返回。
- SDKSDK
- 官方提供的代码库,替你处理请求细节。本站兼容 OpenAI SDK 和 Anthropic SDK,改个地址就能用。
- 协议格式API format
- 请求和返回的格式约定。本站同时支持 OpenAI 格式和 Anthropic(Claude)格式。
接入常用工具
用现成的工具(编程助手、聊天客户端)接入本站,一般只需要填地址、Key 和模型名称,不用写代码。
Claude Code
分步配置、平台差异与排错:Claude Code 完整指南 →
Claude Code 的后台任务(标题生成、子任务等)默认会调用本站不提供的旧型号,不设置会返回 403,导致部分功能静默失效。按下面的写法把 Opus、Sonnet、Haiku 三个默认模型都指向本站型号即可。
export ANTHROPIC_BASE_URL="https://api.302api.com"
export ANTHROPIC_API_KEY="$API302_KEY"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5-5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-5-5"
claude --model claude-sonnet-5-5$env:ANTHROPIC_BASE_URL = "https://api.302api.com"
$env:ANTHROPIC_API_KEY = $env:API302_KEY
$env:ANTHROPIC_DEFAULT_OPUS_MODEL = "claude-opus-5-5"
$env:ANTHROPIC_DEFAULT_SONNET_MODEL = "claude-sonnet-5-5"
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL = "claude-haiku-5-5"
claude --model claude-sonnet-5-5写进 ~/.claude/settings.json(只对某个项目生效则用项目里的 .claude/settings.json),Key 仍放在系统环境变量 ANTHROPIC_API_KEY 里:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.302api.com",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5-5",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5-5",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-5-5"
}
}首次启动如果询问是否使用检测到的 API Key,选择使用。会话中可以用 /model 切换到 claude-opus-5-5、claude-fable-5-1 等型号。
Codex CLI
配置文件位置、服务商与调用核对:Codex CLI 完整指南 →
把下面内容写进 ~/.codex/config.toml,Key 放在环境变量 API302_KEY。Codex 使用 Responses 格式,可选 gpt-6-astra、gpt-6-sol、gpt-6-luna。
model = "gpt-6-astra"
model_provider = "302api"
[model_providers.302api]
name = "302API"
base_url = "https://api.302api.com/v1"
env_key = "API302_KEY"
wire_api = "responses"DeepSeek Harness(DSH)
通过 Pi AI 插件接入本站,并配置支持看图模型的图片输入声明:DSH 接入与图片配置教程 →
Cherry Studio 等图形客户端
- 新建服务商类型选“OpenAI 兼容”;想用 Claude 原生功能可选“Anthropic”。
- 填写地址和 KeyAPI 地址填
https://api.302api.com,粘贴本站 API Key。 - 添加模型手动添加模型表里的名称,保存后即可对话。
生图需要客户端本身支持图片功能;在聊天里选图片型号,不一定会自动走图片接口。分步图文教程:Cherry Studio · WorkBuddy · Cline(VS Code)
让 AI 帮你配置生图
把下面的指令发给有本地操作能力的 AI 工具(如 Codex),它会按你当前使用的工具完成配置。API Key 请在本地安全填写,不要发进聊天。
请为我当前使用的 AI 工具接入 302API 生图。
先阅读最新文档:https://302api.com/docs
Base URL:https://api.302api.com
1. 检查当前工具,优先使用已有生图配置;不支持时再用插件、MCP 或 Skill。保留原有主模型和其他配置,修改前备份。
2. 按文档选择图片模型、接口与参数,不要把生图模型直接当主聊天模型,也不要切换到其他收费服务。
3. 使用我本地配置的 Key;缺少时引导我安全填写,不要让我发到聊天中,不写入代码、日志或截图。
4. 正确提取并保存图片,返回文件或预览;处理超时和错误,结果未知时不要自动重试。
5. 先完成免费检查和模拟验证;真实生图或自动检测前,确认模型、次数和费用上限,已有明确授权则沿用。
6. 完成后说明使用方法、改动和验证结果;未真实生图时明确标注“真实生图未验证”。Claude 原生接口
如果你的程序原本就用 Anthropic(Claude)官方格式,直接把地址换成本站即可,Key、余额和模型名称与其他接口通用。
curl https://api.302api.com/v1/messages \
-H "x-api-key: ${API302_KEY}" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5-5","max_tokens":512,"messages":[{"role":"user","content":"你好"}]}'max_tokens(最多输出多少 Token)必填。Sonnet、Opus、Fable 默认会先“思考”,思考也算输出,建议不低于 512。- 请求头需要
anthropic-version: 2023-06-01。鉴权用x-api-key或Authorization: Bearer都可以。 - 读取回复时只取类型为
text的内容块;开启思考时,第一块可能是思考过程(thinking)。 anthropic-beta测试功能按白名单放行(如 Claude Code、交错思考、上下文管理、结构化输出、1 小时缓存),其余会被自动去掉。- Token 计数接口
/v1/messages/count_tokens暂未开放。
Responses 接口
Responses 是 OpenAI 的新一代接口格式,Codex 等编程工具默认使用它。GPT-6 三个文本模型都支持。
curl https://api.302api.com/v1/responses \
-H "Authorization: Bearer ${API302_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-6-sol","input":"用一句话解释递归","max_output_tokens":256}'和 Chat 接口的区别:请求里用 input 代替 messages;回复在 output 里类型为 output_text 的内容中,OpenAI SDK 可以直接读 result.output_text。
目前只开放创建(POST /v1/responses),不支持按 ID 查询或删除历史响应;多轮对话请在请求里自己带上历史。
图片生成与编辑
图片模型不能像聊天模型那样选上就用,需要额外配置:GPT 图片走专门的图片接口,支持生成和编辑;Gemini 图片(Nano Banana)走对话接口,只支持生成,而且要关掉流式等设置。
| GPT 图片 | Gemini 图片(Nano Banana) | |
|---|---|---|
| 模型名称 | gpt-image-2.5-flaregpt-image-2.5-sunburst | gemini-3-pro-imagegemini-3.1-flash-image |
| 接口 | POST /v1/images/generations编辑图片用 /v1/images/edits | POST /v1/chat/completions |
| 必须设置 | prompt(图片描述) | "stream": false(关闭流式) |
| 可选 | size、quality | max_tokens(可选输出预算,上限由模型校验) |
| 不能带 | response_format、style 等 | temperature、top_p 等采样参数 |
| 图片在哪 | data[0].b64_json(Base64 编码) | message.content 里的 image_url(data URI) |
GPT 图片
| 参数 | 可选值 | 不填时 |
|---|---|---|
size(尺寸) | 1024x1024、1536x1024(横)、1024x1536(竖) | 1024x1024 |
quality(质量) | low、medium、high,越高越慢、越贵 | low |
第 1 步:生成,结果保存为 image-response.json
curl --fail-with-body --max-time 210 https://api.302api.com/v1/images/generations \
-H "Authorization: Bearer ${API302_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2.5-flare","prompt":"白色背景中央的蓝色圆形,无文字","size":"1024x1024","quality":"low"}' \
-o image-response.json第 2 步:把结果解码成 PNG 图片
import base64, json
from pathlib import Path
result = json.loads(Path("image-response.json").read_text())
if "error" in result:
raise SystemExit(result["error"])
Path("generated.png").write_bytes(base64.b64decode(result["data"][0]["b64_json"]))
print("saved generated.png", result.get("usage"))编辑已有图片(上传一张 PNG / JPEG / WebP,大小由模型服务校验)
curl --fail-with-body --max-time 210 https://api.302api.com/v1/images/edits \
-H "Authorization: Bearer ${API302_KEY}" \
-F "model=gpt-image-2.5-flare" -F "image=@generated.png;type=image/png" \
-F "prompt=把圆形改成红色" -F "size=1024x1024" -F "quality=low" \
-o edit-response.json每次只出一张 PNG,不支持批量生成、流式预览、图片 URL 输入,也不支持 response_format、style 参数。
Gemini 图片
用对话接口,必须设置 "stream": false;modalities 可不填(默认就是文字加图片,填的话写 ["text", "image"]);max_tokens 可不填,填写时须为正整数,实际支持上限由模型服务校验。不要带 temperature、top_p 等参数。图片以 Base64 编码的形式放在回复内容里:
第 1 步:生成
curl --fail-with-body --max-time 210 https://api.302api.com/v1/chat/completions \
-H "Authorization: Bearer ${API302_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"gemini-3.1-flash-image","messages":[{"role":"user","content":"生成一张蓝色圆形图片,无文字"}],"modalities":["text","image"],"stream":false}' \
-o gemini-response.json第 2 步:取出图片并保存
import base64, json, re
from pathlib import Path
result = json.loads(Path("gemini-response.json").read_text())
if "error" in result:
raise SystemExit(result["error"])
content = result["choices"][0]["message"]["content"]
parts = content if isinstance(content, list) else [{"type": "text", "text": content or ""}]
saved = 0
for part in parts:
if part.get("type") == "image_url":
match = re.match(r"data:image/(\w+);base64,(.+)", part["image_url"]["url"], re.S)
if match:
saved += 1
Path(f"gemini-{saved}.{match.group(1)}").write_bytes(base64.b64decode(match.group(2)))
elif part.get("text"):
print(part["text"])
print(f"saved {saved} image(s)", result.get("usage"))在客户端里使用
- GPT 图片:要用客户端里的“绘画 / 图片生成”功能(调用 OpenAI 图片接口的那种),服务商地址填
https://api.302api.com,Key 同上,模型填gpt-image-2.5-flare。在普通聊天窗口里选它不会出图。 - Gemini 图片:可以在聊天窗口里用,但要在这个模型的设置里关闭流式输出、关闭温度(Temperature)和 Top-P,最大输出 Token 可不填,或按模型能力设置。
- 客户端不支持生图时,直接用上面的代码最省事,或者把“让 AI 帮你配置生图”指令发给 Codex 等 AI 工具,让它帮你配置。
常见报错
| 提示 | 原因与处理 |
|---|---|
| 该图片模型尚未开放此接口 | 把 GPT 图片模型放进了聊天接口,改用图片接口或客户端的绘画功能 |
| 仅支持非流式调用 | 关闭流式输出("stream": false) |
| 不支持这些参数:xxx | 去掉提示里列出的参数,常见的是 temperature、top_p、response_format |
| max_tokens 超出模型支持范围 | 按所选模型的错误提示调整输出预算,本站不另设统一 Token 上限 |
高质量出图可能要一两分钟,建议把客户端超时设到 210 秒以上。超时或断线不代表没生成(也可能已经扣费),先到调用记录核对。可以在请求头带 Idempotency-Key(一个随机字符串):同一个值重复提交会直接返回 409,不会重复生成和扣费。
流式输出
开启后,回复会像打字一样一段段返回,适合聊天界面;在请求里加上 "stream": true 即可。
| 接口 | 每段内容在哪 | 怎么判断结束、用量在哪 |
|---|---|---|
| Chat | choices[].delta.content | 出现 finish_reason;最后一段带 usage |
| Responses | response.output_text.delta 事件 | response.completed 事件里的 usage |
| Claude 原生 | content_block_delta 事件 | message_stop;用量在 message_start 和 message_delta |
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["API302_KEY"], base_url="https://api.302api.com/v1",
max_retries=0, timeout=210.0)
stream = client.chat.completions.create(
model="gpt-6-luna",
messages=[{"role": "user", "content": "用一句话介绍自己"}],
max_completion_tokens=256,
stream=True,
stream_options={"include_usage": True},
)
usage, finish = None, None
for chunk in stream:
if chunk.usage:
usage = chunk.usage
for choice in chunk.choices:
print(choice.delta.content or "", end="", flush=True)
finish = choice.finish_reason or finish
print("\nfinish:", finish, "usage:", usage)import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["API302_KEY"], base_url="https://api.302api.com/v1",
max_retries=0, timeout=210.0)
stream = client.responses.create(model="gpt-6-luna", input="用一句话解释递归",
max_output_tokens=256, stream=True)
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
elif event.type == "response.completed":
print("\nusage:", event.response.usage)
elif event.type in ("response.failed", "response.incomplete", "error"):
raise SystemExit(f"未正常完成:{event.type}")建议用 SDK 解析,不要自己按网络分块拆 JSON。流开始后 HTTP 状态码已经是 200,中途出错会以 error 事件返回;finish_reason 为 length 表示达到输出上限被截断了。
参数与输出上限
“输出上限”就是最多让模型写多少 Token。不同接口的字段名不同:
| 接口 | 输出上限字段 | 说明 |
|---|---|---|
| Chat | max_completion_tokens | GPT-6 用这个字段;传旧的 max_tokens 会自动转换 |
| Responses | max_output_tokens | 模型的思考过程也算在内 |
| Claude 原生 | max_tokens | 必填 |
为什么建议设置:每次请求前,系统会按“最多可能花多少钱”临时冻结一部分余额,结束后按实际用量结算、退回多余部分。上限设得合理,冻结的钱就少,余额不多时可以避免返回 402。
填写时须为正整数,实际支持的输入上下文与输出上限由所选模型及厂商接口校验,本站不再设置统一的体积或 Token 上限。开关类参数请传 true / false,不要加引号。
计费方式
按实际用了多少 Token 收费,用多少扣多少,没有月费。价格以美元 / 百万 Token 标注,扣费时按汇率换算成人民币。
| 厂家 | 本站售价 |
|---|---|
| OpenAI(GPT) | 官方价的 88% |
| Anthropic(Claude) | 官方价的 95% |
| Google(Gemini) | 官方价的 91% |
| DeepSeek | 官方分时价的 26%:北京时间周一至周五(法定节假日除外)9:00–12:00、14:00–18:00 按高峰价,其余时段按空闲价,以请求开始时间为准 |
每个模型的实时单价见控制台模型页,上表是折扣规则。
一次请求的费用 = 普通输入 + 缓存读取 + 缓存写入 + 输出,各部分按各自单价计算,互不重复。模型的思考过程计入输出。
长上下文加价
输入特别长时,官方会对整笔请求加价,本站同样执行:
| 模型 | 超过多少输入 Token | 整笔请求的价格 |
|---|---|---|
gpt-6-astra / gpt-6-sol / gpt-6-luna | 272,000 | 输入和缓存 ×2,输出 ×1.5 |
claude-haiku-5-5 | 100,000 | 输入、缓存和输出都 ×5 |
缓存与图片
- Claude 缓存:返回的
input_tokens只是没命中缓存的部分,总输入还要加上cache_read_input_tokens和cache_creation_input_tokens。缓存写入分 5 分钟和 1 小时两档,价格不同;打了缓存标记也不保证一定命中。 - 图片:按文字输入、图片输入、文字输出、图片输出分别计价;本站 Gemini 图片模型命中缓存的部分免费。
详细计算公式
费用(USD)=(普通输入 × 输入价 + 缓存读取 × 缓存读价 + 5 分钟写入 × 写入价 + 1 小时写入 × 1 小时写入价 + 输出 × 输出价)÷ 1,000,000各协议在哪里看用量
| 协议 | 普通输入怎么算 | 缓存字段 |
|---|---|---|
| Chat | prompt_tokens 减去缓存读取和缓存写入 | prompt_tokens_details.cached_tokens(读取)prompt_tokens_details.cache_write_tokens(写入) |
| Responses | input_tokens 减去缓存读取和缓存写入 | input_tokens_details.cached_tokensinput_tokens_details.cache_write_tokens |
| Claude 原生 | input_tokens 本身就是普通输入,不用再减 | cache_read_input_tokens(读取)cache_creation_input_tokens(写入,按 cache_creation 分 5 分钟 / 1 小时) |
total_tokens 只是合计,不是额外收费项。思考 Token 已经包含在输出里,不要重复计算。
一个可以照着复算的例子
以下 Token 数和单价都是虚构的教学数据,不对应任何在售模型。假设一次请求总输入 10,000 Token,其中普通输入 3,000、缓存读取 6,000、5 分钟写入 800、1 小时写入 200,输出 2,000:
| 分类 | Token 数 | 假设单价(美元 / 百万) | 费用(美元) |
|---|---|---|---|
| 普通输入 | 3,000 | 2.00 | 0.006000 |
| 缓存读取 | 6,000 | 0.20 | 0.001200 |
| 5 分钟写入 | 800 | 2.50 | 0.002000 |
| 1 小时写入 | 200 | 4.00 | 0.000800 |
| 输出 | 2,000 | 10.00 | 0.020000 |
| 合计 | 0.030000 |
用完整单价计算,中间步骤不要四舍五入;最后再按账户适用汇率换算成人民币。
账单内部保留更高精度,页面显示的金额经过四舍五入,无法据此精确反推单笔费用。如果某次上游没有返回可核对的用量,这笔会先进入人工核对,不会按估算扣费。
本地验算
计价公式公开。使用文本调用的完整用量与对应客户单价,可在本机查看逐项费用。仅需 Python 3.10+,无需 API Key,不会发起模型调用。
费用 = Σ(各类 Token 数 × 对应客户单价 × 适用倍率)÷ 1,000,000。客户单价已含折扣,不重复打折;合计后按四舍五入保留 6 位小数。人民币金额从未舍入美元金额按该请求实际汇率独立换算。
解压工具包后,在仓库根目录运行以下合成示例:
python3 -B billing-calculator/calculator.py \
--prices billing-calculator/public-prices-2026-10-25.json \
--request billing-calculator/examples/anthropic-cache.json示例合计:USD 0.007543。示例用量为人工构造,不是真实客户记录;结果 JSON 展示各项 Token、单价、倍率与金额。
随附价格文件是 2026-10-25 的公开快照,不代表实时价格。核对历史账单需使用该请求当时的单价、规则、完整用量和实际汇率;当前快照不能单独证明历史扣费一致。
初版支持文本与缓存公式,暂不支持图像、音频或收费工具等项目。公开范围仅为本地价格公式,服务端账务与风控实现保持私有。
报错怎么办
先看 HTTP 状态码和返回里的 error.code,对照下表处理。大部分问题出在 Key、模型名称或余额上。
| 状态码 | 常见 error.code | 原因与处理 |
|---|---|---|
| 400 | invalid_jsoninvalid_valueunsupported_parameter | 请求格式或参数不对,按提示修改后重发 |
| 401 | invalid_api_key | Key 错误或已停用;Claude 原生接口检查 x-api-key 请求头 |
| 402 | insufficient_balancekey_quota_exhausted | 余额或该 Key 的额度不够;充值、调高额度或降低输出上限 |
| 403 | model_not_available | 模型名称写错或未开放;用 Claude Code 时检查三个默认模型 |
| 404 / 405 | endpoint_not_enabledmethod_not_allowed | 地址或路径不对,或没有用 POST |
| 409 | image_request_already_seen | 同一个 Idempotency-Key 已经提交过,去调用记录查原请求 |
| 413 | — | 请求太大,压缩图片或缩短内容 |
| 429 | rate_limit_exceededdaily_quota_exhausted | 请求太频繁,按 Retry-After 稍后再试;或当日额度已用完 |
| 5xx | model_service_errorupstream_unavailablecontext_too_large | 服务暂时不可用,稍后重试;对话很长时先压缩或开新会话 |
SDK 默认会自动重试,一次请求可能被扣多次费。文档示例都设了 max_retries=0,建议在自己的代码里判断后再重试;图片和长任务超时后,先查调用记录。
需要人工帮助时,请提供:时间、模型名称、接口路径、状态码、error.code、请求编号(响应头 X-302API-Request-ID)、客户端名称与版本。不要发送 Key 或完整的私密对话。联系技术支持
兼容说明
为了让常见工具开箱即用,网关会自动处理少数上游不支持的参数,不会因此报错。一般用户不需要关心这一节。
OpenAI 格式(Chat 接口)
- GPT-5、GPT-6、o 系列的
max_tokens会自动转为max_completion_tokens。 - GPT-6 的 Chat 请求带函数工具或工具历史时,网关会转成 Responses 处理再按 Chat 格式返回(只支持
n=1和函数工具);reasoning_effort可选 low / medium / high / xhigh / max,默认 medium。 - GPT-6 普通对话会忽略
temperature、top_p、各类 penalty、logprobs、logit_bias、stop、modalities、audio、prediction。 - Claude 走 Chat 接口时忽略
top_p;Sonnet、Opus、Fable 只接受temperature=1,其他值会被忽略;只有空白字符的 stop 会被过滤。 - 多轮工具调用时,请原样保留模型返回的工具调用 ID、参数和结果。
Claude 原生格式
- Haiku、Sonnet 忽略
top_p、top_k;只有空白字符的stop_sequences会被过滤。 - Sonnet、Opus、Fable 默认开启思考,此时“强制调用工具”(
tool_choice为any或指定工具)会自动改为auto,模型通常仍会调用工具。 - Fable 的
thinking.type="enabled"会自动转为adaptive。 - 其他模型的思考预算不小于
max_tokens时,自动降到max_tokens− 1;max_tokens不超过 1024 时去掉思考设置。
字段级参考见 OpenAPI 描述文件。