短信发送
更新时间:2026-07-31 09:59:04
接口概述
接口说明
国际短信发送接口,支持单条 / 批量短信提交。用于向一个或多个海外及港澳台手机号提交短信发送请求。调用该接口后,平台会返回提交结果;短信最终是否送达用户,需要通过状态报告确认。
节点域名
| 节点 | 域名 |
|---|---|
| 上海节点 | intapi.tig253.com |
| 新加坡节点 | sg-intapi.tig253.com |
| 印尼节点 | id-api.tig253.com |
归属节点查询操作指引

💡 重要提示:请根据控制台账号归属节点,选择对应节点域名拼接接口地址
基本信息
-
接口地址:
https://节点域名/intsms/v2/sms/submit -
Content-Type:
application/json;charset=utf-8 -
请求方式:POST,请求体为 JSON 格式封装的字符串
-
编码格式:UTF-8
完整公共请求头、CheckSum 验签算法统一参考:API调用说明
接入指南
注意事项
-
单次调用最多支持 2000 个手机号,手机号之间用英文逗号间隔
-
手机号支持 6~20 位纯数字,国内号码无需添加区号或 + 号,直接填写 11 位手机号即可
-
短信内容长度限制为 3000 字符
-
服务端时间戳有效期为 5 分钟,即服务端接收到请求的时间与请求中的 CurTime 相差不能超过 5 分钟,超时返回 120504 错误码
-
建议每次请求都生成新的 Nonce 和 CheckSum,同时请确认发起请求的服务器与标准 UTC 时间同步
-
验签失败会返回 120001 错误码
-
若请求头携带 X-Custom-TraceId,会自动作为本次请求交易 id 使用
接口请求
请求体参数(Body)
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| productType | String | 是 | 短信类型:notify(验证码)、marketing(营销)等 |
| message | String | 是 | 短信内容,长度≤3000 字符 |
| phoneNumbers | String | 是 | 接收手机号,支持带国家码,多个用英文逗号分隔 |
| sender | String | 否 | 接入号 / SenderId,长度≤20 |
| uid | String | 否 | 业务方流水号/交易id,长度≤128 |
| callBackUrl | String | 否 | 短信状态报告异步回调地址 |
| tdFlag | Integer | 否 | 退订标识:1 = 开启,0 或 null = 关闭 |
| validityPeriod | String | 否 | 短信过期时间,相对格式:[+-]YYMMDDhhmm |
请求示例
POST /intsms/v2/sms/submit HTTP/1.1
Host: api.xxx.com
Content-Type: application/json;charset=utf-8
AppID: APP_xxxx
Nonce: a8f3d92cb1
CurTime: 1748419200
CheckSum: A1B2C3D4E5F67890
X-Custom-TraceId: trace_2026052912514
{
"productType": "notify",
"message": "Your verification code is 123456",
"phoneNumbers": "+8613800138000,+8613800138001",
"sender": "Brand",
"callBackUrl": "https://yourdomain.com/cb",
"validityPeriod": "+000000050000000R"
}接口响应
响应头(Header)
| 名称 | 类型 | 描述 |
|---|---|---|
| Content-Type | String | 响应体数据类型 |
| X-Timestamp | String | 创蓝服务器接收请求的时间,毫秒级 UTC |
| X-Custom-TraceId | String | 请求头中的自定义追踪 ID |
响应体参数(Body)
| 名称 | 类型 | 是否返回 | 描述 |
|---|---|---|---|
| code | String | 是 | 6 位状态码,000000 表示成功 |
| msg | String | 是 | 提示信息,成功时固定为 success |
| requestId | String | 否 | 请求id,提交成功时返回 |
| data | Object | 否 | 业务返回数据,请求失败时不返回 |
| - messageId | String | - | 单发:单条消息 ID;批量:批量消息 ID |
| - errorPhone | Array<String> | - | 仅批量发送返回,提交失败的手机号列表 |
响应示例
单条发送成功
{
"code": "000000",
"msg": "success",
"requestId": "20260527150000xxxx",
"data": {
"messageId": "754398108056510464"
}
}批量发送成功(含失败号码)
{
"code": "000000",
"msg": "success",
"requestId": "20260527150000xxxx",
"data": {
"messageId": "BATCH-20260424160000",
"errorPhone": [
"+8613800138999"
]
}
}调用失败
{
"code": "120001",
"message": "signature verification failed"
}{
"code": "120504",
"msg": "signature expired"
}错误码说明
通用状态码
| code | 说明 | HTTP 触发场景 |
|---|---|---|
| 000000 | 成功 | 请求成功 |
| 190001 | 请求失败 | 服务端处理失败 |
| 190002 | 非法状态 | 资源状态不允许执行该操作 |
| 190003 | 回调失败 | 状态报告 / 上行回调失败 |
| 190004 | 参数错误 | Body 必填项缺失或格式错误 |
| 190403 | 没有权限 | 通用权限不足 |
| 190500 | 服务器未捕获异常 | 服务端异常,请稍后重试或联系客服 |
| 190504 | 请求超时 | 服务端处理超时 |
认证状态码
| code | 说明 |
|---|---|
| 120001 | 验签失败 |
| 120301 | 消息头缺少 AppID 或 AppID 不存在 |
| 120302 | 消息头参数缺失(Nonce / CurTime / CheckSum),或 CurTime 格式错误 |
| 120401 | 无效 Token |
| 120403 | 应用分配的权限不足 |
| 120504 | 签名过期(与服务器时差 > 5min) |
短信业务码
| code | 说明 | 排查建议 |
|---|---|---|
| 202101 | 账号不存在 | 检查 AppID 是否正确、账号是否分配 |
| 202102 | 密码错误 | 联系客服确认账号密码 |
| 202106 | 短信内容长度超过 3000 字符 | 缩短 message 内容 |
| 202108 | 手机号码格式错误 | 检查手机号码有效性 |
| 202112 | 产品配置错误 | 联系客服人员 |
| 202114 | 客户端 IP 不在白名单 | 在控制台配置发送 IP 白名单 |
| 202115 | 没有开通短信权限 | 联系客服开通对应短信业务权限 |
| 202116 | 账号已删除或禁用 | 联系客服恢复账号 |
附录
Java 签名生成工具类
import org.apache.commons.codec.digest.DigestUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class UnifiedSmsSignUtils {
/**
* 生成完整的请求头签名信息
* @param appSecret 应用密钥(控制台获取)
* @return 包含所有请求头参数的Map
*/
public static Map<String, String> generateRequestHeaders(String appSecret) {
String nonce = UUID.randomUUID().toString().replace("-", "");
String curTime = String.valueOf(System.currentTimeMillis() / 1000); // 秒级时间戳
String checkSum = DigestUtils.sha1Hex(appSecret + nonce + curTime).toUpperCase(); // 大写
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json;charset=utf-8");
headers.put("AppID", "你的AppID");
headers.put("Nonce", nonce);
headers.put("CurTime", curTime);
headers.put("CheckSum", checkSum);
return headers;
}
}这篇文档对您有帮助吗?




