可靠性

错误码与重试

所有错误使用一致的 JSON 结构。客户端应同时判断 HTTP 状态和 error.code,不要依赖 message 文案编写业务逻辑。

错误响应格式

{
  "success": false,
  "error": {
    "code": "NO_FREE_PHONES",
    "message": "该线路暂时无号码,请稍后重试"
  }
}

常见错误

错误码HTTP处理建议
API_UNAUTHENTICATED401API Key 缺失、无效或已撤销。更新认证信息后再请求。
INSUFFICIENT_WALLET_BALANCE402可用余额不足。充值后使用新的业务请求重试。
VALIDATION_ERROR422参数格式不正确。检查 JSON、字段类型与 slug。
BAD_COUNTRY422国家代码无效。使用国家列表中的代码。
BAD_OPERATOR422线路代码无效。选择当前可用线路或 any。
NO_PRODUCT422服务代码无效。使用服务列表中的代码。
RATE_LIMITED429请求过于频繁。等待后使用退避策略重试。
NO_FREE_PHONES409当前组合没有可用号码。稍后重试或更换国家、线路。
ACTIVE_ORDER_EXISTS409已有订单处理中。先查询、完成或取消当前订单。
ORDER_NOT_FOUND404订单不存在或当前账户无权访问。
SMS_CODE_REQUIRED409尚未收到验证码,不能完成订单。
ORDER_NOT_CANCELABLE409订单当前状态不允许取消。
NUMBER_SERVICE_UNAVAILABLE502号码服务暂时不可用。稍后安全重试。

安全重试规则

  • 获取号码请求始终携带稳定且唯一的 Idempotency-Key。
  • 遇到 429 或 502 时使用指数退避,不要立即高频循环。
  • 请求超时后先用原幂等键重试,避免创建重复订单。
  • 遇到 409 先读取 error.code,再决定查询现有订单、切换组合或停止操作。