壹贰线报 · 官方文档核实 核实时点:2026 年 10 月
在做 SaaS、AI 代理或 OpenAPI 服务的开发者,大概都经历过"API 密钥管理"这个坑:一开始只是一张 api_keys 表,后来想加快过期,后来想加按用户限流,后来想加配额和计费字段,又想加撤销与轮换,又想加审计日志——不知不觉写了两千行,却还没回到产品本身。
Unkey 就是专门替你接这一整摊子事的开源平台:密钥创建、验证、吊销、过期、按密钥限流、配额/credits 扣减、分析、审计日志,还有独立的限流器服务,开箱即用。官方托管的 Free 套餐也一直很厚道,但旧教程里"10 万次请求、100 个活跃密钥"的说法已经过时了。这篇文章把现行规则讲清楚。
一、先说结论:Free 套餐核心更正
你手里这份资料里有两处数字需要更正——而且是**"变大了"**的好消息:
"每月 10 万次请求":现行 Free 套餐是 每月 150,000 次 API 请求(密钥验证 + 限流校验合计),无需绑信用卡;
"100 个活跃 API 密钥":现行 Free 套餐是 1,000 个活跃密钥,早在 2024 年 4 月就从 100 个上调到 1000 个;
许可证是 AGPLv3(源代码可用)自托管完全免费,核心平台(密钥管理、限流、Identities、RBAC、分析)都包含在内,没有 MAU 或密钥上限。
另外,用户给的三条能力——密钥创建/吊销、限流——都是真的,不过**"完整使用"也有隐藏边界**:免费版不提供团队协作席位、日志只保留 7 天、审计日志只保留 30 天,且部分高级能力(自定义每客户限流、per-key 自动周期填充 credits、AIO 开发者门户等)需要升 Starter/Pro。
二、免费托管版,到底能免到什么程度?
下面这张表是 Unkey 官方文档(Billing / Limits 页面)能直接对到的 Free 套餐硬指标:
项目 | Free 免费版规则 | 备注 |
|---|---|---|
API 请求/月(密钥验证 + 限流校验合计) | 150,000 次 | 包含 keys.verifyKey、ratelimit.limit 等所有计费 API 调用;超额不直接硬停,官方会邮件提醒你升级 |
活跃 API 密钥数 | 1,000 个 | 指工作区范围内所有 API 下处于 enabled 状态的密钥;被删除或过期的不计入 |
密钥管理能力 | 全部开放 | 创建/验证/吊销/自动过期/临时密钥/密钥元数据/剩余使用次数(Remaining uses),不限数量 |
限流(Rate Limiting) | ✅ 免费开放 | 既支持绑定密钥的 per-key 限流,也支持独立的 Ratelimit as a Service(按任意 identifier,例如 IP、用户 ID) |
配额 / Credits 扣减 | ✅ 基础可用 | 可在 verifyKey 时传 cost 消耗 credits、设置 key 级 remaining 上限;周期性自动 refill(按月/按天自动填充)在 Pro 起 |
临时密钥 / 自动过期 | ✅ 免费 | 创建时可指定 expires,到点自动失效 |
剩余次数密钥(Single-use 等) | ✅ 免费 | 可设置 remaining,到 0 后返回 USAGE_EXCEEDED |
RBAC 权限 / Roles | ✅ 免费开放 | 角色 + 权限,支持 AND/OR 与括号分组查询 |
Identities(身份主体) | ✅ 免费 | 把多把密钥归到同一个 identity 下 |
日志保留(运营日志) | 7 天 | 超期自动删除不可恢复 |
审计日志保留 | 30 天 | 注意:另一份安全模块文档里写的是 7 天,这是模块差异,Workspace 审计日志 30 天是官方 billing 页口径 |
团队成员席位 | ❌ 不提供 | 免费版只能一个人操作,要多人协作必须付费 |
自定义域名 | ❌ 不在 Platform 免费档 | 自定义域名是 Unkey Deploy(API 托管)的能力,Starter 起才提供 |
信用卡要求 | ❌ 不需要 | 注册即用,不强制绑卡;超额不直接扣钱,只发提醒 |
Region 区域 | 有限 | 具体可用 region 以控制台为准,付费档开放 All regions |
管理 API 限流(工作区级别) | ~60 req/s(指示值) | 是对 Unkey 管理接口本身的限流,不是你给你用户设的限流 |
SDK / REST API | ✅ 全开放 | TypeScript/Go 等官方 SDK,REST API + OpenAPI 规范 |
Vercel 集成 | ✅ 免费 | 官方一键集成 |
自托管 | ✅ AGPLv3,永久免费 | 需自己准备 MySQL + Redis(v2 架构),不限密钥/不限请求 |
三、Unkey 免费版最值钱的 5 个能力
1. 密钥验证 + 限流一次搞定
这是 Unkey 最省心的地方——keys.verifyKey 一个调用同时返回密钥是否有效、关联的权限/角色、credits 剩余、限流 remaining,不用你再去 Redis 查一次计数器。官方压测显示 v2 接口密钥验证目标延迟 < 40ms,部署在 AWS Fargate + Global Accelerator 上,全球走同一条边缘链路。
2. 两种限流模式,免费全给
Key-attached(绑定密钥):创建密钥时挂上 ratelimits,verify 时自动检查,适合"每个用户自己的配额";
Standalone(独立限流器):
@unkey/ratelimitSDK,可以对任意 identifier(IP、用户 ID、手机号)做限流,哪怕你完全不用 Unkey 的密钥功能,只拿它当 Redis 限流器的替代也可以。
3. 临时密钥 + 剩余次数
做一次性下载链接、试用 token、AI API 单次调用授权,一行参数就能发一把"只能用 N 次/到某时间点失效"的钥匙,不用你自己写定时任务清理。
4. Credits 机制直接对接按用量计费
每把密钥都能设 credits.remaining,verify 时可带 cost(例如基础操作消耗 1、生成图片消耗 10),到 0 自动返回 USAGE_EXCEEDED——这是做 pay-per-use SaaS 时最省事的基础设施。
5. 全部开源,AGPLv3 自托管
仓库 github.com/unkeyed/unkey 完整开源,密钥哈希、限流、RBAC、审计全部源码可审计;v2 版本把数据库依赖切到 MySQL + Redis(不再依赖第三方云服务),现在可以完全在自家机器上跑起来,没有任何配额天花板。
四、三个要格外留意的限制
① "15 万次请求"是密钥验证 + 限流校验的合计
每一次 verifyKey 算一次,每一次 ratelimit.limit 也算一次。如果你的业务在一次请求里既 verify 又 limiter.limit,15 万次只够约 7.5 万次真实 API 调用。按每日均值算,大约每天 5000 次 verify,对个人项目、早期 MVP 完全够用,对已经有付费用户的 SaaS 就该升档了。
② 免费版不送团队席位
只要你开始双人协作(比如一个后端 + 一个运维,或者你把 root key 放到 CI 里又不放心),就会触到"只能一个管理员"的限制。Starter($5/月)就开始送团队席位,不算贵。
③ "限流自定义" 有一道坎
免费版能挂的是全局固定窗口 per-key 限流;如果你要做"Free 用户 100 req/天、Pro 用户 10 万 req/天"这种按客户档位差异化限流,或者要自动周期性 refill credits(每个月 1 号重置配额),这些从 Pro($25/月)起才有——这是 SaaS 做分级计费最常用的能力,记得提前算账。
五、适合谁,不适合谁?
✅ 适合
个人开发者、早期 SaaS 团队,不想自己写密钥系统,想 5 分钟上线;
做 AI/LLM 代理或 OpenAPI,需要按 key 限流 + 按 key 计费的能力;
临时发放邀请码/试用码/下载凭证,需要"一把钥匙只能用 N 次";
已经在 Vercel 上部署,想通过官方集成一键接入;
对数据可控性有要求、想日后切到自托管的团队(AGPLv3 可自托管,迁移成本低)。
❌ 不适合
纯国内 ToC 业务:Unkey 的 API 入口是海外节点(api.unkey.com),中国大陆访问延迟和稳定性都不理想,且没有国内合规备案;国内业务建议选 Authing/阿里云 IDaaS 等国内方案;
已经有大量付费用户、需要做差异化计费:免费版的 credits 不能自动 refill,per-key 自定义限流也受限,直接上 Pro 更稳;
对日志留存有合规要求(金融、医疗):7/30 天的日志窗口满足不了等保要求,要么自托管,要么 Business;
只想要一个简单 Redis 限流器、完全不需要密钥功能:单买一个 Upstash Redis 免费档可能更轻量。
六、七步上手(注册到跑通 verify)
打开
unkey.com用邮箱或 GitHub 账号注册,无需信用卡;创建第一个 Workspace,注册成功自动落在 Free 套餐;
在 Dashboard 创建第一个 API(相当于一个命名空间,可以理解为你的产品);
在 API 下创建第一把 Root Key(只给你自己用,相当于管理员令牌,务必保存好、不要放前端);
通过 Dashboard 或 API 创建一把普通 API Key(可指定 prefix、expires、ratelimits、remaining、meta、roles/permissions);
在你的服务端集成
@unkey/apiSDK,每次收到请求时调用unkey.keys.verify({ key }),根据返回的valid、permissions、ratelimit.remaining决定放行/拒绝;在 Dashboard 看 Analytics 实时监控每把 key 的调用量、错误率、被拒原因;需要独立限流时额外装
@unkey/ratelimit。
最小代码示例(TypeScript):
import { Unkey } from "@unkey/api";
const unkey = new Unkey({ rootKey: process.env.UNKEY_ROOT_KEY });
export async function handler(req: Request) {
const key = req.headers.get("authorization")?.replace("Bearer ", "");
if (!key) return new Response("Missing key", { status: 401 });
const { result } = await unkey.keys.verify({ key });
if (!result.valid) {
return new Response(`Unauthorized: ${result.code}`, { status: 401 });
}
// result.meta、result.permissions、result.ratelimit?.remaining 都可用
return new Response(`Hello, ${result.keyId}! Remaining: ${result.ratelimit?.remaining}`);
}
七、付费档速览(做到心里有数)
Unkey 目前分两条产品线:
Unkey Platform(密钥管理/限流):仍以"每月请求数"为核心计量,Pro 档大致每月 25 万次起步并解锁 per-customer 自定义限流、自动 refill credits、团队席位;
Unkey Deploy(API 托管平台):Starter $5/月、Pro $25/月、Business $50/月,按 vCPU 秒数 / 内存 GB 秒数 / 出口流量计量,各档分别赠送等值月度 usage credits($5/$25/$50)。
对大多数独立开发者来说,15 万次/月 + 1000 把钥匙已经够跑 MVP,不必一开始就付费。
🔍 本期互动
你做 SaaS/OpenAPI 时,API 密钥和限流是自己写的,还是直接上了现成方案(Unkey/Zuplo/Redis 手写/网关集成)?踩过哪些坑?
如果已经有了 Clerk/Auth0 做用户登录,你会再叠加 Unkey 来管 API Key 吗?为什么?
自托管 vs 免费托管,你更看重"零运维"还是"数据完全在自己手里"?