登录

SMS 验证 API

用一个 HTTP 请求完成购买号码、查看验证码和取消。采用虚拟号码行业广泛使用的 handler_api 方式,注册程序和机器人只需填入地址和密钥即可直接对接。

获取 API 密钥

登录后在账户页面的 API 菜单中生成密钥。密钥仅在生成时显示一次,请立即保存。API 与网页使用相同的余额和价格。

基础地址

https://nuviosms.com/stubs/handler_api.php?api_key=API_KEY&action=...

主要请求

action职责响应示例
getBalance查看余额ACCESS_BALANCE:12.50
getPrices&service=telegram&country=gb各服务和国家的价格及剩余号码{"gb":{"telegram":{"cost":0.207,"count":8877728}}}
getNumber&service=telegram&country=gb购买号码ACCESS_NUMBER:ID:PHONE
getStatus&id=ID查看验证码STATUS_WAIT_CODE / STATUS_OK:CODE
setStatus&id=ID&status=8取消号码(收到验证码前,全额退款)ACCESS_CANCEL
setStatus&id=ID&status=3用同一号码再收一次验证码ACCESS_RETRY_GET
setStatus&id=ID&status=6结束使用ACCESS_ACTIVATION

请求参数

名称必填说明
api_key全部在账户页面生成的 API 密钥
action全部getBalance, getPrices, getNumber, getStatus, setStatus
servicegetNumber服务代码(例:telegram、whatsapp、google),与服务列表页面的地址相同
countrygetNumber两位字母国家代码(例:gb、us、id)
idgetStatus, setStatusgetNumber 返回的号码 ID(以 N- 开头)
statussetStatus8 取消,3 再收一次验证码,6 完成,1 准备就绪

响应文本与含义

响应含义金额
ACCESS_NUMBER:ID:PHONE已获取号码扣除号码费用
STATUS_WAIT_CODE正在等待验证码保持不变
STATUS_OK:CODE验证码已到支付完成
STATUS_WAIT_RETRY:CODE正在等待下一条验证码(含之前的验证码)无额外费用
STATUS_CANCEL已取消或时间已结束未收到验证码则已退款
ACCESS_CANCEL已取消全额退款
ACCESS_RETRY_GET用同一号码再等一次验证码无额外费用
ACCESS_ACTIVATION号码已使用完毕保持不变
NO_BALANCE充值余额后即可立即接收不扣费
NO_NUMBERS目前无法提供该国号码不扣费
NO_ACTIVATIONS进行中的号码已达 20 个不扣费
EARLY_CANCEL_DENIED已收到验证码的号码用完成(6)代替取消保持不变
BAD_KEYAPI 密钥不正确不扣费
BAD_SERVICE / BAD_COUNTRY服务或国家代码不正确不扣费
NO_ACTIVATION未找到号码 ID保持不变
TOO_MANY_REQUESTS已超过每分钟 300 次不扣费

各语言示例

import time, requests

BASE = "https://nuviosms.com/stubs/handler_api.php"
KEY = "API_KEY"

def call(**p):
    return requests.get(BASE, params={"api_key": KEY, **p}, timeout=30).text

r = call(action="getNumber", service="telegram", country="gb")
if not r.startswith("ACCESS_NUMBER"):
    raise SystemExit(r)
_, num_id, phone = r.split(":")
print("Number:", phone)

for _ in range(240):                      # 20 minutes
    s = call(action="getStatus", id=num_id)
    if s.startswith("STATUS_OK"):
        print("Code:", s.split(":")[1])
        call(action="setStatus", id=num_id, status=6)
        break
    time.sleep(5)

使用方法

  • 用 getNumber 获取号码,在注册页面填入号码后,每隔 5 秒调用一次 getStatus。
  • STATUS_OK:收到验证码后输入该验证码,并用 setStatus 6 完成。
  • 如果 20 分钟内未收到验证码,号码费用会自动退回余额。
  • 每分钟最多发送 300 次请求。