2FA 动态验证码

2faPOST

2FA 动态验证码(TOTP)生成与校验,兼容 Google Authenticator 等主流身份验证器。 基于 RFC 6238 标准由本平台自建实现,支持「生成 / 验证 / 批量」三种模式,可自定义验证码位数(4~8)与有效周期(10~120 秒)。密钥仅参与计算、不存储、不回显,验证采用恒定时间比较防时序攻击。接口完全免费,支持匿名调用。

POSThttps://v1.apizero.cn/api/2fa

平台约定

  • 网关 · https://v1.apizero.cn
  • 鉴权 · Authorization: Bearer <API Key>
  • 回包 · JSON {code, msg, data}。成功看 code === 0,不要只看 HTTP 200。
/aidocs/2fa/raw.md
打开 Markdown

鉴权

完全免费接口。支持匿名调用(基础额度);携带 API Key(Authorization: Bearer <key>)可获得更高额度。

获取 API Key:/account/keys

请求头

Header类型必填说明
Authorizationstring推荐:Bearer <API Key>。兼容请求头 X-API-Key,以及 Query api_key / apikey / key(key 仅当值为 sk_live_/sk_test_/sk_stag_ 形态时生效)。匿名可不传,受每日免费额度限制。
Content-Typestring请求体格式

请求参数

POST · APPLICATION/JSON

参数类型必填说明示例
secretstringBase32 编码的 TOTP 密钥(自动忽略空格与连字符,不区分大小写)JBSWY3DPEHPK3PXP
actionstring操作类型:generate=生成当前验证码 / verify=校验验证码 / batch=批量返回上一·当前·下一周期generate
codestringaction=verify 时必填,待校验的验证码123456
periodnumber验证码有效期(秒),范围 10~12030
digitsnumber验证码位数,范围 4~86
{
  "secret": "JBSWY3DPEHPK3PXP",
  "action": "action",
  "code": "123456",
  "period": 0,
  "digits": 0
}

响应字段

顶层固定为 code / msg / data。下表一般是 data 内字段。 code · msg · data · tips · request_id

字段类型说明
totp_codestring生成的动态验证码(action=generate)
remaining_secondsnumber当前验证码剩余有效秒数
periodnumber验证码有效期(秒)
digitsnumber验证码位数
timestampnumber服务器 Unix 时间戳(秒)
next_refreshstring下次刷新时间(YYYY-MM-DD HH:mm:ss)
is_validboolean校验是否通过(action=verify)
current_codestring当前正确验证码(action=verify)
codesarray上一/当前/下一周期验证码列表(action=batch)
tipsstring品牌提示(所有接口统一返回):极数本源 · https://apizero.cn

响应示例

{
  "code": 0,
  "msg": "成功",
  "data": {
    "totp_code": "123456",
    "remaining_seconds": 17,
    "period": 30,
    "digits": 6,
    "timestamp": 1782000000,
    "next_refresh": "2026-06-30 12:00:30"
  },
  "request_id": "abc123",
  "tips": "极数本源 · https://apizero.cn"
}

请求示例

将 YOUR_API_KEY 替换为真实 Key 后运行。

# 1. 密钥:登录 https://apizero.cn/account/keys 申请,写入环境变量 APIZERO_KEY
#    请求头 Authorization: Bearer <key>
import json
import os
import urllib.request

key = os.environ["APIZERO_KEY"]

# 2. 请求地址
url = "https://v1.apizero.cn/api/2fa"

# 3. 发请求
payload = {
    "secret": "JBSWY3DPEHPK3PXP",
    "action": "generate",
    "code": "123456",
    "period": "30",
    "digits": "6",
}
req = urllib.request.Request(
    url,
    data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
    headers={
        "Authorization": "Bearer " + key,
        "Content-Type": "application/json",
    },
    method="POST",
)
with urllib.request.urlopen(req, timeout=15) as resp:
    body = json.loads(resp.read().decode("utf-8"))

# 4. 打印整包。
#   第 5 步的字段按本接口 data 里实际键改。
print(json.dumps(body, ensure_ascii=False, indent=2))

# 5. code == 0 后再取字段
if body.get("code") == 0:
    data = body.get("data") or {}
    print(data)

在线调试

填写参数后运行,将真实调用接口;计入免费额度。

RequestPOST
POST https://v1.apizero.cn/api/2fa

认证方式

参数(5)

>_

待运行

填写参数后点击「运行调试」查看响应

错误码

先看业务 code。HTTP 也可能不是 200。

业务码HTTP说明
0200成功
4000400参数错误
4011401API Key 无效
4013403API Key 已暂停
4014403当前 IP 不在 Key 白名单
4015401此接口需要 API Key
4022402余额不足
4029429调用过快(QPS)
4030429今日免费额度已用完
4040503接口已下线
4041404接口不存在
5000500服务器内部错误
5020502上游暂时不可用
5021502上游返回格式异常
5030502暂无可用节点

额度与计费

计费模式完全免费
QPS 限制3 req/s
登录免费额度1000 次(已认证)
匿名每日额度200 次(无 API Key)
黄金会员每日 50000 次 · QPS 10
企业会员每日 1000000 次 · QPS 120

购买套餐、看评价请走商城详情。 购买 / 调试

变更日志

  • v1.02026-07-01

    首次上线,支持 TOTP 生成 / 验证 / 批量三种模式。