主题
原生 API 调用
自己写程序接入时看这一页。快米兔 API 同时暴露四套协议,同一把令牌通用。
端点总览
| 协议 | 端点 | 认证头 |
|---|---|---|
| OpenAI Chat | POST /v1/chat/completions | Authorization: Bearer <令牌> |
| OpenAI Responses | POST /v1/responses | Authorization: Bearer <令牌> |
| Anthropic Messages | POST /v1/messages | x-api-key: <令牌> |
| Gemini | POST /v1beta/models/{model}:generateContent | x-goog-api-key: <令牌> |
其它常用端点:
| 用途 | 端点 |
|---|---|
| 模型列表 | GET /v1/models |
| 向量化 | POST /v1/embeddings |
| 图像生成 | POST /v1/images/generations |
| 图像编辑 | POST /v1/images/edits |
| 语音转文字 | POST /v1/audio/transcriptions |
| 文字转语音 | POST /v1/audio/speech |
| 重排序 | POST /v1/rerank |
| 内容审核 | POST /v1/moderations |
| 实时语音 | GET /v1/realtime(WebSocket) |
OpenAI 兼容协议
Base URL:https://api.52pay.com/v1
支持全部站内模型——包括 Claude 和 Gemini,本站会自动做协议转换。
curl
bash
curl https://api.52pay.com/v1/chat/completions \
-H "Authorization: Bearer <您的令牌>" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [
{"role": "system", "content": "你是一个简洁的助手"},
{"role": "user", "content": "用一句话解释 TCP 三次握手"}
],
"max_tokens": 512,
"stream": false
}'Python (openai SDK)
python
from openai import OpenAI
client = OpenAI(
api_key="<您的令牌>",
base_url="https://api.52pay.com/v1",
)
resp = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "ping"}],
)
print(resp.choices[0].message.content)Node.js
javascript
import OpenAI from 'openai'
const client = new OpenAI({
apiKey: '<您的令牌>',
baseURL: 'https://api.52pay.com/v1',
})
const resp = await client.chat.completions.create({
model: 'gpt-5.4',
messages: [{ role: 'user', content: 'ping' }],
})
console.log(resp.choices[0].message.content)流式
python
stream = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "写一首五言绝句"}],
stream=True,
stream_options={"include_usage": True}, # 让最后一个 chunk 带 usage
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)stream_options.include_usage
加上它,流式结束时最后一个 chunk 会带 usage 字段,你能直接拿到本次的 token 消耗,不用自己数。做成本统计强烈建议开。
工具调用
python
resp = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "北京今天天气怎么样"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询指定城市的天气",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}],
)
print(resp.choices[0].message.tool_calls)Anthropic 原生协议
Base URL:https://api.52pay.com(不带 /v1,SDK 自己拼 /v1/messages)
跑 Claude 系模型时优先用这条:prompt cache、thinking、tool use 的语义最完整,不经过转换层。
curl
bash
curl https://api.52pay.com/v1/messages \
-H "x-api-key: <您的令牌>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "ping"}]
}'Python (anthropic SDK)
python
import anthropic
client = anthropic.Anthropic(
api_key="<您的令牌>",
base_url="https://api.52pay.com",
)
msg = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "ping"}],
)
print(msg.content[0].text)Prompt Cache
在需要缓存的内容块上打 cache_control,本站原样透传给上游:
python
msg = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system=[
{
"type": "text",
"text": "<这里放很长的项目规范 / 文档 / 代码库摘要>",
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "按上面的规范审查这段代码"}],
)
print(msg.usage)
# cache_creation_input_tokens / cache_read_input_tokens命中缓存的部分按缓存倍率计费(Claude 系为 0.1,即原价的十分之一)。详见 成本优化策略。
扩展思考(thinking)
python
msg = client.messages.create(
model="claude-opus-4-8",
max_tokens=8000,
thinking={"type": "enabled", "budget_tokens": 4000},
messages=[{"role": "user", "content": "证明勾股定理"}],
)thinking 产生的 token 按输出计价,注意控制 budget_tokens。
1M 上下文
bash
curl https://api.52pay.com/v1/messages \
-H "x-api-key: <您的令牌>" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: context-1m-2025-08-07" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-4-6","max_tokens":1024,"messages":[{"role":"user","content":"..."}]}'anthropic-beta 头会被透传。若返回 400/503,说明当前路由到的上游账号无 1M 权限,重试或去掉该头。
Responses API
端点:POST /v1/responses
OpenAI 的新一代协议,GPT-5 系和 Grok 系支持。Codex CLI 默认走这条。
bash
curl https://api.52pay.com/v1/responses \
-H "Authorization: Bearer <您的令牌>" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"input": "用一句话解释什么是幂等",
"reasoning": {"effort": "medium"}
}'Python:
python
from openai import OpenAI
client = OpenAI(api_key="<您的令牌>", base_url="https://api.52pay.com/v1")
resp = client.responses.create(
model="gpt-5.5",
input="用一句话解释什么是幂等",
reasoning={"effort": "high"},
)
print(resp.output_text)不是所有模型都支持
只有价格页上标了 openai-response 端点类型的模型能走这条。其它模型请用 /v1/chat/completions。
Gemini 原生协议
Base URL:https://api.52pay.com(SDK 自己拼 /v1beta/...)
curl
bash
curl "https://api.52pay.com/v1beta/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: <您的令牌>" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "用一句话解释量子纠缠"}]}],
"generationConfig": {"maxOutputTokens": 512}
}'流式用 :streamGenerateContent:
bash
curl "https://api.52pay.com/v1beta/models/gemini-3-pro-preview:streamGenerateContent?alt=sse" \
-H "x-goog-api-key: <您的令牌>" \
-H "Content-Type: application/json" \
-d '{"contents":[{"parts":[{"text":"写一首诗"}]}]}'Python (google-genai SDK)
python
from google import genai
from google.genai import types
client = genai.Client(
api_key="<您的令牌>",
http_options=types.HttpOptions(base_url="https://api.52pay.com"),
)
resp = client.models.generate_content(
model="gemini-3-pro-preview",
contents="ping",
)
print(resp.text)安全策略
Gemini 默认会拦截部分内容。放宽:
json
{
"contents": [{"parts": [{"text": "..."}]}],
"safetySettings": [
{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}
]
}返回里 finishReason 为 SAFETY 就是被拦了。
图像生成
OpenAI 格式
bash
curl https://api.52pay.com/v1/images/generations \
-H "Authorization: Bearer <您的令牌>" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "一只戴墨镜的柴犬,赛博朋克风格",
"n": 1,
"size": "1024x1024"
}'图像编辑用 POST /v1/images/edits(multipart 表单,带 image 文件字段)。
Gemini 图像模型
bash
curl "https://api.52pay.com/v1beta/models/gemini-3-pro-image:generateContent" \
-H "x-goog-api-key: <您的令牌>" \
-H "Content-Type: application/json" \
-d '{"contents":[{"parts":[{"text":"一只戴墨镜的柴犬"}]}]}'返回里图片在 candidates[].content.parts[].inlineData.data(base64)。
n 是有上限的
n(生成张数)会被服务端校验,超过上限直接 400。批量生图请循环调用,不要传一个巨大的 n。
音频
bash
# 语音转文字
curl https://api.52pay.com/v1/audio/transcriptions \
-H "Authorization: Bearer <您的令牌>" \
-F file=@audio.mp3 \
-F model=whisper-1
# 文字转语音
curl https://api.52pay.com/v1/audio/speech \
-H "Authorization: Bearer <您的令牌>" \
-H "Content-Type: application/json" \
-d '{"model":"tts-1","input":"你好","voice":"alloy"}' \
--output speech.mp3具体可用的音频模型以 价格页 为准。
向量化
python
resp = client.embeddings.create(
model="text-embedding-3-small",
input=["第一段文本", "第二段文本"],
)
print(len(resp.data[0].embedding))错误响应格式
失败时返回标准的 OpenAI 错误结构:
json
{
"error": {
"message": "当前分组 default 下对于模型 xxx 无可用渠道",
"type": "new_api_error",
"code": "channel_not_found"
}
}对照表见 错误代码。
排查时先看响应头
每个响应都带 X-Oneapi-Request-Id。把这个 ID 报给客服,可以直接定位到那一条日志。
