Skip to content

API 参考

CaptchaLa 提供 RESTful API 接口,支持所有功能的服务端调用。

API 地址

https://apiv1.captcha.la

认证方式

所有 API 请求需要在 Header 中携带认证信息:

X-App-Key:    YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET

WARNING

X-App-Secret is server-side only. Never expose it to browsers, mobile apps, or public repos.

服务端验证 API

💡 用服务端 SDK 省去 boilerplate。 封装端点 + 重试 + 类型化错误:

在用户通过前端验证码后,您的服务端需要验证 SDK 返回的 Token。以下是服务端验证接口。

服务端验证 Token

验证前端 SDK 返回的 pass_token(前缀为 pt_)。需要携带 X-App-Key 和 X-App-Secret 头。

bash
POST /v1/validate
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET
Content-Type: application/json

{ "pass_token": "pt_xxx", "client_ip": "1.2.3.4" }
json
{
  "code": 0,
  "data": {
    "valid": true,
    "challenge_id": "ch_xxx",
    "action": "login",
    "uid": null,
    "client_ip": "1.2.3.4",
    "risk_score": 12
  }
}

TIP

Validate data.valid === true and that data.action matches the scene you expected (reject if a token from a pay flow is presented at /login). Tokens are single-use.

服务端签发验证 Token

由您的服务端签发短时效 server_token,再由浏览器在初始化挑战时携带该 Token,从而证明请求来自受信任的服务端。

签发 server_token

仅允许从您的服务端调用。需要 X-App-Key + X-App-Secret。响应返回 server_token(前缀 sct_),前端需在 验证初始化 时带上该 Token。

bash
POST /v1/server/challenge/issue
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET
Content-Type: application/x-www-form-urlencoded

action=login&ttl=300&max_uses=1&bind_ip=1.2.3.4
json
{
  "code": 0,
  "data": {
    "server_token": "sct_xxxxxxxxxxxx",
    "expires_in": 300,
    "issued_at": 1713600000
  }
}

请求体参数(form-urlencoded)

字段说明
action业务场景,如 login、register、pay。需与后续 验证初始化 使用的 action 一致。
ttlToken 有效期(秒)。默认 300,最大 900。
max_usesToken 最大可用次数。默认 10。
bind_ip将 Token 绑定到指定客户端 IP,来自其他 IP 的初始化请求将被拒绝。
bind_device_id将 Token 绑定到指定设备 ID。
bind_fingerprint将 Token 绑定到指定浏览器指纹。

初始化挑战

由 SDK 调用以开始一次验证码挑战。可选参数 server_token 由 /v1/server/challenge/issue 签发。

字段说明
app_key您的公开 App Key。
action业务场景,需与签发 server_token 时使用的 action 一致。
server_token可选;当应用开启 server_token_required = true 时必填。

INFO

如在控制台为该应用启用了 server_token_required,验证初始化 将拒绝所有未携带有效 server_token 的请求。

错误码

错误码说明
invalid_app_keyApp Key 无效
invalid_app_secretApp Secret 无效
challenge_expired验证码已过期
challenge_not_found验证码不存在
invalid_answer答案错误
token_expiredToken 已过期
token_already_usedToken 已被使用
token_not_foundToken 不存在
quota_exceeded配额已用尽
rate_limited请求频率超限
rate_limit_exceeded该应用的签发请求过于频繁,请稍后重试。

MIT-licensed examples · CaptchaLa is operated independently