将 OpenAI 的 base_url 设为 https://api.toapis.com/v1,保留 /v1 后缀和现有 SDK 版本,请求体无需改动。
开发者文档
5 分钟迁移到一个 OpenAI 兼容网关
ToAPIs 保持 OpenAI 的请求结构,所以迁移本质上是改配置而不是重写代码:替换请求地址、创建密钥、映射模型名,再调整重试策略。本页既是这条路径的参考,也覆盖迁移之后的路由、计费与错误处理。
OpenAI 兼容50+ 模型99.9% SLA5 分钟迁移
快速开始
四步即可把现有的 OpenAI SDK 客户端接到网关上。SDK 版本、请求体和流式处理逻辑都不用动。
Base URL
https://api.toapis.com/v1在控制台创建密钥,写入环境变量,并在 Authorization 请求头中以 Bearer 形式发送。
把 model 字段换成模型目录里的 ToAPIs 模型名。文本、图像、视频模型都在同一个域名下。
针对 429 与 5xx 增加带抖动的指数退避,并按业务类型分别设定请求超时。
example.py
from openai import OpenAIclient = OpenAI(base_url="https://api.toapis.com/v1",api_key="your-toapis-key")response = client.chat.completions.create(model="gpt-5.6-terra",messages=[{"role": "user", "content": "Hello!"}])
密钥与访问控制
一个密钥即可访问网关上的全部模型。建议按环境分别创建密钥,而不是在开发和生产之间共用一个。
- 在控制台按用途创建密钥(开发、预发、生产各一份)。
- 把密钥放进密钥管理服务或环境变量,不要写入前端代码。
- 在每个请求中以 Authorization: Bearer <key> 的形式发送。
- 一旦泄露就在控制台轮换;新密钥生效无需重新部署。
路由、故障切换与回落
路由池能让单次逻辑调用在供应商波动时继续可用。先按任务划分路由池,再为每个池指定主模型与回落模型。
对话、图像、视频模型共用同一域名与同一个 Authorization 请求头,一个客户端就能覆盖全部能力。
为每类业务指定一个主模型和至少一个回落模型,这样主模型的可重试错误或限流不会直接终止用户请求。
对 429 与 5xx 采用指数退避重试,仍失败则切到回落模型,而不是把错误直接抛给用户。
高优先级流量走质量档,批量和低优先级流量走成本档,再对照定价页的额度核对消耗。
回落模型要与主模型处于同一能力档,跨档切换会让输出形态和质量在对话中途发生变化。
计费与额度
一个账号、一份额度、一张账单,覆盖网关上的所有模型家族。
- 文本模型按 token 计费,图像模型按次计费,视频模型按时长计费;计费单位标注在每个模型旁。
- 额度随请求实际消耗,未产出结果的请求不会按一次完整生成计费。
- 月付与年付方案包含对应计费周期的额度,未使用的订阅额度随周期结束失效。
- 消耗明细、发票与支付方式都在「设置 - 账单」中查看。
错误码参考
网关沿用 OpenAI 的错误码,现有的错误处理逻辑可以继续使用。
| 401 | 密钥无效 | 确认密钥存在、未被吊销,并以 Authorization: Bearer <key> 的形式发送。 |
| 402 / 403 | 额度不足或权限不足 | 确认账号有生效中的方案或可用额度,然后重试请求。 |
| 404 | 模型不存在 | 请原样使用模型目录中的模型 ID,仅存在于单一供应商的 ID 在这里无法路由。 |
| 429 | 触发限流 | 带抖动地指数退避,降低并发,或把流量切到回落模型。 |
| 5xx | 上游故障 | 退避重试;若持续失败则把该路由池切到回落模型,并把模型 ID 反馈给支持团队。 |
下一步
先挑模型,再确认成本,最后查看适用于你账号的方案规则。