选择语言

开发者 API

短信验证 直接接入您的代码

一次 HTTPS 调用,即可为您的机器人或平台获取用于 WhatsApp、Telegram 等众多服务的真实号码。通过 Webhook 或长轮询接收验证码,只为收到验证码的号码付费。

  • 1,321项服务
  • 145个国家
  • US$0.10单个号码最低价
  • 自动未收到验证码即退款

curl

curl -s -X POST https://smsgrab.com/api/dev/v1/activations \
  -H "Authorization: Bearer $SMSGRAB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"service":"whatsapp","country":"indonesia"}'

Python

activation = requests.post(
    "https://smsgrab.com/api/dev/v1/activations",
    headers={"Authorization": f"Bearer {key}"},
    json={"service": "whatsapp", "country": "indonesia"},
).json()

Node.js

const activation = await fetch('https://smsgrab.com/api/dev/v1/activations', {
  method: 'POST',
  headers: { Authorization: `Bearer ${key}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ service: 'whatsapp', country: 'indonesia' }),
}).then((response) => response.json());

PHP

$activation = json_decode((string) $client->post('activations', [
    'json' => ['service' => 'whatsapp', 'country' => 'indonesia'],
])->getBody(), true);

Go

order := map[string]any{"service": "whatsapp", "country": "indonesia"}
err := call("POST", "/activations", order, idempotencyKey(), &activation)
201 Created
{
  "id": "5c1d0c2e-9f3a-4b7e-8a61-2f0c9d4e7b10",
  "compat_id": 100000123,
  "status": "WAITING_SMS",
  "service_id": "whatsapp",
  "country_id": "indonesia",
  "phone_number": "+6281234567890",
  "price_minor": 18,
  "currency": "USD",
  "expires_at": "2026-09-27T10:25:00.000Z",
  "sms": []
}

为自动化而生

集成所需的一切,号码库存、账务和退款与应用完全一致。

  • 简洁的 REST API

    可预期的 JSON、幂等购买,以及可据此处理的清晰错误原因。

  • 签名 Webhook

    每次收到验证码或状态变化都会推送 HMAC 签名事件,并在 24 小时内重试。

  • 长轮询

    请求最长可保持 30 秒,验证码一到即刻返回。

  • 兼容 sms-activate

    把现有工具指向我们的接口即可,操作和响应保持不变。

  • 由您掌控的密钥

    只读或可购买密钥、IP 白名单、每日上限、有效期,以及不停机轮换。

  • 自动退款

    号码到期前未收到验证码?款项立即退回您的余额。

  • 用量与请求日志

    按密钥查看每日请求、支出和错误,并提供可筛选的近 7 天日志。

  • 阶梯用量价格

    基于批发价,月用量越大价格越低,自动生效。

四步即可上手

只需几次调用,就能拿到第一个号码。

  1. 创建账户

    使用邮箱注册并完成验证。应用和网站共用同一账户。

  2. 创建 API 密钥

    选择权限,把密钥限制在您的服务器上,并复制一次密钥值。

  3. 购买号码

    POST 服务和国家,号码和价格立即返回。

  4. 接收验证码

    通过长轮询或 Webhook 等待验证码,然后完成激活。

用得越多,价格越低

开发者价格以每个号码的批发成本为基础,再加上随 30 天用量递减的加价。

  • 绝不高于应用内同一号码的价格
  • 每个号码至少 US$0.10
  • 未收到验证码的号码自动退款
  • 达到等级后几分钟内生效
  • 以美元从与应用相同的余额中扣款

按 30 天开发者支出划分的加价

按 30 天支出划分的开发者加价
30 天开发者支出 批发价加价 示例价格
不超过 US$100.00 +80% US$0.18 比应用便宜 28%
US$100.00 起 +70% US$0.17 比应用便宜 32%
US$500.00 起 +60% US$0.16 比应用便宜 36%
US$2,000.00 起 +50% US$0.15 比应用便宜 40%

示例:批发成本为 US$0.10、应用内售价为 US$0.25 的商品。

获取 API 密钥

迁移

改一行代码即可从 sms-activate 迁移

我们的兼容接口使用相同协议,为 sms-activate 开发的机器人和面板只需更换基础 URL 和密钥即可运行。

https://smsgrab.com/api/stubs/handler_api.php
  • getNumber、getStatus、setStatus、getPrices 及其他标准操作
  • 沿用您现有的数字激活 ID、服务代码和国家 ID
  • 与 REST API 相同的密钥、限制、价格、退款和 Webhook
兼容性参考

curl

BASE="https://smsgrab.com/api/stubs/handler_api.php?api_key=$SMSGRAB_API_KEY"

curl -s "$BASE&action=getBalance"
curl -s "$BASE&action=getNumber&service=tg&country=6"
curl -s "$BASE&action=getStatus&id=100000123"
curl -s "$BASE&action=setStatus&id=100000123&status=6"

Python

import os

import requests

BASE = "https://smsgrab.com/api/stubs/handler_api.php"
KEY = os.environ["SMSGRAB_API_KEY"]


def action(name: str, **params) -> str:
    response = requests.get(BASE, params={"api_key": KEY, "action": name, **params}, timeout=30)
    response.raise_for_status()
    return response.text


print(action("getBalance"))
answer = action("getNumber", service="tg", country=6)
if answer.startswith("ACCESS_NUMBER:"):
    _, activation_id, number = answer.split(":")
    print(activation_id, number)

实时

验证码直达您的服务器

订阅所需事件,我们会携带可验证的签名推送到您的 HTTPS 接口。

  • 号码已购买
  • 已收到验证码
  • 激活已完成
  • 激活已取消
  • 激活已过期
  • 已退款
  • 余额不足
Webhook 指南
600每个密钥每分钟请求数
60每个密钥每分钟购买数
100同时等待的号码
30秒长轮询
  • 每次推送均使用带时间戳的 HMAC-SHA256 签名
  • 仅支持公网 HTTPS 接口,每次推送前都会检查
  • 测试推送、30 天记录和一键重新推送

开发者常见问题

开发者 API 如何收费?

无需订阅。每个号码按批发价加 80% 加价计费;当您 30 天的开发者支出超过 100、500 和 2000 美元时,加价分别降至 70%、60% 和 50%。单个号码不低于 0.10 美元,也不会高于应用内价格。

收不到验证码怎么办?

号码有效期为 20 分钟。若期间未收到验证码,或您在等待中取消号码,款项会自动退回余额。

能继续使用我的 sms-activate 集成吗?

可以。把基础 URL 改为我们的兼容接口并使用 SmsGrab 密钥即可,标准操作、响应和数字 ID 均保持不变。

频率限制是多少?

默认情况下,每个密钥每分钟可发起 600 次请求和 60 次购买,账户下所有密钥合计每分钟 3000 次请求,最多 100 个号码可同时等待验证码。

如何保护我的密钥?

只在服务器上保存密钥,为每个应用单独创建密钥,限制为服务器地址并设置每日消费上限。如密钥可能泄露,请在账户中轮换或吊销。

应用和 API 共用余额吗?

是的。API 使用您的 SmsGrab 账户余额,每笔购买和退款都会像其他交易一样显示在钱包中。

更多解答请访问 帮助中心

准备好自动化验证了吗?

在账户中创建密钥,几分钟内即可完成首次调用。