SimpleSMS

API 文档

SimpleSMS API 使用说明

生产 API 地址为 https://fenjueauto.com。注册账号、创建调用密钥并充值余额后,即可通过 HTTPS API 创建验证码订单、查询结果和管理订单状态。

Quick Start

四步接入

01注册账号

使用用户名、密码和手机号创建账户。手机号仅用于找回密码。

02创建调用密钥

进入我的账户创建密钥。完整密钥只显示一次,请妥善保存。

03充值余额

充值或兑换充值码后即可创建订单。下单会先冻结余额。

04查询验证码

轮询订单详情,状态为 completed 时读取 code 字段。

DX

开发者工具

下载 OpenAPI 和 Postman Collection,快速接入余额、价格、下单、查询和取消接口。

HEADER

认证方式

所有 /v1 接口都从 https://fenjueauto.com 调用,并需要调用密钥。请在请求头中加入:

Authorization: Bearer YOUR_ACCESS_KEY
Content-Type: application/json
GET

GET /v1/balance

查询账户可用余额和冻结余额。

curl -X GET https://fenjueauto.com/v1/balance \
  -H "Authorization: Bearer YOUR_ACCESS_KEY"
{
  "balance": 12.5000,
  "frozen": 0.2000
}
GET

GET /v1/catalog/prices

查询当前可用国家、客户价格、库存、价格档位和更新时间。客户价格是最终美元售价,已经包含后台设置的价格倍率。创建订单返回的 price 与冻结金额使用同一口径。

curl -X GET "https://fenjueauto.com/v1/catalog/prices?limit=50" \
  -H "Authorization: Bearer YOUR_ACCESS_KEY"
{
  "prices": [
    {
      "country": 52,
      "countryName": "泰国",
      "countryIso2": "TH",
      "availableCount": 184,
      "customerPrice": 0.0800,
      "tiers": [
        {
          "tierId": "sms:TH:0.080000",
          "price": 0.0800,
          "customerPrice": 0.0800,
          "availableCount": 120,
          "updatedAt": "2026-05-10T09:00:00.000Z"
        },
        {
          "tierId": "sms:TH:0.120000",
          "price": 0.1200,
          "customerPrice": 0.1200,
          "availableCount": 64,
          "updatedAt": "2026-05-10T09:00:00.000Z"
        }
      ],
      "syncedAt": "2026-05-10T09:00:00.000Z"
    }
  ]
}
GET

GET /v1/catalog/email-prices

查询当前邮箱验证码可用域名、库存和客户价格。客户价格是最终美元售价,已经包含后台设置的价格倍率。

curl -X GET "https://fenjueauto.com/v1/catalog/email-prices" \
  -H "Authorization: Bearer YOUR_ACCESS_KEY"
{
  "prices": [
    {
      "domain": "gmail.com",
      "availableCount": 12,
      "customerPrice": 0.2000,
      "syncedAt": "2026-05-10T09:00:00.000Z"
    }
  ]
}
POST

POST /v1/orders

创建手机号订单或邮箱订单。maxPrice 表示你愿意支付的最终最高价,不会在此基础上再次加价。创建成功会先冻结 price 对应金额,每个订单默认有 10 分钟倒计时,验证码未到达前 code 为空。

手机号订单可以传 tierId 主动选择价格档位。价格档位里的 price / customerPrice 都已经按运营倍率计算好,是客户最终售价。

创建订单默认会最多等待 10 秒,尽量在响应里直接返回手机号或邮箱地址。分配较慢时仍会返回订单号,请继续查询订单。需要立即返回时可使用 waitAddress=false

手机号订单

curl -X POST "https://fenjueauto.com/v1/orders" \
  -H "Authorization: Bearer YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "sms",
    "country": 52,
    "tierId": "sms:TH:0.120000",
    "maxPrice": 0.1200
  }'

邮箱订单

curl -X POST "https://fenjueauto.com/v1/orders" \
  -H "Authorization: Bearer YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "email",
    "domain": "gmail.com",
    "maxPrice": 0.1000
  }'
{
  "orderId": "AGW_2x7h9k...",
  "type": "sms",
  "country": 52,
  "domain": null,
  "status": "reserved",
  "address": null,
  "code": null,
  "price": 0.0800,
  "createdAt": "2026-05-10T09:10:00.000Z",
  "timeoutAt": "2026-05-10T09:20:00.000Z"
}
GET

GET /v1/orders/{orderId}

查询订单状态和验证码结果。创建订单后先等待 address 不为空,再将手机号或邮箱用于你已获授权的验证流程;提交后继续每 5-10 秒查询一次,code 不为空或状态为 completed 后停止轮询。

curl -X GET https://fenjueauto.com/v1/orders/AGW_2x7h9k... \
  -H "Authorization: Bearer YOUR_ACCESS_KEY"
{
  "orderId": "AGW_2x7h9k...",
  "status": "completed",
  "address": "+66812345678",
  "code": "123456",
  "price": 0.0800,
  "completedAt": "2026-05-10T09:12:18.000Z"
}
reservedprovisioningactivecompletedcancelledtimeoutfailed
POST

POST /v1/orders/{orderId}/ready

手机号已用于授权验证页面后调用一次。系统会发送“已使用号码,可以等待验证码”的状态信号,提高订单状态准确性;不支持该信号时会自动跳过。

curl -X POST https://fenjueauto.com/v1/orders/AGW_2x7h9k.../ready \
  -H "Authorization: Bearer YOUR_ACCESS_KEY"
{
  "orderId": "AGW_2x7h9k...",
  "status": "active",
  "message": "Order is ready to receive SMS code."
}
POST

POST /v1/orders/{orderId}/cancel

取消尚未完成的订单。取消成功后释放冻结余额;已完成、已超时或已失败的订单会返回当前最终状态。

curl -X POST https://fenjueauto.com/v1/orders/AGW_2x7h9k.../cancel \
  -H "Authorization: Bearer YOUR_ACCESS_KEY"
LIMITS

限流与重试

建议客户端对 429、5xx 和网络超时使用指数退避重试。创建订单接口不要盲目并发重试;如果收到订单号,请继续查询原订单。

retry delays: 1s, 2s, 5s, 10s
poll interval: 5-10s
stop polling: completed / cancelled / timeout / failed
WEBHOOK

客户 Webhook

可配置一个客户侧回调地址。订单完成时,SimpleSMS 会向该地址 POST order.completed 事件;轮询仍建议保留作为兜底。

PUT /v1/webhook
Authorization: Bearer YOUR_ACCESS_KEY
Content-Type: application/json

{
  "url": "https://example.com/simplesms-webhook",
  "secret": "optional-signing-secret",
  "enabled": true
}
{
  "event": "order.completed",
  "order": {
    "orderId": "AGW_2x7h9k...",
    "status": "completed",
    "address": "+66812345678",
    "code": "123456",
    "price": 0.0800
  },
  "deliveredAt": "2026-05-13T00:00:00.000Z"
}

如果设置了 secret,请求头会包含 X-SimpleSMS-Signature: sha256=...,签名内容为原始 JSON body。

Errors

错误码

INVALID_API_KEY调用密钥无效、缺失或已停用。
INSUFFICIENT_BALANCE账户余额不足,请充值后重试。
ORDER_NOT_FOUND订单不存在,或不属于当前账户。
RATE_LIMITED请求过于频繁,请稍后再试。
INVALID_ORDER_TYPEtype 只能是 sms 或 email。
{
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Insufficient balance."
  }
}