接收短信
获取短信、来电显示或语音结果;HTTP 202 表示仍在等待。
此请求可能修改订单或产生费用。 示例不会自动重试。即使使用 GET,读取新收到的短信也可能触发计费。
身份验证
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
apikey | header | string | 是 | 你的 API 密钥 |
partnerkey | header | string | 否 | 可选推荐合作方密钥,仅在成功接收短信时使用。 |
参数
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
orderid | path | integer | 是 | 申请号码时返回的订单 ID |
无需请求体。
使用说明
使用申请号码时返回的 orderId,也可从当前订单获取。本接口同时返回短信、来电显示和语音结果;类型已在下单时通过 voice=0、voice=1 或 voice=2 选定,这里无需再次传入 voice。
供应商的 text 原样放入 data.sms.code,sms 原样放入 data.sms.fullText。因此,code 不一定是纯数字验证码。
HTTP 202,且 statusCode=202、error.type=SMS_NOT_YET_RECEIVED 时,表示结果仍在等待中。应先识别这一状态,再处理一般错误;稍后再查,且不要超过订单期限。三种消息类型都适用,详见轮询指南。
请求示例
运行环境及配置. cURL 使用 POSIX shell。JavaScript 示例也可用于 Node.js TypeScript 项目。Java 使用标准 HTTP 客户端并输出原始 JSON;请使用应用的 JSON 库读取响应字段。
SMSPVA_ORDER_ID:orderid(必填).
: "${SMSPVA_API_KEY:?Set SMSPVA_API_KEY}"
: "${SMSPVA_ORDER_ID:?Set SMSPVA_ORDER_ID to your orderid}"
curl --fail-with-body --max-time 30 --request GET \
--url "https://api.smspva.com/activation/sms/${SMSPVA_ORDER_ID}" \
--header "apikey: $SMSPVA_API_KEY"响应
下方示例用于说明响应格式。价格、余量和账户数据仅为示例,实际数值请以 API 响应为准。
| HTTP | 说明 |
|---|---|
| 200 | 操作成功 |
| 202 | 结果仍在等待中。短信、语音及来电显示均使用 SMS_NOT_YET_RECEIVED 和 Waiting for SMS 表示等待。 |
| 405 | 参数不正确 |
| 406 | 订单 ID 格式不正确或未找到。 |
| 407 | 已收到短信,但余额不足以支付。 |
| 410 | 订单已关闭,不可继续使用。 |
| 411 | karma 过低或请求过于频繁,API 访问受限。 |
| 500 | 未能获取短信。 |
| 501 | 服务器未能处理请求。 |
| 503 | 服务器负载过高,请稍后再试。 |
HTTP 200
操作成功
SMS (voice=0)
{
"statusCode": 200,
"data": {
"sms": {
"code": "123456",
"fullText": "Your verification code is 123456"
},
"orderId": 123456,
"orderExpireIn": 420
}
}语音(voice=2)
语音结果示例:fullText 包含文本和录音链接,格式为 VOICE: ...; The file: ...。
code 的内容取决于供应商,目前格式未确认,不保证为数字验证码。
{
"statusCode": 200,
"data": {
"sms": {
"code": "<provider text value>",
"fullText": "VOICE: Your code is 123456; The file: https://link.smspva.com/EXAMPLE_RECORD_ID"
},
"orderId": 123456,
"orderExpireIn": 420
}
}语音:仅链接(voice=2)
可能的格式:fullText 仅包含录音链接。此形式尚未确认,请勿依赖固定文本格式。
code 是占位示例,实际为供应商 text 字段的原始值。
{
"statusCode": 200,
"data": {
"sms": {
"code": "<provider text value>",
"fullText": "https://link.smspva.com/EXAMPLE_RECORD_ID"
},
"orderId": 123456,
"orderExpireIn": 420
}
}来电显示(voice=1)
JSON 结构与短信相同。字段内容为占位示例,来电显示的准确格式尚未确认。
供应商可能在 code 中返回验证码或来电号码,在 fullText 中返回消息。不要假定 code 一定为验证码。
{
"statusCode": 200,
"data": {
"sms": {
"code": "<provider text: code or caller number>",
"fullText": "<provider sms: caller-ID message>"
},
"orderId": 123456,
"orderExpireIn": 420
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
data | object | 响应数据 |
data.sms | object | 收到的短信内容 |
data.sms.code | string | 供应商 text 字段的原始内容,取决于消息类型和供应商,不一定是验证码。 |
data.sms.fullText | string | 供应商 sms 字段的原始内容,可能是短信、语音文本和录音链接、单独录音链接或来电显示信息。 |
data.orderId | integer | 订单 ID |
data.orderExpireIn | integer | 距订单到期的秒数 |
HTTP 202
结果仍在等待中。短信、语音及来电显示均使用 SMS_NOT_YET_RECEIVED 和 Waiting for SMS 表示等待。
响应示例
{
"statusCode": 202,
"error": {
"type": "SMS_NOT_YET_RECEIVED",
"description": "Waiting for SMS"
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
error | object | 错误详情 |
error.type | string | |
error.description | string |
HTTP 405
参数不正确
响应示例
{
"statusCode": 405,
"error": {
"type": "INVALID_PARAMS",
"description": "Invalid params, please re-check the specified data."
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
error | object | 错误详情 |
error.type | string | |
error.description | string |
HTTP 406
订单 ID 格式不正确或未找到。
响应示例
{
"statusCode": 406,
"error": {
"type": "INVALID_ORDER_FORMAT",
"description": "Order should be integer."
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
error | object | 错误详情 |
error.type | string | |
error.description | string |
HTTP 407
已收到短信,但余额不足以支付。
响应示例
{
"statusCode": 407,
"error": {
"type": "LOW_BALANCE",
"description": "Low balance"
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
error | object | 错误详情 |
error.type | string | |
error.description | string |
HTTP 410
订单已关闭,不可继续使用。
响应示例
{
"statusCode": 410,
"error": {
"type": "ORDER_CLOSED",
"description": "Order closed and unavailable"
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
error | object | 错误详情 |
error.type | string | |
error.description | string |
HTTP 411
karma 过低或请求过于频繁,API 访问受限。
响应示例
{
"statusCode": 411,
"error": {
"type": "ACCESS_LIMITED",
"description": "Access is temporary limited"
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
error | object | 错误详情 |
error.type | string | |
error.description | string |
HTTP 500
未能获取短信。
响应示例
{
"statusCode": 500,
"error": {
"type": "SMS_FETCH_FAIL",
"description": "Failed to fetch SMS."
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
error | object | 错误详情 |
error.type | string | 错误类型 |
error.description | string | 错误说明 |
HTTP 501
服务器未能处理请求。
响应示例
{
"statusCode": 501,
"error": {
"type": "SERVER_FAIL",
"description": "Server failed to process request"
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
error | object | 错误详情 |
error.type | string | |
error.description | string |
HTTP 503
服务器负载过高,请稍后再试。
响应示例
{
"statusCode": 503,
"error": {
"type": "SERVER_BUSY",
"description": "Server overload, try later."
}
}响应字段
| 名称 | 类型 | 说明 |
|---|---|---|
statusCode | integer | 结果状态码 |
error | object | 错误详情 |
error.type | string | 错误类型 |
error.description | string | 错误说明 |
相关指南
修改订单的请求发生网络故障时,先检查订单状态,再决定是否重试。