Skip to content

原生 API 调用

自己写程序接入时看这一页。快米兔 API 同时暴露四套协议,同一把令牌通用

端点总览

协议端点认证头
OpenAI ChatPOST /v1/chat/completionsAuthorization: Bearer <令牌>
OpenAI ResponsesPOST /v1/responsesAuthorization: Bearer <令牌>
Anthropic MessagesPOST /v1/messagesx-api-key: <令牌>
GeminiPOST /v1beta/models/{model}:generateContentx-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"}
  ]
}

返回里 finishReasonSAFETY 就是被拦了。


图像生成

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 报给客服,可以直接定位到那一条日志。

配套阅读

文档持续更新 · 以 站内价格页 与控制台实际配置为准