API 文档
Open API v4:统一 REST 接口,覆盖社媒营销、出海商城、短信接码与商品页。
如需获取 APIKEY,请前往 账号设置 → API 密钥 进行生成。
1. 连接方式
| Base URL | |
| 鉴权 | Authorization: Bearer YOUR_API_KEY或 X-Api-Key: YOUR_API_KEY |
| Content-Type | application/json(有请求体时) |
| 响应格式 | 统一 JSON envelope(见下方) |
同一账号两次生成间隔为 20 分钟;密钥仅生成时完整显示一次,请立即保存。
请求头使用
Authorization: Bearer YOUR_API_KEY 或 X-Api-Key。ok=true 且业务数据在 data;失败时 ok=false,错误在 error.code / error.message,并带 request_id。成功响应
{
"ok": true,
"data": { },
"error": null,
"request_id": "a1b2c3d4e5f60708"
}失败响应
{
"ok": false,
"data": null,
"error": { "code": "insufficient_balance", "message": "余额不足" },
"request_id": "a1b2c3d4e5f60708"
}2. 接口一览
先看有哪些接口、各自做什么;详细参数与样例见第 3 节。
公共
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /open/v4/balance 详情 → |
查询可用余额(含现金 / 赠送分项) |
| GET | /open/v4/products 详情 → |
列出可用产品线及对应 base path |
社媒营销
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /open/v4/smm/services 详情 → |
获取可见社媒服务列表(含 type、order_fields 下单字段定义) |
| POST | /open/v4/smm/orders 详情 → |
创建社媒订单并扣费(字段随服务 type 变化,见详情) |
| GET | /open/v4/smm/orders/{id} 详情 → |
查询单个订单状态(display_id) |
| GET | /open/v4/smm/orders?ids= 详情 → |
批量查询订单状态(逗号分隔多个 id) |
| POST | /open/v4/smm/orders/{id}/refill 详情 → |
申请补单(创建补单工单) |
| POST | /open/v4/smm/orders/{id}/cancel 详情 → |
申请取消(创建取消工单) |
出海商城
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /open/v4/mall/catalog 详情 → |
获取出海商城商品目录 |
| GET | /open/v4/mall/catalog-revision 详情 → |
获取目录修订号(用于缓存失效判断) |
| POST | /open/v4/mall/stock 详情 → |
查询指定商品实时库存 |
| POST | /open/v4/mall/orders 详情 → |
下单购买出海商城商品 |
| GET | /open/v4/mall/orders/{id} 详情 → |
查询商城订单 |
| POST | /open/v4/mall/orders/{id}/refresh 详情 → |
刷新订单交付信息(卡密 / 链接等) |
短信接码
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /open/v4/sms/categories 详情 → |
获取短信应用分类 |
| GET | /open/v4/sms/apps 详情 → |
获取可购买应用列表(含零售价) |
| POST | /open/v4/sms/prefixes 详情 → |
查询可用号码前缀 |
| POST | /open/v4/sms/orders 详情 → |
购买接码号码 |
| GET | /open/v4/sms/orders 详情 → |
我的短信订单列表 |
| GET | /open/v4/sms/orders/{id} 详情 → |
短信订单详情(含号码) |
| GET | /open/v4/sms/numbers 详情 → |
我的号码列表 |
| GET | /open/v4/sms/numbers/{id} 详情 → |
单个号码详情 |
| POST | /open/v4/sms/numbers/{id}/refresh 详情 → |
刷新收码(拉取最新短信) |
| POST | /open/v4/sms/numbers/renew 详情 → |
号码续费 |
商品页
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /open/v4/custom/pages 详情 → |
获取商品页与 SKU 列表(含零售价) |
| POST | /open/v4/custom/orders 详情 → |
提交商品页订单并扣费 |
| GET | /open/v4/custom/orders 详情 → |
我的商品页提交记录 |
| GET | /open/v4/custom/orders/{id} 详情 → |
单条提交详情 |
3. 接口详情
下列样例中的业务字段均位于响应的 data 内;外层仍为统一 envelope。
GET /open/v4/balance
查询当前账号可用余额。
请求参数
无(仅需鉴权头)。
返回字段(data)
| 字段 | 说明 |
|---|---|
| balance | 可用总额(现金 + 赠送) |
| cash_balance | 现金余额 |
| gift_balance | 赠送余额 |
| currency | 货币代码,如 CNY |
响应样例
{
"ok": true,
"data": {
"balance": "100.8429",
"cash_balance": "80.0000",
"gift_balance": "20.8429",
"currency": "CNY"
},
"error": null,
"request_id": "..."
}curl 示例
GET /open/v4/products
列出本站 Open API 支持的产品线。
请求参数
无。
返回字段(data)
| 字段 | 说明 |
|---|---|
| products | 数组;每项含 id / name / base_path |
响应样例
{
"ok": true,
"data": {
"products": [
{ "id": "smm", "name": "社媒营销", "base_path": "/open/v4/smm" },
{ "id": "mall", "name": "出海商城", "base_path": "/open/v4/mall" },
{ "id": "sms", "name": "短信接码", "base_path": "/open/v4/sms" },
{ "id": "custom", "name": "商品页", "base_path": "/open/v4/custom" }
]
}
}GET /open/v4/smm/services
获取当前用户可见的社媒服务列表(零售价与站点展示一致)。每条服务含 type 与 order_fields:下单前请先读此接口,按 order_fields 组装请求体(与前台购买表单同一套规则)。
请求参数
无。
返回字段(data.services[])
| 字段 | 说明 |
|---|---|
| service | 服务 ID(下单时使用) |
| name / category | 名称、分类 |
| type | 服务类型(展示名,可能已本地化) |
| type_original | 上游原始类型(用于匹配字段规则,优先使用) |
| rate | 零售单价 |
| min / max | 数量上下限 |
| refill / cancel | 是否支持补单 / 取消申请 |
| order_fields | 下单字段定义数组(必看):每项含 key / type / label / required / optional / options / show_when 等,与前台动态表单一致 |
| completion_speed_minutes 等 | 速度 / 增速指标(有数据时返回) |
order_fields[] 单字段结构
| 字段 | 说明 |
|---|---|
| key | 请求 Body 中的参数名,如 link、comments、username |
| type | text / url / number / textarea / select |
| label | 字段标签 |
| required | 是否必填 |
| optional | 是否可选(与 required 相对) |
| min / max | 数值范围(quantity 等) |
| options | 下拉选项(如 device、type_of_traffic) |
| show_when | 条件显隐,如 {"field":"type_of_traffic","value":"1"} 时才需要 google_keyword |
| help / placeholder | 提示文案 |
响应样例(Default)
{
"ok": true,
"data": {
"services": [
{
"service": "11",
"name": "Instagram Followers HQ",
"type": "Default",
"type_original": "Default",
"category": "Instagram",
"rate": "8.5000",
"min": "10",
"max": "10000",
"refill": true,
"cancel": true,
"order_fields": [
{ "key": "link", "type": "url", "label": "链接", "required": true },
{ "key": "quantity", "type": "number", "label": "数量", "required": true, "min": 10, "max": 10000 },
{ "key": "runs", "type": "number", "label": "运行次数", "optional": true },
{ "key": "interval", "type": "number", "label": "间隔分钟", "optional": true }
]
}
]
}
}响应样例片段(Custom Comments)
{
"service": "22",
"name": "Custom Comments",
"type": "Custom Comments",
"type_original": "Custom Comments",
"order_fields": [
{ "key": "link", "type": "url", "label": "链接", "required": true },
{ "key": "comments", "type": "textarea", "label": "评论内容", "required": true, "help": "每行一条评论,数量需与评论条数匹配" },
{ "key": "quantity", "type": "number", "label": "数量", "required": true }
]
}POST /open/v4/smm/orders
创建社媒订单并扣减余额。必填字段随服务类型(type / type_original)变化,请勿写死一套 Body。正确做法:先调 GET /smm/services,取目标服务的 order_fields,只提交其中出现的字段;required=true 的必须提供。
order_fields[].key 为准动态组包,与网站前台一致,可自动适配 Default / Custom Comments / Mentions / Hashtags / SEO / Poll / Subscriptions / Web Traffic 等类型。
公共字段
| 字段 | 必填 | 说明 |
|---|---|---|
| service | 是 | Service ID(来自 GET /open/v4/smm/services 返回的 service) |
按服务类型(type)字段对照
匹配规则与系统一致:对 type_original(或 type)做不区分大小写包含判断。下表「必填」列以外的字段不要传或按 order_fields 可选传。
| 类型(示例) | 必填字段 | 可选 / 条件字段 |
|---|---|---|
Default(默认) |
link、quantity |
runs、interval |
名称含 Comment如 Custom Comments |
link、comments、quantity |
comments:每行一条评论;条数通常需与 quantity 匹配 |
含 Mention / Username / DM |
link、username、quantity |
— |
含 Hashtag |
link、username、hashtags、quantity |
hashtags:每行一个标签 |
含 SEO |
link、keywords、quantity |
keywords:每行一个关键词 |
含 Poll |
link、answer_number、quantity |
投票选项编号 |
含 Subscription如 Subscriptions |
username、min、max |
posts、delay、expiry;计费数量取 max(无 link/quantity) |
含 Web Traffic |
link、quantity、country、device、type_of_traffic |
runs、interval;type_of_traffic=1 时必填 google_keyword;=2 时必填 referring_url;device:1 Desktop / 2 Android / 3 iOS / 4 Mixed Mobile / 5 Mixed All;type_of_traffic:1 Google Keyword / 2 Custom Referrer / 3 Blank Referrer
|
全部可能出现的 Body 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| service | string | 服务 ID |
| link | string | 目标链接 |
| quantity | number | 数量 |
| runs | number | 运行次数(可选) |
| interval | number | 间隔分钟(可选) |
| comments | string | 评论内容,多行用 \n 分隔 |
| username | string | 用户名 |
| keywords | string | 关键词,多行 |
| hashtags | string | 话题标签,多行 |
| answer_number | string | 投票选项编号 |
| min / max | number | 订阅最小 / 最大数量 |
| posts / delay | number | 订阅发帖数 / 延迟分钟 |
| expiry | string | 订阅到期日,如 2026-12-31 |
| country | string | 国家/地区(Web Traffic) |
| device | number | 设备类型 1–5 |
| type_of_traffic | number | 流量来源 1–3 |
| google_keyword | string | type_of_traffic=1 时 |
| referring_url | string | type_of_traffic=2 时 |
返回字段(data)
| 字段 | 说明 |
|---|---|
| order_id | 公开订单号(display_id) |
| charge | 扣费金额 |
| currency | 货币 |
| status | 初始状态 |
响应样例
{
"ok": true,
"data": {
"order_id": "b76VJizQKZ",
"charge": "0.8500",
"currency": "CNY",
"status": "Pending"
}
}请求样例 — Default
{
"service": "11",
"link": "https://instagram.com/p/xxx",
"quantity": 100
}请求样例 — Custom Comments
{
"service": "22",
"link": "https://instagram.com/p/xxx",
"quantity": 3,
"comments": "Great post!\nNice shot!\nLove this"
}请求样例 — Mentions / Username
{
"service": "33",
"link": "https://instagram.com/p/xxx",
"quantity": 50,
"username": "target_user"
}请求样例 — Subscriptions
{
"service": "44",
"username": "target_user",
"min": 10,
"max": 100,
"posts": 5,
"delay": 0,
"expiry": "2026-12-31"
}请求样例 — Web Traffic
{
"service": "55",
"link": "https://example.com/landing",
"quantity": 1000,
"country": "US",
"device": 1,
"type_of_traffic": 1,
"google_keyword": "best tools"
}GET /open/v4/smm/orders/{id}
按公开订单号查询单个社媒订单(会尝试刷新上游状态)。
路径参数
| 字段 | 说明 |
|---|---|
| id | Order ID(仅支持随机单号,如 b76VJizQKZ) |
返回字段(data)
| 字段 | 说明 |
|---|---|
| order_id | 公开订单号 |
| charge / currency | 费用与货币 |
| status | 订单状态 |
| start_count / remains | 起始计数 / 剩余 |
| link / quantity / service | 链接、数量、服务 ID |
响应样例
{
"ok": true,
"data": {
"order_id": "b76VJizQKZ",
"charge": "0.2782",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "CNY"
}
}GET /open/v4/smm/orders?ids=
批量查询订单状态。
Query 参数
| 字段 | 必填 | 说明 |
|---|---|---|
| ids | 是 | Order IDs separated by comma(仅支持随机单号;up to 100 IDs) |
返回字段(data)
| 字段 | 说明 |
|---|---|
| orders | 以订单号为 key 的对象;不存在时该项为 error |
响应样例
{
"ok": true,
"data": {
"orders": {
"b76VJizQKZ": {
"order_id": "b76VJizQKZ",
"charge": "0.2782",
"status": "Partial",
"remains": "157",
"currency": "CNY"
},
"a1B2c3D4e5": {
"error": { "code": "not_found", "message": "Incorrect order ID" }
}
}
}
}POST /open/v4/smm/orders/{id}/refill
对已完成订单申请补单。
返回
data.refill: true 表示“已受理并创建工单”。路径参数
| 字段 | 说明 |
|---|---|
| id | Order ID(仅支持随机单号) |
返回字段(data)
| 字段 | 说明 |
|---|---|
| refill | true 表示工单已创建 |
{ "ok": true, "data": { "refill": true } }POST /open/v4/smm/orders/{id}/cancel
对进行中订单申请取消。
返回
data.cancel: true 表示“已受理并创建工单”,并非直接代表货源已取消成功。路径参数
| 字段 | 说明 |
|---|---|
| id | 公开订单号 |
返回字段(data)
| 字段 | 说明 |
|---|---|
| cancel | true 表示工单已创建 |
{ "ok": true, "data": { "cancel": true } }GET /open/v4/mall/catalog
获取出海商城商品目录(零售价已按当前用户 / 站点计算)。
请求参数
无。
返回字段(data)
| 字段 | 说明 |
|---|---|
| items | 商品数组(含 supplier_id、shared_code、零售价、规格等) |
| mall_catalog_revision | 目录修订号 |
| category_sort | 分类排序映射 |
GET /open/v4/mall/catalog-revision
仅返回目录修订号,便于客户端判断是否需要重新拉取 catalog。
返回字段(data)
| 字段 | 说明 |
|---|---|
| mall_catalog_revision | 修订号 |
POST /open/v4/mall/stock
查询指定商品实时库存。
请求 Body
| 字段 | 必填 | 说明 |
|---|---|---|
| supplier_id | 是 | 货源 ID |
| shared_code | 是 | 商品编码 |
| race | 否 | 规格 / 线路 |
| sku | 否 | SKU 键值对象 |
返回字段(data)
| 字段 | 说明 |
|---|---|
| stock | 库存数量 |
| source | 库存来源说明 |
| supplier_id / shared_code / race / sku | 回显查询条件 |
POST /open/v4/mall/orders
购买出海商城商品并扣费。
请求 Body
| 字段 | 必填 | 说明 |
|---|---|---|
| supplier_id | 是 | 货源 ID |
| shared_code | 是 | 商品编码 |
| num | 是 | 购买数量(1~99999) |
| race | 否 | 规格 / 线路 |
| sku | 否 | SKU 键值对象 |
返回
data 为下单结果(含本地订单号、费用、余额等,字段与站内下单一致)。
GET /open/v4/mall/orders/{id}
查询出海商城订单。
路径参数
| 字段 | 说明 |
|---|---|
| id | 公开订单号 display_id(或内部数字 id) |
返回字段(data)
| 字段 | 说明 |
|---|---|
| order_id | 公开订单号 |
| status / charge / currency | 状态与费用 |
| service_name / quantity | 商品名与数量 |
| original_order_id | 上游交易号(如有) |
| created_at | 创建时间 |
POST /open/v4/mall/orders/{id}/refresh
从上游刷新商城订单交付信息(卡密、链接等)。
路径参数
| 字段 | 说明 |
|---|---|
| id | 公开订单号 |
请求 Body(可选)
| 字段 | 说明 |
|---|---|
| original_order_id / trade_no / tradeNo | 可选手动指定上游单号 |
返回字段(data)
| 字段 | 说明 |
|---|---|
| secret / url / status | 交付内容与状态 |
| original_order_id | 上游交易号 |
GET /open/v4/sms/categories
获取短信接码应用分类列表。
请求参数
无(或按货源站点默认)。
GET /open/v4/sms/apps
获取可购买应用及零售价。
Query 参数
| 字段 | 必填 | 说明 |
|---|---|---|
| supplier_id | 否 | 指定货源;缺省自动选择 |
| cate_id | 否 | 分类 ID |
| type | 否 | 卡类型,默认 1 |
| name | 否 | 按名称筛选 |
返回字段(data)
| 字段 | 说明 |
|---|---|
| apps | 应用数组(含 id、价格、库存等) |
| supplier_id / currency | 货源与货币 |
POST /open/v4/sms/prefixes
查询号码前缀(购买前可选)。
请求 Body
与站内「前缀查询」一致(含 supplier_id、app 相关字段等)。
POST /open/v4/sms/orders
购买接码号码并扣费。
请求 Body
| 字段 | 必填 | 说明 |
|---|---|---|
| app_id | 是 | 应用 ID |
| num | 是 | 购买数量(1~500) |
| type | 否 | 卡类型,默认 1 |
| expiry | 否 | 有效期类型 |
| supplier_id | 否 | 指定货源 |
| prefix / exclude_prefix | 否 | 前缀包含 / 排除 |
| cate_id / cate_name / app_name | 否 | 展示用快照字段 |
返回
data 含订单与号码信息(与站内购买成功响应一致)。
GET /open/v4/sms/orders
分页列出我的短信订单。
Query 参数
| 字段 | 说明 |
|---|---|
| page | 页码,默认 1 |
| limit | 每页条数,默认 20,最大 100 |
GET /open/v4/sms/orders/{id}
订单详情,含号码列表。支持 display_id 或内部数字 id。
返回字段(data)
| 字段 | 说明 |
|---|---|
| order | 订单对象 |
| numbers | 号码数组 |
| url_list | 上游域名列表(如有) |
GET /open/v4/sms/numbers
我的号码列表。
Query 参数
| 字段 | 说明 |
|---|---|
| page / limit | 分页 |
| order_id | 按订单内部 id 筛选 |
GET /open/v4/sms/numbers/{id}
单个号码详情(路径 id 为号码内部 id)。
POST /open/v4/sms/numbers/{id}/refresh
刷新收码,拉取该号码最新短信内容。
返回字段(data)
| 字段 | 说明 |
|---|---|
| number | 号码对象(含 last_sms 等) |
| got_sms | 本次是否取到短信 |
| sms | 短信内容(取到时) |
POST /open/v4/sms/numbers/renew
对号码批量续费(body 与站内续费接口一致)。
GET /open/v4/custom/pages
获取可见商品页及 SKU(含零售价)。
返回字段(data)
| 字段 | 说明 |
|---|---|
| pages | 页面数组;每页含 items(SKU) |
POST /open/v4/custom/orders
提交商品页表单并扣费。
请求 Body
| 字段 | 必填 | 说明 |
|---|---|---|
| page_id | 是 | 商品页 ID |
| item_id | 是 | SKU / 商品项 ID |
| form_data | 否 | 表单字段对象(含数量等) |
返回字段(data)
| 字段 | 说明 |
|---|---|
| submission_id | 提交内部 ID |
| amount / quantity / currency | 扣费与数量 |
| balance | 扣费后可用余额 |
GET /open/v4/custom/orders
我的商品页提交记录(分页)。
Query 参数
| 字段 | 说明 |
|---|---|
| page / page_size | 分页 |
| status / search / page_id | 筛选 |
GET /open/v4/custom/orders/{id}
单条提交详情。支持 display_id(order_id)或内部数字 id。
返回字段(data)
| 字段 | 说明 |
|---|---|
| order_id | 公开单号 |
| page_id / page_title / item_id | 页面与商品 |
| final_amount / currency / status | 金额与状态 |
| quantity_snapshot / item_name_snapshot | 下单快照 |