面向开发者的多模型 API 平台。OpenAI、Claude、Gemini、通义、DeepSeek、Kimi、豆包、Seedance
等 20+ 家供应商收敛在同一套协议上:换模型只改 model 一个字段,SDK 和业务代码不动。
平台负责路由、故障切换、限流、计费与对账。
按 model 字段切换,参数与响应保持一致。价格为平台售价(人民币);实际可调用集合以 GET /v1/models 为准——未开通渠道或渠道整体熔断的模型不会出现在该接口里。
base_url 指向 https://www.bitvox.cn/v1。GET /v1/models 拉取已开通模型,按 model 字段切换。# pip install openai from openai import OpenAI client = OpenAI( base_url="https://www.bitvox.cn/v1", api_key="mass-sk-...", ) resp = client.chat.completions.create( model="deepseek-chat", # 换模型只改这一行 messages=[{"role": "user", "content": "用一句话解释向量数据库"}], ) print(resp.choices[0].message.content)
# 1. 提交,返回任务 id;此时按「时长 × 分辨率单价」冻结 curl https://www.bitvox.cn/v1/video/generations \ -H "Authorization: Bearer $MASS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"doubao-seedance-2-5-my-test","prompt":"雨夜霓虹街头,橘猫缓步走过","duration":5,"resolution":"720p"}' # 2. 轮询:queued → processing → completed(url 为成品)/ failed(全额退款) curl https://www.bitvox.cn/v1/video/generations/vid_xxx \ -H "Authorization: Bearer $MASS_API_KEY"
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/chat/completions | 对话补全,支持 stream:true、工具调用、多模态 content 数组 |
| POST | /v1/video/generations | 提交视频任务,返回 id |
| GET | /v1/video/generations/{id} | 查询任务状态与结果(读平台侧记录,不回源上游) |
| GET | /v1/models | 当前可调用模型列表,每条带 type(chat / video) |
| GET | /v1/balance | 余额:available / frozen / spent / debt |
| GET | /healthz | 存活探针,不鉴权 |
幂等:写接口支持 Idempotency-Key 请求头(≤255 字符)。同键重放不会重复扣费,返回首次结果;
并发同键返回 409 request_in_progress。
| 环节 | 行为 |
|---|---|
| 请求前 | 按候选渠道的最高单价估算用量并冻结,余额不足直接 402 |
| 响应后 | 按上游返回的真实 usage 结算,多冻部分立即退回 |
| 上游失败 | 自动换渠道重试;全部失败则全额退款,返回 502 |
| 客户端断连 | 已产生的用量照常结算,不因断连而免单 |
| 视频任务 | 提交即冻结;完成按上游实际时长结算;失败 / 超时全额退款 |
余额单位是 credit(1 credit = ¥1),/v1/balance 返回 6 位小数。账单可按请求 ID 逐笔追溯。
| HTTP | code | 含义与处置 |
|---|---|---|
| 400 | invalid_request_error | 请求体非法、模型类型用错端点(如拿视频模型打 chat) |
| 401 | invalid_api_key | Key 缺失或失效 |
| 402 | insufficient_quota | 余额不足,需充值 |
| 404 | model_not_found | 模型未上架或该账户未开通 |
| 404 | task_not_found | 视频任务不存在或已过保留期 |
| 409 | request_in_progress | 同 Idempotency-Key 的首个请求仍在处理 |
| 429 | quota_exceeded | 触及日限额或渠道限流,可按指数退避重试 |
| 502 | upstream_error | 全部候选渠道失败,预扣已退回 |
| 503 | upstream_unavailable | 该模型当前无可用渠道(熔断中),稍后重试 |
| 500 | internal_error | 平台内部错误,可重试;持续出现请联系管理员 |
Idempotency-Key;
400 / 401 / 402 / 404 重试不会成功,只会放大故障。