Sign inGet Started

验证您的第一个客户

Bird Verify 确认某人拥有某个电子邮件地址或电话号码的控制权。您请求 Bird 发送一次性验证码。用户在您的应用中输入验证码,然后您向 Bird 查询是否匹配。Bird 生成并投递验证码,同时强制执行过期时间和尝试次数限制。您的应用永远不会接收或存储生成的验证码。

本快速入门验证您自己的电子邮件地址,无需任何设置。Bird 通过其共享的 Bird Verify 发送者发送邮件验证码,因此您不需要域名或余额。为 SMS 充值后,验证电话号码使用相同的两次调用。

1. 创建 API 密钥

在控制台中,前往 Developers > API keys 并创建一个密钥。密钥按区域划分,格式类似 bk_us1_... 或 bk_eu1_...;前缀中的区域告诉您应调用哪个 API 主机:https://us1.platform.bird.com 或 https://eu1.platform.bird.com。

Bird 控制台中的 API Keys 页面,列出密钥及其掩码前缀、权限范围和最后使用时间

完整密钥仅在创建时显示一次。将其复制到安全的地方,然后为发送示例导出:

代码示例
export BIRD_API_KEY="bk_us1_..."

2. 发送验证码

为要确认的地址创建一次验证。唯一必填字段是 to。使用您自己的电子邮件地址,以便您能查收验证码。按照 SDK 快速入门安装适用于您所用语言的 Bird SDK。

在 SDK 选项卡中,运行代码前请替换示例 API 密钥和 user@example.com。CLI 使用您的登录凭据,cURL 选项卡使用 BIRD_API_KEY。

import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: "bk_XXXXXXXXXXXXXXXXXXXXXXXX" });

const verification = await bird.verify.verifications.create({
  to: { email: "user@example.com" },
});

console.log(verification.id, verification.status);

如果您的密钥以 bk_eu1_ 开头,请改为调用 https://eu1.platform.bird.com。

Bird 接受请求并开始发送验证码:

代码示例
{
  "id": "vrf_01ky7q1fdze3695yvyz7z9nm3a",
  "status": "pending",
  "reason": null,
  "to": { "email": "user@example.com" },
  "channels": [{ "channel": "email" }],
  "last_channel": "email",
  "expires_at": "2026-07-23T14:55:58Z",
  "verified_at": null,
  "created_at": "2026-07-23T14:45:58Z",
  "updated_at": "2026-07-23T14:45:58Z"
}

无需存储验证 ID:第 3 步的校验以相同的收件人为键。邮件来自 Bird Verify <otp@verify.bird.com>,主题为 "Your verification code",包含一个六位数验证码;邮件本身会说明过期时间。验证码长度、有效期、尝试次数上限和重新发送冷却时间均为工作区设置,验证设置列出了默认值和范围。

3. 校验验证码

从收件箱中取出验证码并提交,以相同的收件人为键:

import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: "bk_XXXXXXXXXXXXXXXXXXXXXXXX" });

const result = await bird.verify.verifications.check({
  to: { email: "user@example.com" },
  code: "123456",
});

console.log(result.success);

正确的验证码返回 success: true,嵌入的验证对象状态变为 verified:

代码示例
{
  "success": true,
  "reason": null,
  "attempts_remaining": null,
  "verification": {
    "id": "vrf_01ky7q1fdze3695yvyz7z9nm3a",
    "status": "verified",
    "reason": null,
    "to": { "email": "user@example.com" },
    "channels": [{ "channel": "email" }],
    "last_channel": "email",
    "expires_at": "2026-07-23T14:55:58Z",
    "verified_at": "2026-07-23T14:46:47Z",
    "created_at": "2026-07-23T14:45:58Z",
    "updated_at": "2026-07-23T14:46:47Z"
  }
}

在将此流程添加到注册环节之前,请处理以下结果:

  • 校验失败返回 HTTP 200。 响应包含 success: false、一个 reason(incorrect_code、expired 或 attempts_exhausted),以及在还有剩余尝试次数时的 attempts_remaining 计数。在您的应用中根据此结果进行分支处理。验证在耗尽校验尝试次数后将永久失败。
  • 验证仅解析一次。 达到 verified(或失败或过期)后,再次校验会返回 404。将第一个确定性结果作为最终答案。如果用户需要新的验证码,请使用相同的收件人再次调用创建端点:进行中的验证会被复用,重新发送冷却时间过后将发出新的验证码。

您创建的每次验证都会显示在 Verifications 页面上,包含状态、收件人、渠道和时间信息。生成的验证码不会显示。

Verifications 页面,列出验证记录及其状态、验证 ID、收件人、渠道、费用和创建时间列

改为验证电话号码

要通过 SMS 进行验证,请在 to 中填入 E.164 格式的电话号码,而非电子邮件地址:

const verification = await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
});
console.log(verification.id, verification.status);

校验步骤完全相同:将 email 替换为相同的 phone_number。电话投递从您工作区的 SMS 余额中扣费,目的地国家决定路由。Bird 在大多数国家优先使用 WhatsApp,在部分国家优先使用 SMS。国家配置显示并配置每个目的地的可用渠道及其顺序。发送者与品牌展示每个渠道上用户收到的内容。

通过两个渠道触达用户

您不必只选择一个渠道。在 to 中同时包含 email 和 phone_number,Bird 会根据您的国家配置生成投递计划,该配置显示每个目的地的可用渠道及其顺序。Bird 按计划依次尝试,直到发送被接受。如果投递随后彻底失败,Bird 会通过下一个渠道发送新的验证码。使用创建验证时相同的 to 对象来校验验证码。用户输入收到的任一验证码即可。

后续步骤