API文档

基础地址
https://api.yimatongsms.com

创建订单

GET /api/order/createOrder

请求参数

参数 类型 必填 备注
secretKey str API密钥
smsCountryId int 国家服务 ID(smsCountryId,来自目录)
buyNum int 购买数量(必填)。不得低于所选商品在目录中展示的最小购买数量(通常为 1;部分商品可能有更高下限)。

响应

参数 类型 备注
code int 响应代号:0=成功(含 queryOrder 处理中);400=业务失败;401=仅 createOrder 密钥无效;404=不存在;429=限流;500=系统错误
message str 消息提示
data.apiOrderId str 订单号
成功示例
{
  "code": 0,
  "message": "创建成功",
  "data": { "apiOrderId": "f7f145f39f9d4f67a4f2cfdf1fd8e721" }
}
失败示例
{
  "code": 401,
  "message": "密钥无效或缺失",
  "data": null
}
更多示例: createOrder — 处理中(仍 code=0)
{
  "code": 0,
  "message": "处理中,请稍后查询",
  "data": { "apiOrderId": "f7f145f39f9d4f67a4f2cfdf1fd8e721" }
}
更多示例: createOrder — 401 密钥无效
{
  "code": 401,
  "message": "密钥无效或缺失",
  "data": null
}
更多示例: createOrder — 404 国家服务无效
{
  "code": 404,
  "message": "国家服务不存在或已停用",
  "data": null
}
更多示例: createOrder — 400 余额不足
{
  "code": 400,
  "message": "余额不足",
  "data": null
}
更多示例: createOrder — 500 创建失败
{
  "code": 500,
  "message": "创建失败",
  "data": { "apiOrderId": "f7f145f39f9d4f67a4f2cfdf1fd8e721" }
}

查询订单

GET /api/order/queryOrder

请求参数

参数 类型 必填 备注
apiOrderId str 订单号

响应

参数 类型 备注
code int 响应代号:0=成功(含 queryOrder 处理中);400=业务失败;401=仅 createOrder 密钥无效;404=不存在;429=限流;500=系统错误
message str 消息提示
data.apiOrderId str 订单号
data.contents json(list) 固定 contents 列表结构,每个元素是一行订单内容

data 列表项字段

参数 类型 备注
data.contents[].contentId string 内容行 ID,用作 resolveNumber 的 contentId 参数
data.contents[].type int 1=文本行,2=含 getdata 链接
data.contents[].content string 行内容字符串
data.contents[].expiresAt string 号码建议在此时间前完成取码(ISO-8601 本地时间,如 2026-05-28T15:04:00)。过期后可能无法继续获取验证码。
成功示例
{
  "code": 0,
  "message": "查询成功",
  "data": {
    "apiOrderId": "f7f145f39f9d4f67a4f2cfdf1fd8e721",
    "contents": [
      { "contentId": "806779395c1640c882e65aaf1aba21d9", "type": 2, "content": "13800138000----/api/order/getdata?contentId=806779395c1640c882e65aaf1aba21d9", "expiresAt": "2026-05-28T15:04:00" },
      { "contentId": "a1b2c3d4e5f6", "type": 2, "content": "13900139000----/api/order/getdata?contentId=a1b2c3d4e5f6", "expiresAt": "2026-05-28T15:08:00" }
    ]
  }
}
失败示例
{
  "code": 404,
  "message": "订单不存在或无权限",
  "data": { "apiOrderId": "not-exists-order-id" }
}
更多示例: queryOrder — 处理中(code=0)
{
  "code": 0,
  "message": "处理中,请稍后查询",
  "data": { "apiOrderId": "f7f145f39f9d4f67a4f2cfdf1fd8e721", "contents": [] }
}
更多示例: queryOrder — 404 订单不存在
{
  "code": 404,
  "message": "订单不存在或无权限",
  "data": { "apiOrderId": "not-exists-order-id" }
}

释放号码

GET /api/order/resolveNumber

主动释放订单内号码(无需 secretKey)。GET BASEURL + /api/order/resolveNumber?apiOrderId=...;可选 contentId(queryOrder 返回的 contents[].contentId)仅释放该行,省略则尝试释放该订单所有未释放且未收短信的号码。已收短信的号码无法释放;释放成功 message 含退款说明;失败 code=400 可重试;不支持的订单类型亦返回 400。

请求参数

参数 类型 必填 备注
apiOrderId str 订单号
contentId str 可选 可选。queryOrder 返回的 data.contents[].contentId;指定则仅释放该行号码

响应

参数 类型 备注
code int 响应代号:0=成功(含 queryOrder 处理中);400=业务失败;401=仅 createOrder 密钥无效;404=不存在;429=限流;500=系统错误
message str 消息提示
data.apiOrderId str 订单号
成功示例
{
  "code": 0,
  "message": "已释放,退 0.050 USD",
  "data": { "apiOrderId": "f7f145f39f9d4f67a4f2cfdf1fd8e721" }
}
失败示例
{
  "code": 400,
  "message": "号码已收到短信,无法释放",
  "data": { "apiOrderId": "f7f145f39f9d4f67a4f2cfdf1fd8e721" }
}
更多示例: resolveNumber — 400 已收短信
{
  "code": 400,
  "message": "号码已收到短信,无法释放",
  "data": { "apiOrderId": "f7f145f39f9d4f67a4f2cfdf1fd8e721" }
}
更多示例: resolveNumber — 404 订单不存在
{
  "code": 404,
  "message": "订单不存在或无权限",
  "data": { "apiOrderId": "not-exists-order-id" }
}

获取数据

GET /api/order/getdata

用法:先调用 /queryOrder。当 data.contents 中某项 type=2 且 content 含 /api/order/getdata?contentId=... 时,访问 BASEURL + /api/order/getdata?contentId=... 返回:纯文本。

请求参数

参数 类型 必填 备注
contentId str 从 /api/order/getdata?contentId=... 中提取 contentId

响应

HTTP 状态 响应体示例 含义
200 123456 成功,正文为纯文本内容(如短信验证码)
400 invalid contentId contentId 无效
404 not found 内容不存在或无权限
429 Too Many Requests 请求过频
502 fetch error 内容获取失败
成功示例
123456
失败示例
not found
更多示例: getdata — 429 限流
Too Many Requests

常见问题(FAQ)

Q1. queryOrder 的 data 结构是什么?

data 是对象,包含 apiOrderId 与 contents。每条 content 含 contentId、type、content;短信验证码类订单还会返回 expiresAt。contentId 可作为 resolveNumber 的可选参数。

Q2. 如何访问 getdata 内容?

当 type=2 时,从 content 提取 contentId,再请求 /api/order/getdata?contentId=...(纯文本响应)。

Q3. getdata 返回的是什么格式?

getdata 返回纯文本,不包裹 JSON 外壳。

Q4. createOrder 会返回 code=202 吗?

不会。createOrder 与 queryOrder 处理中均返回 code=0;请用 message(如「处理中,请稍后查询」)及 contents 是否为空判断,并轮询 queryOrder。

Q5. 余额与扣费单位是什么?

账户余额、单价与订单金额均为 USD(最多 3 位小数)。API message 中的退款金额也以 USD 表示,例如「已释放,退 0.050 USD」。