halfoff.dev文档
获取密钥
账户

API 密钥

为每个应用单独签发 Half Off Dev 密钥,限定消费额、调用频率和可用模型,随时轮换或吊销,不影响线上服务。

调用 Claude、GPT 和 Gemini,你的代码只需要一个 Half Off Dev 密钥,价格是官方的一半。所有密钥从同一个预付费余额扣费,但每个密钥可以有自己的限制:某个脚本失控,也只会耗掉这个密钥允许的额度,不会拖垮其他业务。密钥数量不限。

新建密钥#

  1. 打开密钥页面

    进入控制台的 API 密钥,点击 新建密钥。

  2. 起名并选择分组

    名字最好能看出密钥用在哪里,比如 support-bot-prod、nightly-evals。渠道分组 一般保持 自动 — 最优可用;只有当这个密钥的所有请求都必须走同一个分组时,才选 Claude · Value、GPT · Value 或 Gemini · Value。详见渠道分组。

  3. 按需设置限制

    在 额度与限制 中可以限制消费金额、请求频率、并发数、可用模型和有效期。各项含义见下表。除分组外,其他设置以后都能改。

  4. 立即复制密钥

    点击 创建 后,页面顶部的横幅会显示完整密钥,仅此一次。马上复制,或者点击 接入客户端…,直接用它配置 Claude Code、Codex CLI 等客户端。点击 完成 之后,列表里只显示开头几位,例如 ho-a1b2c3…。

完整密钥只出现一次

Half Off Dev 只存密钥的哈希值,不存原文,所以没人能再把它显示出来。密钥丢了,只能吊销后重新创建。

密钥设置项#

设置默认作用
名称—最多 60 个字符,显示在密钥列表和日志每条请求旁边。
渠道分组自动把该密钥的全部请求固定在一个渠道分组。自动 会为每个请求挑选当前最优的可用分组。创建后不能修改。
消费上限(美元)不限该密钥累计最多能花多少钱,按整美元设置。它不会按月清零,是终身上限,不是月度预算。
过期日期永不这一天结束后(按你浏览器所在时区)密钥失效。
每分钟请求数不限该密钥每分钟最多发起多少个模型请求。
最大并发请求数不限该密钥同一时刻最多有多少个请求在进行。流式请求直到最后一个字节都计入。
仅允许指定模型全部模型该密钥能调用的模型白名单。claude-sonnet-5-5 这类别名按它实际指向的模型判断。

密钥列表里能看到每个密钥的分组、限制、累计 已消费 和 最近使用 时间。

触发限制时返回什么#

请求在到达模型之前就会被 Half Off Dev 拒绝:不扣费,不写入日志,错误格式与你调用的接口一致。

原因状态码Anthropic typeOpenAI type消息
已过有效期401authentication_errorauthentication_errorThis API key has expired
已吊销401authentication_errorauthentication_errorInvalid or revoked API key
模型不在白名单内403permission_errorpermission_deniedThis API key is not allowed to use 'gpt-6.1-sol'.
消费上限已用完402billing_errorinsufficient_quotaThis API key has reached its spend limit.
每分钟请求数或并发数超限429rate_limit_errorrate_limit_exceededThis API key has reached its rate or concurrency limit.

调用 Gemini 接口时状态码相同,错误体采用 Gemini 的格式。由密钥限制引起的 429 会带 Retry-After 响应头,告诉你需要等待几秒。

下面是消费上限触发时,两种 SDK 收到的错误体:

{
  "type": "error",
  "error": {
    "type": "billing_error",
    "message": "This API key has reached its spend limit."
  }
}

消费上限在请求开始时检查。已经开始的请求会正常跑完,所以密钥的 已消费 可能略微超过上限。其余错误体以及何时该重试,见错误。

修改密钥#

点击密钥上的 编辑,可以改名称、消费上限、过期日期、频率和并发限制、模型白名单。修改对下一个请求立即生效。把某一项清空,就等于取消这项限制。

唯一不能改的是渠道分组。想换分组,就在目标分组里新建一个密钥,然后轮换过去。

无缝轮换#

  1. 新建一个分组和限制都相同的密钥。
  2. 把它部署到应用或密钥管理服务里。
  3. 观察旧密钥的 最近使用 时间,直到它不再变化。
  4. 吊销旧密钥。

建议定期轮换;有权限的同事离职时轮换;怀疑泄露时立刻轮换。

吊销密钥#

点击 吊销,再点 确认吊销。从下一个请求开始该密钥就会被拒绝,且无法恢复。它仍以灰色留在列表里,保留消费记录,历史请求也仍在日志中。

接入编程客户端#

每个密钥都有 接入客户端 按钮,提供 Claude Code、Codex CLI、Gemini CLI、Cherry Studio、DeepChat 和 AionUI 的现成配置,支持的应用还能一键导入。各客户端的详细步骤见集成。

控制成本的好习惯#

  • 一个应用、一个环境,各用一个密钥。 生产、预发、CI 和本机分开,消费按密钥一目了然,吊销其中一个也不影响别的。
  • 无人值守的任务一定要设上限。 批处理、CI 流水线、重试循环都可能失控。消费上限兜住成本,每分钟请求数限制让失控的循环慢下来。
  • 只开放用得到的模型。 用小模型做工单分类的密钥,没必要能调用最大的模型。
  • 临时密钥设好过期日。 演示、外包、试用的密钥到期自动失效,不用再记着去吊销。
  • 密钥只放在服务端。 不要把它打包进网页或移动端代码,从你自己的服务器调用 Half Off Dev。参阅认证。