API 文档
快速接入短信发送服务,支持 GET 和 POST 两种请求方式,分钟级完成集成
POST
GET
发送短信
向指定手机号发送短信,按实际计费条数扣除余额。
V2 接口已开始推送上线,如无 BUG,V1 接口将于 2026 年底正式下线。请尽快迁移至 V2 加密接口。
接口地址
POST / GET /api/send.php
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
AppKey |
string | 是 | 你的 API 密钥,注册后获取 |
phone |
string | 是 | 目标手机号 |
content |
string | 是 | 短信内容(签名自备) |
请求示例
cURL / Browser
// 浏览器 / curl 直接请求 /api/send.php?AppKey=你的AppKey&phone=13800138000&content=您的验证码是123456
响应示例
成功响应
{ "code": 1, "msg": "发送成功" }
余额不足
{ "code": 0, "msg": "Insufficient balance" }
AppKey 无效
{ "code": 0, "msg": "AppKey not found or invalid" }
GET
查询余额
查询指定 AppKey 的剩余短信条数。
接口地址
GET /api/balance.php?AppKey=你的AppKey
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
AppKey |
string | 是 | 你的 API 密钥 |
响应示例
成功响应
{ "code": 1, "msg": "ok", "balance": 100 }
POST
发送短信 (V2 加密)
安全使用 AES-256-GCM 端到端加密发送短信,防止中间人窃听和篡改。建议正式环境使用 V2 接口。
接口地址
POST /api_v2/send.php
注意:V2 要求加密密钥(Encrypt Key),请在控制台的"API设置"页面获取。每次请求需生成随机 IV(12 字节)。
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
AppKey |
string | 是 | 你的 API 密钥 |
payload |
string | 是 | AES-256-GCM 加密后的密文(Base64) |
iv |
string | 是 | 加密使用的随机 IV(Base64,12 字节) |
tag |
string | 是 | GCM 认证标签(Base64,16 字节) |
timestamp |
int | 是 | Unix 时间戳,±5分钟内有效 |
加密 payload 内容
加密前的明文 JSON 需包含以下字段:
| 字段 | 说明 |
|---|---|
phone | 目标手机号 |
content | 短信内容(含签名) |
加密流程
1. 获取 Encrypt Key(64 位十六进制)→ 转为 32 字节二进制密钥
2. 生成 12 字节随机 IV
3. 将 {"phone":"138...","content":"..."} 用 AES-256-GCM 加密
4. 取出 ciphertext 和 tag(GCM 自动生成)
5. 将所有字段 Base64 编码,连同 AppKey 和 timestamp 发送到 V2 接口
请求示例
JSON
POST /api_v2/send.php Content-Type: application/json { "AppKey": "你的AppKey", "payload": "xK9mR3vW...base64密文...", "iv": "7nFqL2pX...base64...", "tag": "9tR4sM8w...base64...", "timestamp": 1750000000 }
响应示例
成功响应
{ "code": 1, "msg": "发送成功" }
解密失败
{ "code": 0, "msg": "Decryption failed" }
时间戳过期
{ "code": 0, "msg": "Timestamp expired" }
PHP 客户端加密代码参考
PHP
// 1. 加密 $encryptKey = hex2bin('你的64位加密密钥'); $iv = random_bytes(12); $plaintext = json_encode(['phone' => '13800138000', 'content' => '您的验证码是123456']); $tag = ''; $ciphertext = openssl_encrypt($plaintext, 'aes-256-gcm', $encryptKey, OPENSSL_RAW_DATA, $iv, $tag); // 2. 请求 $data = [ 'AppKey' => '你的AppKey', 'payload' => base64_encode($ciphertext), 'iv' => base64_encode($iv), 'tag' => base64_encode($tag), 'timestamp' => time() ]; $ch = curl_init('https://sms.1wnt.cn/api_v2/send.php'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); echo $result;