TextPulse

SMS ERROR CODE GUIDE

短信错误码大全:从接口响应到最终送达失败的系统排查方法

短信错误可能发生在API认证、请求参数、号码格式、模板审核、发送频率、通道路由、运营商网络或用户设备。专业系统不能只记录“发送失败”,而应保存错误层级、原始代码、统一分类和建议处理方式。

接口错误 认证、参数、权限和限流
内容错误 模板、签名、链接和规则
路由错误 国家、Sender ID和通道
终端错误 号码无效、设备离线或拒收

一、先区分错误发生在哪一层

HTTP错误和短信最终失败不是同一类问题。HTTP 401通常表示认证失败,HTTP 429可能表示请求过快;而API已成功接收后,仍可能在运营商阶段返回号码无效、设备不可达或内容拒绝。

API层鉴权、权限、参数、格式和限流。
平台层余额、模板、国家配置和通道路由。
运营商层号码状态、内容过滤、网络和当地规则。
设备层关机、无信号、存储或用户设置。

二、常见错误分类表

说明:下表使用通用错误名称帮助分类,不代表TextPulse或其他平台的固定编号。实际处理应以接口文档和原始错误码为准。
通用错误含义是否建议重试处理方向
AUTH_FAILED密钥错误、过期或权限不足检查密钥、环境和权限
INVALID_REQUEST字段缺失、格式错误修正请求结构和必填字段
INVALID_NUMBER号码格式、国家码或长度错误标准化为正确国际格式
TEMPLATE_REJECTED模板未批准或变量不符合规则检查模板和实际内容
RATE_LIMITED请求速度超过允许范围延迟后可以队列、退避和并发控制
INSUFFICIENT_BALANCE余额或信用额度不足充值后可以检查账户和费用告警
ROUTE_UNAVAILABLE目标国家或通道暂时不可用通常可以切换备用路由或稍后重试
CARRIER_REJECTED运营商拒绝内容、身份或流量视原因检查Sender ID、内容和当地规则
HANDSET_UNREACHABLE设备离线、无信号或暂不可达有限重试设置有效期和最大次数
MESSAGE_EXPIRED在有效期内未完成发送通常否判断业务是否仍有价值

三、哪些错误可以重试?

重试前必须判断错误是否具有临时性。网络超时、平台临时繁忙、限流和短暂路由不可用可以采用指数退避;号码无效、认证失败、模板拒绝和用户退订通常不应重试。

类别建议
永久错误立即停止,修正数据或配置后重新创建请求
临时错误有限次数、递增间隔并加入随机抖动
状态未知先使用幂等键或查询接口确认原请求状态
业务已过期即使技术上可重试,也应停止发送

验证码和预约提醒具有明确有效期。消息失去业务价值后继续重试,只会增加费用和用户困扰。

四、标准排查流程

  1. 确认错误发生在同步API响应还是异步状态回执。
  2. 保存HTTP状态、平台代码、运营商代码和原始描述。
  3. 用message ID和业务ID查找完整请求时间线。
  4. 检查号码国际格式、目标国家和运营商。
  5. 核对Sender ID、模板、变量、链接和短信分段。
  6. 按国家、通道和时间检查是否为批量异常。
  7. 只有确定为临时错误后才执行有限重试。

排查单条短信时要结合相同国家和模板的其他消息。如果同一时间大量失败,通常更可能是通道、运营商或配置问题;若只有单个号码失败,则优先检查号码和设备状态。

五、日志必须保存哪些信息?

{
  "request_id": "req_01J...",
  "business_id": "otp_login_001",
  "message_id": "msg_01J...",
  "country": "目标国家",
  "provider": "route_a",
  "http_status": 202,
  "provider_code": "原始错误码",
  "normalized_error": "RATE_LIMITED",
  "retryable": true,
  "attempt": 2,
  "occurred_at": "2026-07-16T06:50:00Z"
}

日志中不要保存完整API密钥和不必要的敏感信息。手机号应掩码展示,并限制原始数据访问权限。

六、错误监控和告警

错误率按国家、运营商和模板拆分
可重试率发现平台或路由临时异常
无效号码率评估号码数据质量
未知错误率推动补充映射和文档

告警应关注“相对于正常水平的变化”,而不是仅设置固定数量。低流量国家的少量失败也可能意味着100%异常;高流量业务则更适合使用比例和时间窗口。

七、常见错误处理误区

  • 不要把所有失败都自动重试。
  • 不要只保存中文描述而丢弃原始错误码。
  • 不要把API提交成功计为最终送达。
  • 不要使用同一错误策略处理OTP和营销短信。
  • 不要在未知状态下直接再次发送同一业务消息。
  • 不要忽略国家、运营商、模板和Sender ID维度。

常见问题

为什么同一个错误在不同平台代码不同?

各平台和运营商有自己的代码体系,企业应保留原始代码,并映射为内部统一错误分类。

所有5xx错误都可以无限重试吗?

不可以。应设置最大次数、退避间隔和消息有效期,并使用幂等机制避免重复发送。

错误描述为空时怎么排查?

结合HTTP状态、message ID、国家、通道、时间和相同批次表现查询,同时联系平台获取原始运营商结果。