开发者API

自动化大规模验证

SNSPhone API让您的工具可以订购美国非VoIP号码,读取短信验证码并管理租用。两种格式:带有JSON的REST API,以及现有脚本常用的短信激活格式。

快速开始

基础URL https://snsphone.com/api/v1。在控制台的API页面上创建一个密钥,并将其作为Authorization: Bearer spk_...发送(或密钥字段)。所有号码均为美国非VoIP。金额为带2位小数的USD字符串,时间为ISO 8601 UTC,每个密钥每分钟300次请求。价格截至2026-11-03。

Python

import os, time, requests

API = "https://snsphone.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['SNSPHONE_KEY']}"}

order = requests.post(f"{API}/orders", headers=H, data={"service": "google"}).json()["order"]
print("Use this US number:", order["phone"])

while True:
    o = requests.get(f"{API}/orders/{order['id']}", headers=H).json()["order"]
    if o["code"] or o["status"] in ("refunded", "canceled"):
        break
    time.sleep(4)
print("Code:", o["code"])

Node.js

const API = "https://snsphone.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSPHONE_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H, body: new URLSearchParams({ service: "discord" }),
}).then((r) => r.json());
console.log("Use this US number:", order.phone);

let o = order;
while (!o.code && !["refunded", "canceled"].includes(o.status)) {
  await new Promise((r) => setTimeout(r, 4000));
  ({ order: o } = await fetch(`${API}/orders/${order.id}`, { headers: H }).then((r) => r.json()));
}
console.log("Code:", o.code);

目录

GET/services

每个服务代码及其名称、类别、验证价格和租用周期。无需密钥。

公开,无需密钥。

curl "https://snsphone.com/api/v1/services"
{"country":"us","services":[{"code":"whatsapp","name":"WhatsApp","category":"Messaging","verification":"0.90","rentals":[]},{"code":"telegram","name":"Telegram","verification":"0.45","rentals":[{"days":365,"period":"1 year","price":"37.44"}]}]}

GET/prices?service=telegram

以USD计价的价格,可选针对某一服务。无需密钥。

公开,无需密钥。

curl "https://snsphone.com/api/v1/prices?service=telegram"
{"country":"us","prices":[{"service":"telegram","type":"verification","days":null,"price":"0.45"},{"service":"telegram","type":"rental","days":365,"price":"37.44"}]}

GET/balance

您的余额,以USD计。

需要您的API密钥。

curl "https://snsphone.com/api/v1/balance" \
  -H "Authorization: Bearer $KEY"
{"balance":"25.00","currency":"USD"}

验证号码

POST/orders

购买验证(201)。返回美国号码和20分钟窗口结束时间。

需要您的API密钥。

curl -X POST "https://snsphone.com/api/v1/orders" \
  -H "Authorization: Bearer $KEY" \
  -d "service=whatsapp"
{"order":{"id":"VR-7K2M9QX4PB","service":"whatsapp","country":"us","phone":"+14155550142","number":"4155550142","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}

GET/orders/VR-7K2M9QX4PB

一次验证及其状态和收到的所有验证码。状态:等待、收到、完成、退款、取消。

需要您的API密钥。

curl "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB" \
  -H "Authorization: Bearer $KEY"
{"order":{"id":"VR-7K2M9QX4PB","status":"received","code":"482913","sms":"Your WhatsApp code is 482913"}}

GET/orders?status=open

您未完成的验证(status=all获取最近100条)。

需要您的API密钥。

curl "https://snsphone.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $KEY"
{"orders":[...]}

POST/orders/VR-7K2M9QX4PB/resend

在同一号码上请求另一个验证码,在第一个验证码之后且窗口仍开放时。不额外收费。

需要您的API密钥。

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/resend" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"received","waiting_for_resend":true}}

POST/orders/VR-7K2M9QX4PB/finish

关闭已收到验证码的验证。

需要您的API密钥。

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/finish" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"finished"}}

POST/orders/VR-7K2M9QX4PB/cancel

在验证码到达前取消。全额退款至您的余额。

需要您的API密钥。

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/cancel" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"canceled","refunded":"0.90"}}

号码租用

POST/rentals

为一个服务和周期租用美国号码(201)。当服务只有一个周期时,days可选。

需要您的API密钥。

curl -X POST "https://snsphone.com/api/v1/rentals" \
  -H "Authorization: Bearer $KEY" \
  -d "service=telegram&days=365"
{"rental":{"id":"RN-4J8T2W6QHM","service":"telegram","phone":"+13125550198","days":365,"period":"1 year","price":"37.44","status":"active","ends_at":"2027-11-03T12:00:00.000Z","messages":[]}}

GET/rentals?status=active

您活跃的租用及其最新消息(status=all获取最近100条)。

需要您的API密钥。

curl "https://snsphone.com/api/v1/rentals?status=active" \
  -H "Authorization: Bearer $KEY"
{"rentals":[...]}

GET/rentals/RN-4J8T2W6QHM

一次租用及其收到的所有短信。

需要您的API密钥。

curl "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM" \
  -H "Authorization: Bearer $KEY"
{"rental":{"id":"RN-4J8T2W6QHM","status":"active","messages":[{"from":"Telegram","sms":"Telegram code: 57291","code":"57291","received_at":"2026-11-03T12:01:12.000Z"}]}}

POST/rentals/RN-4J8T2W6QHM/renew

以相同价格增加一个周期。

需要您的API密钥。

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/renew" \
  -H "Authorization: Bearer $KEY"
{"rental":{"renewed":1,"ends_at":"2028-11-02T12:00:00.000Z"}}

POST/rentals/RN-4J8T2W6QHM/cancel

在收到短信前的20分钟内取消。所有已支付金额退还至您的余额。

需要您的API密钥。

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/cancel" \
  -H "Authorization: Bearer $KEY"
{"rental":{"status":"canceled","refunded":"37.44"}}

短信激活格式

适用于已支持常见激活格式的工具。一个URL,一个操作字段,纯文本回答。仅限验证。

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
操作额外字段回答含义
getBalance无ACCESS_BALANCE:12.50您的余额,以USD计。
getServicesList无{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}带有验证价格的服务代码(JSON)。
getCountries无{"us":{"name":"United States","dial":"1"}}仅限美国。country可以是us、187或省略。
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}以USD计价的价格。服务过滤器可选。
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142购买验证。返回id和带1前缀的号码。
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code>(已请求另一个验证码), STATUS_CANCEL(已取消或退款)。
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 准备就绪(ACCESS_READY), 3 另一个验证码(ACCESS_RETRY_GET), 6 完成(ACCESS_ACTIVATION), 8 在验证码到达前取消并全额退款(ACCESS_CANCEL)。

错误

REST错误以{"error":{"code","message"}}形式返回,带有这些状态码。激活格式以纯文本单词回答。

400缺少或字段错误 (bad_json, bad_period)。
401无密钥或密钥错误 (no_key, bad_key)。
402余额不足 (no_balance)。
404未知服务、订单、租用或端点,或该服务不提供的产品 (not_sold)。
409当前不可用 (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers)。
429每分钟超过300次请求 (rate_limited)。
BAD_KEY缺少或错误的API密钥。
BAD_ACTION未知操作。
BAD_SERVICE未知服务代码。
BAD_COUNTRY非美国地区,或该服务仅限租用。
NO_BALANCE余额不足。
NO_NUMBERS当前无可用号码,请稍后再试。
NO_ACTIVATION未知ID或不属于您。
EARLY_CANCEL_DENIED验证码已到达,无法取消。
NO_ACTIVATIONS已有20个验证正在进行中。
TOO_MANY_REQUESTS每分钟超过300次请求。

API问题

关于密钥、限制和轮询的解答。

SNSPhone是否提供短信验证API?

是的。提供REST API(JSON格式,位于/api/v1)用于服务查询、价格查询、验证和租用,以及通用短信激活接口(位于/stubs/handler_api.php)。

如何进行API请求认证?

在控制台的API页面创建密钥,通过Authorization: Bearer spk_...或key字段发送。密钥仅以哈希形式存储且仅显示一次。

API速率限制是多少?

每个密钥每分钟300次请求,每个账户最多20个进行中验证和20个活跃租用。

API订单会比网站订单更贵吗?

不会。API使用与控制台相同的价格和退款规则。

如何知道验证码已到达?

每隔几秒轮询GET /orders/{id}。状态将从waiting变为received,code字段将包含数字验证码。

非VoIP短信验证API:通过REST获取美国号码 | SNSPhone