API 调用
先确认模型使用的协议
新版首页和模型服务支持多种兼容协议。请先在 模型广场 确认模型名称和能力,再选择对应接口。
| 协议 | Base URL | 请求路径 | 认证方式 |
|---|---|---|---|
| OpenAI Chat Completions | https://www.fastapi.cool/v1 | /chat/completions | Authorization: Bearer |
| OpenAI Responses | https://www.fastapi.cool/v1 | /responses | Authorization: Bearer |
| Claude Messages | https://www.fastapi.cool | /v1/messages | x-api-key |
| Gemini | https://www.fastapi.cool | /v1beta/models/{model}:generateContent | x-goog-api-key |
WARNING
并非每个模型都同时支持四种协议。模型名称正确但接口不兼容时,可能返回 404 或协议转换错误。
新版协议转换层已增强 OpenAI Chat、Responses、Claude 和 Gemini 之间的兼容处理,并补充 DeepSeek 与 GLM 渠道的 Responses 支持。Ollama 渠道可将 Claude Messages 透传到上游 /v1/messages,并透传 OpenAI Responses 与 Responses Compact;vLLM 兼容请求会保留 thinking_token_budget。Chat 与 Responses 互转时会保留显式的 frequency_penalty、presence_penalty(包括 0)和 prompt_cache_key;但具体上游仍可拒绝不支持的字段,Codex 渠道会主动移除其不接受的 penalty。未传工具时,Claude 转换不会发送空的 tools 数组;工具存在但没有参数定义时,则会保留该工具,并补成有效的空对象输入结构,避免函数被静默丢弃。是否能够使用某种协议仍取决于具体模型与后台渠道配置,不能仅根据模型厂商名称判断。
新转换层还会在协议跨越 OpenAI Chat、Responses、Claude 与 Gemini 时保留 hosted tools、引用、Gemini grounding 元数据和上游计费用量;无法无损表达的内容会记入转换诊断,而不是静默伪装为完整转换。实际支持范围仍以模型和渠道配置为准。
模型名修饰符
支持在模型名末尾使用显式 @key:value 语法调整思考与采样参数,可用键为 thinking、effort、temperature 和 topp。例如 MODEL_ID@effort:high 或 MODEL_ID@thinking:on@temperature:0.2。修饰符会覆盖请求体中对应字段;重复键以最右侧为准并记录诊断,未知键或无效值返回 HTTP 400。
旧的 -thinking、-nothinking 和 effort 后缀只对明确匹配的 GPT/o-series、Claude、Gemini 和 DeepSeek 家族解析,避免修改真实模型 ID。DeepSeek V4.1 的 deepseek-flash 与 deepseek-v4-pro 支持 -none、-low、-max 变体;显式 @thinking / @effort 优先于这些后缀,并会映射到 Chat、Claude 或 Responses 请求中对应的 DeepSeek 字段。OpenRouter 不再对任意 *-thinking 名称做隐式改写;需要旧公开名称时,请在渠道模型映射中将它指向显式修饰名,例如 some-model-thinking → some-model@thinking:on。完全透传的渠道不解析这些修饰符。
OpenAI SDK
Python
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://www.fastapi.cool/v1",
)
response = client.chat.completions.create(
model="MODEL_ID",
messages=[{"role": "user", "content": "你好"}],
)
print(response.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://www.fastapi.cool/v1",
});
const response = await client.chat.completions.create({
model: "MODEL_ID",
messages: [{ role: "user", content: "你好" }],
});
console.log(response.choices[0].message.content);Responses API
curl https://www.fastapi.cool/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_ID",
"input": "你好,请用一句话介绍你自己。"
}'Claude Messages
curl https://www.fastapi.cool/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_ID",
"max_tokens": 256,
"messages": [
{"role": "user", "content": "你好"}
]
}'Gemini
curl "https://www.fastapi.cool/v1beta/models/MODEL_ID:generateContent" \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{"parts": [{"text": "你好"}]}
]
}'常用接口
| 用途 | 路径 |
|---|---|
| OpenAI Chat Completions | /v1/chat/completions |
| OpenAI Responses | /v1/responses |
| 模型列表 | /v1/models |
| Claude Messages | /v1/messages |
| Embeddings | /v1/embeddings |
| 图片生成 | /v1/images/generations |
| OpenAI Video 创建 | /v1/videos |
| OpenAI Video 查询 | /v1/videos/{task_id} |
| 通用插件任务创建 | /v1/tasks/{plugin_key} |
| 通用插件任务查询 | /v1/tasks/{task_id} |
| 任务产物清单 | /v1/tasks/{task_id}/artifacts |
| 语音合成 | /v1/audio/speech |
| 语音转文字 | /v1/audio/transcriptions |
| DeepSeek 搜索 | /v1/tools/search |
| DeepSeek 网页抓取 | /v1/tools/fetch |
| Gemini | /v1beta/models/{model}:generateContent |
不同模型支持的接口和参数可能不同,请以模型广场及对应模型官方 API 规范为准。首次接入可先在 游乐场 测试,再到 使用日志 核对请求。
GET /v1/models 会根据认证格式返回对应协议的模型列表:Bearer Token 返回 OpenAI 风格的 data,x-goog-api-key 请求头或 ?key= 查询参数返回 Gemini 风格的 models。
任务插件可声明厂商原生路由、OpenAI Responses(流式、同步或后台模式)和 OpenAI Video 协议。只有当前已启用插件明确声明并绑定到所选模型的协议才会接管对应请求;渠道 model_mapping 中指向插件模型的别名和大小写变体也可用于路由,但计费身份仍保留用户请求的原始名称。通用 /v1/tasks/{plugin_key} 创建接口返回公开任务 ID,之后可通过任务查询与产物接口读取状态和输出。Hailuo 插件已支持 MiniMax-H3 /v2/video_generation,并在提交前校验时长、分辨率、宽高比与输入媒体数量。请求参数校验失败会返回 HTTP 400,不应当按服务端故障重试。
协议转换会保留 Responses 工具输出中的图片、同一流分片里的推理与答案文本,以及发往 Gemini 的工具 JSON Schema 约束;发送到 Chat 上游的 Responses 图片 URL 会保持对象结构。Chat 或 Claude 转 Responses 时会保留 input_image.detail(包括 original),带工具调用的 assistant 文本不会丢失,流式 reasoning item 即使暂时没有摘要也会发出协议要求的空 summary。Claude 的 thinking.block_binding、尚未建模的 thinking 字段以及全部 anthropic-beta 值也会继续转发。WebSocket Responses 会在会话结束时发送关闭帧,客户端应按正常关闭处理,不要把它误判为网络中断。
/v1/tools/search 与 /v1/tools/fetch 转发 DeepSeek Search/Fetch 请求,分别使用固定路由计费身份 deepseek-search 与 deepseek-fetch;只有上游返回搜索结果或页面内容时才计费。DeepSeek 为 Claude Code 或 Codex 执行并在 usage 中报告的服务端搜索/抓取也按对应工具计费。
请求体读取或 JSON 解析失败时,响应会保留真实原因。超过 MAX_REQUEST_BODY_MB 的请求在 Chat、Responses、Images、Video、音频、任务插件等相关入口返回 HTTP 413;缩小请求后再试,不应把它当作可重试的上游 5xx。
流式响应
兼容 OpenAI 流式输出的模型可在请求中加入:
{
"stream": true
}请求结束后可在 使用日志 查看流式状态。如果客户端提前断开、上游流未正常结束或请求失败,日志中的流状态和错误信息可用于区分问题发生位置。
认证格式
OpenAI 兼容接口使用 Bearer Token:
Authorization: Bearer YOUR_API_KEYClaude 与 Gemini 原生兼容接口分别使用 x-api-key 和 x-goog-api-key,如上方示例所示。
在密钥高级设置中开启「允许查询用户额度」后,同一 Bearer 密钥可调用 GET /api/usage/token/,响应除密钥自身的 total_usage、total_granted、total_available 外还包含 user_quota 的剩余与已用额度。旧密钥默认不开放该字段;IP 白名单同样约束此查询和密钥日志查询。