短信验证 API

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

获取 API 密钥

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

基础地址

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

主要请求

action服务内容响应示例
getBalance查看余额ACCESS_BALANCE:12.50
getPrices&service=telegram&country=kr各服务价格与剩余号码{"kr":{"telegram":{"cost":3.2,"count":7922}}}
getNumber&service=telegram&country=kr购买号码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)。与服务列表页地址相同
countrygetNumberkr(韩国 010 号码,省略时默认为 kr)
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://010sms.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="kr")
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 次请求。
短信验证 API | 010SMS