API 文档 / 手机号实名认证

手机号实名认证接口

核验姓名与手机号是否属于同一人。支持二要素(姓名 + 手机号)与三要素(再加身份证号)。

请求地址

POST/api/v1/mobile起步 ¥0.25 / 次 · 阶梯价
完整地址:https://smrz.anyixing.com.cn/api/v1/mobile
请求方式:POST Content-Type:application/json 鉴权:X-Api-Key
核验要素:二要素:name + mobile(可选 idcard 升级为三要素)

本接口判断「这个号码登记在谁名下」。只传姓名与手机号时按二要素核验;同时传身份证号时按三要素核验,判定更严格。二要素适合注册环节的轻量校验,三要素适合提现、改密、找回密码等高风险操作。一致时还会顺带返回号码所属运营商与归属地。

请求参数

参数类型必填说明示例
name*string是姓名,中文全名,须与运营商实名登记姓名一致张三
mobile*string是11 位中国大陆手机号,不带 +86 与空格13800138000
idcardstring否18 位居民身份证号。不传即二要素核验,传了即三要素核验330102199001010012

请求示例

curl

curl -X POST "https://smrz.anyixing.com.cn/api/v1/mobile" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: aB3xK9mP2qR7sT5vW8yZ4nC6dF1gH0jL" \
  -d '{"name":"张三","mobile":"13800138000","idcard":"330102199001010012"}'

PHP

<?php
$payload = '{"name":"张三","mobile":"13800138000","idcard":"330102199001010012"}';

$ch = curl_init('https://smrz.anyixing.com.cn/api/v1/mobile');
curl_setopt_array($ch, array(
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $payload,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 10,
    CURLOPT_HTTPHEADER     => array(
        'Content-Type: application/json',
        'X-Api-Key: aB3xK9mP2qR7sT5vW8yZ4nC6dF1gH0jL'
    ),
));
$res  = curl_exec($ch);
curl_close($ch);
$json = json_decode($res, true);
if ($json['code'] === 0) {
    // data.result 为核验结论
}

Python

import requests

resp = requests.post(
    'https://smrz.anyixing.com.cn/api/v1/mobile',
    json={"name":"张三","mobile":"13800138000","idcard":"330102199001010012"},
    headers={'X-Api-Key': 'aB3xK9mP2qR7sT5vW8yZ4nC6dF1gH0jL'},
    timeout=10,
)
data = resp.json()
if data['code'] == 0:
    print(data['data']['result'])

返回参数

字段类型说明
codeint调用状态码,0 表示调用被正常处理,不代表核验一致
msgstring状态描述,可直接写入日志
data.resultstring核验结论,取值见下方「核验结论」
data.carrierstring号码所属运营商,如「中国移动」;数据缺失时不返回该字段
data.citystring号码归属地,如「北京-北京」;数据缺失时不返回该字段
data.feedecimal本次调用实际扣费金额(元)
data.balancedecimal调用后的账户可用余额(元)
data.req_idstring本次请求流水号,排查问题时提供此值
data.cost_msint接口耗时(毫秒)

返回示例

调用成功(业务结论为一致)

{
  "code": 0,
  "msg": "核验一致",
  "data": {
    "result": "MATCH",
    "carrier": "中国移动",
    "city": "北京-北京",
    "fee": 0.28,
    "balance": 985.90,
    "req_id": "c3d4e5f6a7b8c9d0",
    "cost_ms": 312
  }
}

调用失败(余额不足)

{
  "code": 1003,
  "msg": "余额不足,请充值后重试",
  "data": null
}

核验结论

仅当 code = 0 时存在 data.result。

data.result含义说明计费
MATCH核验一致手机号登记信息与提交信息一致计费
NO_MATCH核验不一致手机号存在,但姓名(或身份证号)不匹配计费
NO_NUMBER号码无记录该号码在权威库中无记录,或号段暂不支持计费

错误码

code含义说明与处理
0调用成功按 data.result 判断核验结论,已计费
1001参数错误缺少必填字段、字段格式不合法或校验位错误。本地即拦截,未计费,也不会产生调用记录
1002鉴权失败密钥缺失、无效、已重置,或账号被停用。未计费
1003余额不足账户可用余额低于本次单价,充值后重试。未计费
1004频率超限超出账号的 QPS 上限。未计费,退避后重试
1005接口不可用该接口未对本账号开放,或平台侧临时关闭。未计费,联系客服确认
1006核验频次超限触发了防刷规则(同一主体短时间内在试多个不同对象)。未计费,等窗口期过后再试,详见本页「频率与防刷」
2001上游超时数据源响应超时或繁忙。未计费,按指数退避重试
2002上游异常数据源返回异常。未计费,记录 req_id 联系客服
2003核验未完成(已计费)上游判定本号码或证件号无效(例如号码已在运营商侧注销)。按上游口径这类请求仍计费,请核对信息后重试;确认信息无误仍失败,请提供 req_id 联系客服

计费规则

  • 单价按账号累计充值额所属档位执行,起步 ¥0.25 / 次。
  • 二要素与三要素同价,不因多传身份证号而加价。
  • 一致、不一致、号码无记录均计费。
  • 参数错误、鉴权失败、余额不足、防刷拦截、上游异常不计费。

频率与防刷

账号级 QPS 上限为 20,超出返回 1004。除 QPS 外,为防止有人拿真实号码猜姓名、或拿真实姓名批量试号码,另设以下防刷规则,触发返回 1006:

  • 同一手机号,60 分钟内出现 ≥5 个不同姓名 → 拦截
  • 同一姓名,60 分钟内查询 ≥8 个不同手机号 → 拦截(一人多号属正常业务,此维度比身份证放宽)
  • 计数为全局维度,跨账号累计。
正常业务(同一批用户一人一次)不会触发。如果是批量核验且确有需要,联系客服说明用途可调整阈值。

注意事项

  • 不传 idcard 是二要素,传了是三要素,两种模式单价相同,按业务风险自行选择。
  • 只返回「是否一致」的比对结论,不返回机主姓名、身份证号等任何登记信息。
  • 虚拟运营商号段(170/171 等)覆盖有限,可能返回「号码无记录」,不代表号码不存在。
  • carrier 与 city 为增值字段,部分号段数据源缺失时不会出现在返回体中,请做空值判断。
  • 批量场景建议 5–10 并发,过高并发容易触发上游风控。
微信客服二维码
微信扫一扫联系客服
客服