在发送 OTP、SMS 通知或启用用户注册之前,您需要验证电话号码。在本次演练结束时,您将验证一个电话号码,检查运营商/国家/格式元数据,并使用 Zyla API Hub 上的电话验证 API 在 Postman 中测试所有内容。
电话验证 API 的功能
电话验证 API 验证电话号码是否有效,并返回丰富的元数据,您可以使用这些数据来路由、格式化或阻止消息。响应包括有效性标志、运营商/提供商、国家和 ISO 代码、国家/国际格式、时区、线路类型(例如,移动)等。
典型用例:
- 在创建帐户之前阻止无效或一次性号码。
- 以 E.164 或国际风格格式化号码,以便于一致的下游处理。
- 根据线路类型决定是发送 SMS 还是语音。
- 在管理工具中显示地理位置相关信息(国家、时区)。
与 Zyla API Hub 上的所有服务一样,您可以在整个市场中使用一个帐户和一个 API 密钥,采用订阅和配额模型(而不是按调用付费)。对于此 API,第一个计划提供 7 天的试用或 50 次请求,并且没有免费计划。请查看 API 页面以获取当前访问选项和定价。
在 Zyla API Hub 上开始
要在几分钟内尝试电话验证 API:
- 打开 API 页面:电话验证 API。
- 点击订阅(或在可用时开始免费试用)。第一个计划提供 7 天的试用或 50 次请求;没有免费计划。
- 从仪表板复制您的 API 密钥。所有调用都使用头 Authorization: Bearer YOUR_API_KEY。
如果您还没有帐户,可以注册以创建一个并获取 API 密钥。
您将使用的端点
电话验证 API 在 Zyla API Hub 上公开此端点:
-
电话验证
方法:GET
URL:https://zylalabs.com/api/10138/phone-validator-api/26579/phone-validation
所需查询参数:phone(字符串):要验证的电话号码,例如,+41799530236
用 Postman 测试
1)创建请求
在 Postman 中设置一个新的 GET 请求,内容如下:
- 方法:GET
- URL:
https://zylalabs.com/api/10138/phone-validator-api/26579/phone-validation?phone=%2B41799530236
2)添加授权
在 Headers 下,添加:
Authorization:Bearer YOUR_API_KEY
3)发送并检查响应
点击发送。您应该收到一个包含有效性和元数据的 JSON 响应。
您可以复制的官方 cURL
curl -s -X GET "https://zylalabs.com/api/10138/phone-validator-api/26579/phone-validation?phone=%2B41799530236"
-H "Authorization: Bearer YOUR_API_KEY"
官方示例响应
{
"is_valid": true,
"is_disposable": false,
"provider": "Swisscom",
"location": "Switzerland",
"country": "Switzerland",
"country_iso2": "CH",
"country_iso3": "CHE",
"country_code": 41,
"continent": "Europe",
"time_zones": [
"Europe/Zurich"
],
"format_national": "079 953 02 36",
"format_e164": "+41799530236",
"format_international": "+41 79 953 02 36",
"format_rfc3966": "tel:+41-79-953-02-36",
"line_type": "mobile",
"is_mobile": true,
"is_possible": true,
"national_number": "799530236",
"country_flag": "🇨🇭",
"currency_code": "CHF",
"utc_offset": "+02:00"
}
您可能会使用的字段亮点:
is_valid和is_possible:控制帐户创建和消息发送。line_type和is_mobile:通过 SMS 或其他渠道路由通知。format_e164和format_international:在您的数据库中保留规范格式,并在管理用户界面中显示用户友好的版本。provider和country_iso2:分析和路由逻辑。time_zones和utc_offset:避免在收件人所在地区的夜间发送消息。
JavaScript 示例(Node.js)
此示例调用相同的端点,并使用您通常需要的字段来决定是否继续发送 SMS:
import fetch from "node-fetch";
async function validatePhone(phone) {
const url = new URL("https://zylalabs.com/api/10138/phone-validator-api/26579/phone-validation");
url.searchParams.set("phone", phone);
const res = await fetch(url.toString(), {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_API_KEY"
}
});
if (!res.ok) {
const text = await res.text();
throw new Error(`HTTP ${res.status}: ${text}`);
}
const data = await res.json();
// 最小的门控逻辑
if (!data.is_valid || !data.is_possible) {
return { ok: false, reason: "无效或不可能的号码", data };
}
if (data.line_type !== "mobile" || !data.is_mobile) {
return { ok: false, reason: "非移动线路;SMS 可能失败", data };
}
// 使用规范的 E.164 进行存储和下游系统
return {
ok: true,
e164: data.format_e164,
provider: data.provider,
country: data.country,
iso2: data.country_iso2,
timeZones: data.time_zones,
rfc3966: data.format_rfc3966,
data
};
}
validatePhone("+41799530236")
.then(result => console.log(JSON.stringify(result, null, 2)))
.catch(err => console.error(err));
工作流模式
- 注册门控:在用户注册时调用端点。如果
!is_valid或!is_possible,则阻止提交并提示进行更正。 - 号码标准化:将
format_e164存储为规范值。使用format_international进行运营商视图,使用format_national进行本地显示。 - 消息保护:仅在
is_mobile === true和line_type === "mobile"时入队 SMS。可选择在本地time_zones落在工作时间内时延迟消息。 - 路由和成本意识:按
country_iso2、country_code和provider对流量进行分段,以进行分析或按区域发送策略。
节省时间的实施说明
- 授权:在请求中始终包含
Authorization: Bearer YOUR_API_KEY。 - 幂等性:验证是只读的;您可以安全地在瞬态网络错误上重试。
- 缓存:由于号码元数据相对稳定,因此缓存以
format_e164为键的正面验证,以减少重复查找。 - 国际格式化:优先使用
format_e164进行编程使用。它去除了空格和连字符,并包含前导“+”。 - 时间和区域:
utc_offset作为字符串返回(例如,+02:00)。使用time_zones进行精确转换。 - 错误处理:将非 2xx HTTP 响应视为操作失败;记录响应主体以帮助诊断配额或授权问题。
- 订阅模型:Zyla 使用订阅 + 配额,而不是按调用付费。此 API 的第一个计划提供 7 天的试用或 50 次请求;没有免费计划。请在您的 Zyla 仪表板中监控您的使用情况。
故障排除清单
- 401/403?确认 Authorization 头存在且 API 密钥有效。
- 4xx 带有消息内容?检查
phone查询参数是否提供并进行 URL 编码。 - 空或意外字段?使用不同的号码进行验证以排除边缘情况。保留
format_e164并重新运行。 - 应用特定问题?记录原始 JSON 响应以快速与本地解析代码进行差异比较。
通过 MCP 从 AI 代理调用 API
Zyla 上的每个 API 都可以通过与 MCP 兼容的工具(如 Claude Code、Cursor 和 Windsurf)进行调用。将您的代理或客户端指向 MCP 端点,并在查询字符串中传递您的 API 密钥:
https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY
从那里,您的代理可以使用市场路由调用相同的电话验证端点。有关集成细节和客户端设置,请参阅MCP 文档。当您希望 AI 助手在代码生成或测试运行期间内联验证号码时,这非常有用。
您可以重用的端到端 Postman 食谱
请求设置
- 新请求 → GET
- URL:
https://zylalabs.com/api/10138/phone-validator-api/26579/phone-validation?phone=%2B41799530236 - 头部:
Authorization: Bearer YOUR_API_KEY - 发送
快速测试脚本(可选)
如果您使用 Postman 测试,可以添加快速断言,例如:
pm.test("HTTP 200", function () {
pm.response.to.have.status(200);
});
const body = pm.response.json();
pm.test("有效的手机号码", function () {
pm.expect(body.is_valid).to.eql(true);
pm.expect(body.is_mobile).to.eql(true);
});
为什么使用 Zyla API Hub 进行此集成
- 一个帐户,一个 API 密钥,一个订阅模型,适用于 Hub 上超过 10,000 个公共 API。
- 集中计费,采用订阅 + 配额(而不是按调用付费),并提供监控使用情况的仪表板。
- 跨端点一致的身份验证:使用您的密钥的 Authorization 头。
当您准备扩展此工作流(例如,消息、丰富或欺诈工具)而无需切换身份验证模型时,请在Zyla API Hub 上探索其他服务。
常见问题解答
验证的确切端点是什么?
使用 GET https://zylalabs.com/api/10138/phone-validator-api/26579/phone-validation 并带上 phone 查询参数。
我该如何进行身份验证?
在头部传递您的密钥:Authorization: Bearer YOUR_API_KEY。
是否有免费计划?
没有。第一个计划提供 7 天的试用或 50 次请求。请查看 API 页面以获取当前访问选项和定价。
我应该存储哪些字段?
将 format_e164 保留为规范号码。如果与您的路由或分析相关,请存储 is_valid、is_possible、line_type、country_iso2 和 provider。
我可以从 AI 代理调用此 API 吗?
可以,通过 MCP 端点 https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY。有关客户端细节,请参阅MCP 文档。
准备好在您的堆栈中测试电话验证 API 吗?打开电话验证 API 页面,订阅并开始从 Postman 或代码调用它。如果您需要帐户,请注册以获取您的 API 密钥,并在本周内完成集成。