认证与 API Key

怎么带 Key、一把 Key 能管住什么、泄露了怎么办。

查看 .md

所有 /v1 接口都用 API Key 认证,放在 Authorization 请求头里:

http
Authorization: Bearer <你的 API Key>
  • 只认这一种写法。 Cookie、查询参数、api-key 头都不认。 浏览器里即使登录着 SciRouter,会话 Cookie 也不会被当成调用凭据——网关收到 /v1 请求时会直接丢掉 Cookie 头, 所以别的网页没法借你的登录态替你调模型、花你的额度。
  • Key 的明文以 sk-sr- 开头,共 46 位。格式不对的请求直接 401 unauthenticated

新建时可以设什么

控制台的 API Keys 页面新建。每一项都是这把 Key 自己的边界:

设置作用越界时
名称给你自己看;建好后不能改
允许的模型白名单,留空表示不限403 model_not_allowed/v1/models 也只列白名单里的
月度额度上限这把 Key 每月最多花多少,不填表示不限429 key_quota_exceeded,下个月恢复
过期时间到期自动失效,不填表示不过期401 key_expired
归属项目团队工作区里按项目归账;项目可以设月预算429 project_budget_exceeded

明文只在创建时显示一次,我们只存它的哈希。关掉那个窗口之后就再也拿不到了—— 请当场复制,存进密钥管理工具或环境变量。

放进环境变量,不要写进代码

bash
export SCIROUTER_API_KEY="<创建时复制的那串>"

官方 OpenAI SDK(Python 与 Node)会读 OPENAI_API_KEYOPENAI_BASE_URL 两个环境变量。 已有的代码不想改一行的话,把这两个变量指向 SciRouter 即可:

bash
export OPENAI_API_KEY="$SCIROUTER_API_KEY"
export OPENAI_BASE_URL="https://api.scirouter.cn/v1"

不要放进前端

/v1 的 CORS 对所有来源开放(不带凭证),技术上浏览器可以直接调—— 但那等于把 Key 发给每一个打开网页的人,任何人都能从开发者工具里拿走它。 浏览器、App、小程序里的调用,请经你自己的后端转发。

Playground 和站内对话是例外:它们走的是登录会话,不经过 API Key。

一个用途一把 Key

按服务、环境、实验分开建,好处是三样:

  • 泄露时只吊销那一把,别的服务不受影响;
  • 用量与日志按 Key 分开看,谁花的钱一目了然;
  • 白名单和额度上限可以按用途设——跑批量评测的那把设一个月度上限,失控时最多花掉这么多。

同一把 Key 下还想再细分(比如十个实验共用一把),用请求体里的 metadata 贴标签,见「可观测性」。

泄露了怎么办

在控制台吊销它:立即生效、不可撤销,正在用它的服务会开始收到 401 key_revoked。 然后新建一把换上。

没有「暂停」开关。一把已经泄露的 Key 不存在「先停一下观察观察」——停用期间它仍然是一把有效的钥匙。

一次调用会经过哪些检查

按顺序:

  1. 认证:Key 存在、没吊销、没过期;
  2. 授权:模型在 Key 的白名单里,也在你的套餐里;
  3. 额度:Key 的月度上限、套餐的日上限、项目的月预算;
  4. 限频:每分钟请求数、每分钟 token 数(按估算)、并发数,Key 与账号各算一份;
  5. 预扣:按估算成本先冻结一笔额度,调用结束后按实际用量结算,多退少补。

第 5 步意味着:余额很少时,一个 max_tokens 设得很大的请求可能因为预扣不够而被拒(402 insufficient_quotadetails.required_quota 是这次要冻结的额度), 哪怕它实际只会用掉一点。调小 max_tokens 或充值即可。

每一步的余量都能看到:限频余量在响应头 x-ratelimit-* 里,额度在控制台——见「可观测性」。

请验证你的身份

为了保护你的账户,这个操作需要再验证一次。

验证码已发送到你绑定的手机号。5 分钟内的其他敏感操作不会再问。

Cookie 偏好

您可以随时回到这里修改。页脚有常驻入口。

必要

维持登录状态、记住主题与语言偏好。没有它们本站无法正常工作,因此无法关闭。

统计

了解哪些功能有人用、用户在哪一步流失。只收集维度(页面、操作类型、计数),不收集您输入的任何内容。

本站不加载任何第三方统计脚本,也不做会话录屏。完整说明