Skip to content

静态产品 API ​

适用产品:静态 ISP 代理(product=static-isp)与 独享数据中心代理(product=static-dc)。 Base URL:https://api.ipxss.com 全部接口走 POST,请求体支持 application/json 或 application/x-www-form-urlencoded。 响应统一结构:{ "code": 0, "data": {...}, "msg": "success", "timestamp": 1747036799 },code != 0 表示错误。

两个产品共用同一套 /v1/static_house/* 路径,通过请求体 product 区分。未传 product 时默认 static-isp。


1. 已开放接口 ​

能力路径静态 ISP独享数据中心
换取访问令牌POST /v1/oauth2/token✅✅
查询可售地区与库存POST /v1/static_house/region✅✅
已分配 IP 列表POST /v1/static_house/list✅✅
导出 IP 列表(CSV)POST /v1/static_house/export✅✅
下单开通POST /v1/static_house/open✅✅
续费POST /v1/static_house/renew✅✅
自动续费开关(推荐)POST /v1/static_house/auto_renew✅✅
自动续费开关(兼容)POST /v1/static_house/renew_setting✅✅
出货 webhookPOST /v1/static_house/webhook✅✅
钱包余额POST /v1/wallet/balance✅✅
钱包流水POST /v1/wallet/usage_record✅✅

静态 ISP 仅标准档(ip_type=normal),premium 会被拒绝。独享数据中心不区分档位。时长为 week(约 7 天)或 month(约 30 天)。公开响应只含平台转发接入信息,不含上游渠道名或厂商凭证。

认证、钱包通用约定见 认证与调用约定 与 钱包、白名单与查询接口。


2. 接入步骤 ​

2.1 申请凭证 ​

  1. 用户登录 IPxSS 控制台,进入「设置 → API 密钥」生成 API Key。
  2. 第三方拿到 用户邮箱 + API Key 两段凭证;API Key 等同密码,仅服务端保存。

2.2 换取 access_token ​

http
POST /v1/oauth2/token
Authorization: Basic base64(email:api_key)
Content-Type: application/x-www-form-urlencoded

成功响应:

json
{
  "code": 0,
  "data": {
    "access_token": "eyJhbGciOi...",
    "expires_in": 604800,
    "token_type": "bearer"
  },
  "msg": "success",
  "timestamp": 1747036799
}
  • 默认 TTL:7 天。
  • 后续业务请求均通过 Authorization: Bearer <access_token> 携带。
  • 建议本地缓存 token,到期前 1 天主动重换,不要每次请求都换。

3. 公共字段约定 ​

字段取值说明
productstatic-isp / static-dc不传默认为 static-isp;新接入请显式传递
ip_typenormalstatic-isp 必填;premium 拒绝。static-dc 可不传,若传只能是 normal
duration / package_typeweek / month约 7 天或 30 天
regionus:2|hk:1 或 MIXISP-7973:50多地区用 | 分隔;地区码与数量用 : 分隔;总和必须等于 num
num整数本次下单总 IP 数量
page / limit分页默认 1 / 10;limit 上限 100(导出接口为 10000)

地区码规则:

  • 国家级:ISO Alpha-2 大写,如 US、GB、HK。无城市级库存;传入 US-NY 一类编码时按国家码校验。
  • 以 /v1/static_house/region 返回为准,不要写死历史国家表。
  • 「套餐包」分组的 region 为 MIXISP-<id>(ISP)或 MIXIPV4-<id>(DC),quantities 仅 20 / 50 / 100 / 200。一次只能下一个套餐,不可与国家码混下。

isp_type(isp-resi / isp-resi-hq)已废弃,请统一使用 ip_type。


4. 业务接口 ​

4.1 查询地区与库存 ​

http
POST /v1/static_house/region
Authorization: Bearer <token>
字段必填说明
product否static-isp 或 static-dc,默认 static-isp
ip_typestatic-isp 时必填仅 normal

响应要点:

字段含义
data.list按文档分组的地区列表,可能含「套餐包」
data.stock_as_of库存快照 Unix 时间;当前无同步表快照时为 0
地区项 region / node / node_en / stock编码、中英文名、可下单标记
套餐项 quantities仅 20 / 50 / 100 / 200

stock 为 1 表示可下单,不是精确剩余条数。为 0 或不在列表中表示不可售。

请求示例:

json
{
  "product": "static-isp",
  "ip_type": "normal"
}
json
{
  "product": "static-dc"
}

4.2 下单开通 ​

http
POST /v1/static_house/open
Authorization: Bearer <token>
字段必填示例说明
product否static-isp默认 static-isp
ip_typestatic-isp 时必填normalDC 固定 normal 或可省略
duration是week / month约 7 天或 30 天
num是3必须等于 region 数量合计
region是hk:1|us:2套餐包如 MIXISP-7973:50、MIXIPV4-<id>:50
notify_url否https://example.com/hookHTTPS;需先登记 webhook 密钥才会投递

当前实现:

  • 校验参数与数量,按国家或套餐单价扣减钱包;余额不足直接失败,不会只开通部分资源。
  • 会创建订单、订阅和静态分配记录。
  • 响应只含平台转发 http / socks5(ISP 端口 10000 / 10001,DC 端口 6666 / 6667),账号为 ng_static_*。
  • 新购可能异步出货:awaiting_fulfillment=true 且 allocation status=0(pending)时,请轮询 list,直到 status=1 且出现 exit_ip。也可登记 webhook 收 static.ready。

成功响应示例:

json
{
  "code": 0,
  "data": {
    "quote": {
      "amountUsd": 4.5,
      "quantity": 1,
      "duration": "month"
    },
    "order": {
      "order_no": "PX202604080001",
      "amount_usd": 4.5,
      "product_code": "static-isp",
      "quantity": 1,
      "duration_label": "每月",
      "status": "paid"
    },
    "allocations": [
      {
        "id": "alloc-1",
        "http": {
          "protocol": "http",
          "host": "hk-server1.ipxss.com",
          "port": "10000",
          "account": "ng_static_isp_us_xxx",
          "password": "***"
        },
        "socks5": {
          "protocol": "socks5",
          "host": "hk-server1.ipxss.com",
          "port": "10001",
          "account": "ng_static_isp_us_xxx",
          "password": "***"
        },
        "status": 0,
        "status_label": "pending"
      }
    ],
    "awaiting_fulfillment": true,
    "gatewayRedisRefreshScheduled": true
  },
  "msg": "success",
  "timestamp": 1747037000
}

下单失败常见原因:

code含义
40001参数不合法(地区码、数量不匹配、ip_type 取值错误等)
40002钱包余额不足 / 地区不可售 / 业务校验失败,msg 给出具体原因
50201上游开通失败

4.3 已分配列表 ​

http
POST /v1/static_house/list
Authorization: Bearer <token>

只返回当前 Bearer Token 对应账号名下的资源,不会跨账号串出其他采购人的线路。

字段说明
productstatic-isp / static-dc,默认 static-isp
page / limit分页,默认 1 / 10,limit 最大 100
status0 待分配、1 使用中、2 已过期、3 已释放;留空=全部
region按地区码过滤,大写
key_word / keywordIP / 账号 / 订单号 / 国家 模糊匹配
is_auto_renew1=仅自动续费;0 或 -1=仅未开自动续费;留空=全部

单条资源项:

字段含义
id分配 ID(自动续费时使用)
http / socks5平台转发接入块(host、port、account、password)
exit_ip已确认的公网出口 IPv4;pending 时不返回
region / country地区码与展示名
expire_time到期时间戳(秒)
duration距到期剩余秒数
provisioned_at / duration_label / product_code / order_no开通时间、周期文案、产品、订单号
status / status_label0/pending、1/in_use、2/expired、3/released
auto_renew1=已开启
type新购恒为 0;历史高级 ISP 可能为 1;DC 恒为 0

响应顶层还包含 page、total。

请求示例:

json
{
  "product": "static-dc",
  "page": 1,
  "limit": 20,
  "status": 1,
  "region": "HK",
  "is_auto_renew": 1
}

4.4 导出资源 ​

http
POST /v1/static_house/export
Authorization: Bearer <token>

返回 text/csv(不是标准 JSON),Content-Disposition 文件名为 static-isp-export.csv 或 static-dc-export.csv。筛选参数与 list 相同。CSV 列:

id,host,http_port,socks_port,account,password,exit_ip,region,status,status_label,auto_renew,expire_time,provisioned_at,duration_label,order_no


4.5 续费 ​

http
POST /v1/static_house/renew
Authorization: Bearer <token>
字段必填说明
product否默认 static-isp
duration是week 或 month
renew_ip_list是逗号分隔的 出口 IP,不是分配 id

任一 IP 不属于当前账号则整单失败。成功后写入续费订单和钱包流水,并更新到期时间。

json
{
  "product": "static-isp",
  "renew_ip_list": "203.0.113.10,203.0.113.11",
  "duration": "month"
}

响应重点:order、transaction、items[].allocation.expires_at、gatewayRedisRefreshScheduled。


4.6 自动续费开关 ​

推荐:

http
POST /v1/static_house/auto_renew
Authorization: Bearer <token>
字段必填说明
ids是分配 ID,逗号分隔
enabled是true / false
package_type否week / month
product否默认 static-isp

兼容旧客户端:

http
POST /v1/static_house/renew_setting
Authorization: Bearer <token>
字段必填说明
type是固定值 static_house
ids是分配 ID,逗号分隔
package_type是week / month
status是1=开启,-1=关闭
product否默认 static-isp
json
{
  "product": "static-dc",
  "type": "static_house",
  "ids": "7c9f2d5d-1111-2222-3333-444444444444",
  "package_type": "month",
  "status": 1
}

开启后,调度器会在到期前自动扣款续费(默认每 5 分钟检查;余额不足则到期后标记 expired)。手动续费会继承原 auto_renew 设置。


4.7 出货 webhook ​

http
POST /v1/static_house/webhook
Authorization: Bearer <token>

异步出货时不要只靠轮询。空 body 表示查询当前配置(不回显 secret)。

字段说明
url / notify_url / webhook_urlHTTPS 回调地址,禁止 localhost / 内网
enabledtrue / false
rotate_secrettrue 时轮换密钥,新 secret 只返回一次

服务端 POST JSON,请求头:

头含义
X-IPxSS-Eventstatic.allocated(上游 IP 已写入,可能仍 pending)或 static.ready(落地验证通过,出现 exit_ip)
X-IPxSS-Signaturesha256=<hex>,对原始请求体用登记的 secret 做 HMAC-SHA256

body 中的 allocations 与 list 条目相同,仅含平台转发,不含上游渠道信息。open 的 notify_url 需先有登记密钥才会投递。


5. 错误码 ​

code含义HTTP 状态
0成功200
40001参数校验失败400
40002业务校验失败(余额、库存、产品状态、IP 不属于当前账号等)400
40101缺少 Basic Auth 凭证401
40102用户邮箱或 API Key 不正确401
40103access_token 缺失或失效401
50001服务内部错误500
50201上游开通失败502

超出限流返回 HTTP 429。单 API Key 默认 60 req/min。


6. 调用样例(curl) ​

bash
# 1. 换 token
TOKEN=$(curl -s -X POST https://api.ipxss.com/v1/oauth2/token \
  -u "[email protected]:my_api_key" \
  | jq -r .data.access_token)

# 2. 查地区
curl -s -X POST https://api.ipxss.com/v1/static_house/region \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"product":"static-isp","ip_type":"normal"}' | jq

# 3. 开通:1 个 HK + 2 个 US,月付
curl -s -X POST https://api.ipxss.com/v1/static_house/open \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
        "product":"static-isp",
        "ip_type":"normal",
        "duration":"month",
        "num":3,
        "region":"hk:1|us:2"
      }' | jq

# 4. 看已分配
curl -s -X POST https://api.ipxss.com/v1/static_house/list \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"product":"static-isp","page":1,"limit":20}' | jq

# 5. 续费两个 IP
curl -s -X POST https://api.ipxss.com/v1/static_house/renew \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"product":"static-isp","duration":"month","renew_ip_list":"203.0.113.10,203.0.113.11"}' | jq

# 6. 独享数据中心:2 个美国 IP,月付
curl -s -X POST https://api.ipxss.com/v1/static_house/open \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"product":"static-dc","duration":"month","num":2,"region":"us:2"}' | jq

# 7. 周付套餐包
curl -s -X POST https://api.ipxss.com/v1/static_house/open \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"product":"static-isp","ip_type":"normal","duration":"week","num":50,"region":"MIXISP-7973:50"}' | jq

# 8. 登记出货 webhook
curl -s -X POST https://api.ipxss.com/v1/static_house/webhook \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/ipxss-hook","enabled":true}' | jq

7. 对接清单 ​

步骤需要做的事
1在 IPxSS 控制台注册账号并生成 API Key
2在自己的服务端保存 email + api_key,不要落到浏览器
3调 /v1/oauth2/token 换 access_token,本地缓存到剩余 1 天时刷新
4调 /v1/static_house/region 拉地区列表
5下单前先调 /v1/wallet/balance,再调 /v1/static_house/open
6把线路交给终端用户前,确认 status=1 且已有 exit_ip;也可登记 webhook 收 static.ready
7定期调 /v1/static_house/list 同步到期时间,到期前调 /v1/static_house/renew 或开启自动续费

8. 已知限制 ​

  1. 库存无精确计数:stock=1 只表示国家可售;open 若因无货失败,换国家或稍后重试。
  2. 异步出货:open 成功不等于立刻能连。awaiting_fulfillment=true 或 status=0 时请轮询 list。
  3. 没有优质 ISP:ip_type=premium 会被拒绝。
  4. 不提供退货:上游无法回收已售 IP,公开 API 没有退货接口;误购请联系商务。
  5. 下单失败钱包不会扣款:40002 / 50201 失败路径会回滚事务。
  6. 重复下单:需调用方自己做幂等;当前接口不基于 client_request_id 去重。
  7. 响应不含上游渠道:只使用平台转发 http / socks5 与已确认的 exit_ip。

IPxSS 代理基础设施