arrow_back返回控制台

邮箱验证码API服务 API 文档

使用 LaunchAlways 发送一次性验证码邮件,并通过发送接口返回的 ID 校验用户提交的验证码或查询发送记录。

outgoing_mail

1. 发送验证码邮件

创建一条已发送邮件记录,发送固定验证码邮件模板,并返回可查询的记录 ID。

LaunchAlways 使用固定验证码邮件模板。请求只能包含收件邮箱、验证码、过期时间窗口和语言;自定义主题、纯文本、HTML 或内容字段都会被拒绝。

POST/api/v1/email-verifications/send

请求头

Authorization: Bearer la_your_api_key_here
Content-Type: application/json

请求体

字段类型必填可为空约束说明
emailstring有效邮箱地址收件人邮箱地址。会去除首尾空格并统一转为小写。
codestring1-8 个字符由你的应用提供的验证码。长度必须为 1-8 个字符。
expiresInMsnumber整数,1000-86400000过期时间窗口,单位毫秒。允许范围为 1000-86400000。
languagestring枚举: en, zh-CN, zh-TW, es, fr, ja, ko, de, hi, ar, bn, pt, id, ur邮件模板语言。省略时默认使用 en。

支持语言

取值邮件语言
enEnglish
zh-CN中文
zh-TW中文繁體
esEspañol
frFrançais
ja日本語
ko한국어
deDeutsch
hiहिन्दी
arالعربية
bnবাংলা
ptPortuguês
idBahasa Indonesia
urاردو

示例

curl -X POST https://launchalways.com/api/v1/email-verifications/send \
  -H "Authorization: Bearer la_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "user@example.com",
    "code": "482913",
    "expiresInMs": 300000,
    "language": "zh-CN"
  }'

成功响应

{
  "ok": true,
  "emailId": "b7e4f7a3-0000-4000-9000-123456789abc",
  "language": "zh-CN",
  "expiresAt": "2026-06-08T12:34:56.789Z",
  "createdAt": "2026-06-08T12:29:56.789Z"
}

成功响应字段

字段类型必填可为空约束说明
okboolean成功时恒为 true表示发送请求已成功完成。
emailIduuidUUID 字符串用于查询这条已发送邮件记录的唯一 ID。
languagestring支持语言枚举值之一用于渲染并发送这封验证码邮件的语言。
expiresAtISO datetimeISO 8601 时间戳根据 expiresInMs 计算得到的绝对过期时间。
createdAtISO datetimeISO 8601 时间戳LaunchAlways 创建这条已发送邮件记录的时间。

错误响应

状态码响应体触发场景
400{"error":"<validation message>"}邮箱无效、验证码长度无效、过期时间无效、语言不支持、JSON 格式错误,或提交了被拒绝的自定义内容字段。
401{"error":"Invalid or missing API key."}Bearer Token 缺失、格式错误或不存在。
402{"error":"Email verifications quota reached for the Free plan."}账户已用完当前月度发送额度。新的邮件发送会被阻止,但已有验证码记录仍可查询。
503{"error":"RESEND_API_KEY is not configured."}邮件服务商尚未配置。
500{"error":"<provider or server message>"}通过校验和额度检查后,服务商请求或数据库写入失败。
fact_check

2. 校验验证码

根据提交的收件邮箱和验证码,与系统内保存的 hash 进行比对,并返回校验结果、邮件记录 ID、记录状态和结果原因。

只有邮箱和验证码匹配该记录且记录未过期时,valid 才是 true;验证码不匹配、邮箱不匹配或记录已过期时,valid 都是 false。API key 只能访问本项目创建的邮件记录;如果使用其他项目的 emailId,会返回 404 和 {"error":"Email record not found."}。

POST/api/v1/email-verifications/{emailId}

请求头

Authorization: Bearer la_your_api_key_here
Content-Type: application/json

请求体

字段类型必填可为空约束说明
emailstring有效邮箱地址收件人邮箱地址。会去除首尾空格并统一转为小写。
codestring1-8 个字符由你的应用提供的验证码。长度必须为 1-8 个字符。

示例

curl -X POST https://launchalways.com/api/v1/email-verifications/b7e4f7a3-0000-4000-9000-123456789abc \
  -H "Authorization: Bearer la_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "user@example.com",
    "code": "482913"
  }'

成功响应

{
  "valid": true,
  "emailId": "b7e4f7a3-0000-4000-9000-123456789abc",
  "status": "sent",
  "reason": "matched"
}

成功响应字段

字段类型必填可为空约束说明
validbooleantrue 或 false只有提交的邮箱和验证码匹配该记录,且记录尚未过期时为 true;验证码不匹配、邮箱不匹配或记录已过期时为 false。
emailIduuidUUID 字符串已发送邮件记录 ID。
statussent | expired枚举:sent、expired过期前为 sent,超过过期时间后为 expired。
reasonstring枚举:matched、expired、email_mismatch、code_mismatch本次校验结果原因:matched、expired、email_mismatch 或 code_mismatch。

错误响应

状态码响应体触发场景
400{"error":"<validation message>"}邮箱无效、验证码长度无效、过期时间无效、语言不支持、JSON 格式错误,或提交了被拒绝的自定义内容字段。
401{"error":"Invalid or missing API key."}Bearer Token 缺失、格式错误或不存在。
404{"error":"Email record not found."}查询 ID 无效、缺失,或属于其他项目。
500{"error":"Could not verify email code."}记录存在,但因服务端错误无法加载。
manage_search

3. 查询已发送记录

返回收件邮箱、有效期窗口、语言、状态和时间戳。

该接口不会返回验证码、验证码 hash、服务商消息 ID、主题、HTML 或纯文本正文。API key 只能访问本项目创建的邮件记录;如果使用其他项目的 emailId,会返回 404 和 {"error":"Email record not found."}。

GET/api/v1/email-verifications/{emailId}

请求头

Authorization: Bearer la_your_api_key_here

路径参数

字段类型必填可为空约束说明
emailIduuidUUID 字符串发送接口返回的记录 ID。

示例

curl https://launchalways.com/api/v1/email-verifications/b7e4f7a3-0000-4000-9000-123456789abc \
  -H "Authorization: Bearer la_your_api_key_here"

成功响应

{
  "emailId": "b7e4f7a3-0000-4000-9000-123456789abc",
  "email": "user@example.com",
  "expiresInMs": 300000,
  "language": "zh-CN",
  "status": "sent",
  "expiresAt": "2026-06-08T12:34:56.789Z",
  "createdAt": "2026-06-08T12:29:56.789Z"
}

成功响应字段

字段类型必填可为空约束说明
emailIduuidUUID 字符串已发送邮件记录 ID。
emailstring规范化后的邮箱地址收件人邮箱地址。
expiresInMsnumber | null存在时为整数,1000-86400000发送接口中提交的原始有效期窗口。
languagestring支持语言枚举值之一用于渲染并发送邮件的语言。
statussent | expired枚举:sent、expired过期前为 sent,超过过期时间后为 expired。
expiresAtISO datetimeISO 8601 时间戳这封邮件中验证码的绝对过期时间。
createdAtISO datetimeISO 8601 时间戳LaunchAlways 创建这条已发送邮件记录的时间。

错误响应

状态码响应体触发场景
401{"error":"Invalid or missing API key."}Bearer Token 缺失、格式错误或不存在。
404{"error":"Email record not found."}查询 ID 无效、缺失,或属于其他项目。
500{"error":"Could not load email record."}记录存在,但因服务端错误无法加载。
security

安全说明

API Key 和验证码校验接口都应只在可信服务端环境调用。LaunchAlways 只保存带服务端 pepper 的不可逆验证码 hash。

data_object

标准错误对象

上方列出的错误响应均使用下面的 JSON 对象结构。

{
  "error": "Invalid or missing API key."
}
字段类型必填可为空约束说明
errorstring可读错误信息说明请求失败的原因。