静态住宅 API:报价、购买与任务状态

通过报价和幂等键购买静态住宅代理,正确处理异步任务、失败退款、超时与结果核验。

静态住宅购买分为报价、提交任务和查询结果。报价不会直接购买;提交订单会创建真实购买任务并可能扣款。请先确认购买地区、数量、业务名称和总金额。

1. 接口与权限

所有请求使用业务 API 域名和 Api-Token: YOUR_API_KEY。

方法与路径Scope用途
POST /api/user/v1/static-residential/quotesstatic:inventory:read生成报价
POST /api/user/v1/static-residential/ordersstatic:purchase提交购买任务
GET /api/user/v1/static-residential/operations/{operation_no}static:purchase查询任务状态

POST 请求使用 Content-Type: application/json。查询已交付 IP 还需要 static:ip:read。使用旧 Key 能查询库存,不代表已经获得购买权限。

2. 获取报价

先从国家、城市/库存和业务名称接口选择真实可用值,再提交:

JSON 字段必填说明
country_code是两位国家代码
city_name是库存返回的原始城市名,不能自行翻译或纠正拼写
quantity是正整数;默认服务上限为 20,实际以服务端限制为准
duration_days否默认 30,当前仅支持 30 天
business_name否默认 other,但仍须属于当前业务名称列表
protocol否http、socks5、both;默认 both

以下 COUNTRY_CODE、CITY_NAME、BUSINESS_NAME 都必须替换为查询返回值。代码中的购买金额不由客户端指定。

curl --silent --show-error --max-time 30 \
  "$DFIP_API_BASE/api/user/v1/static-residential/quotes" \
  -H "Api-Token: $DFIP_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"country_code":"COUNTRY_CODE","city_name":"CITY_NAME","quantity":1,"duration_days":30,"business_name":"BUSINESS_NAME","protocol":"both"}'

成功 data 包含 quote_id、country_code、city_name、quantity、duration_days、business_name、protocol、unit_price、total_amount、currency 和 expires_in。

报价有效期为 300 秒,属于当前调用账号。币种为 USD。提交前展示并核对 total_amount;报价校验当前库存与价格,但不锁定库存或预留账户余额。过期后需要重新报价并重新核对金额。

3. 使用幂等键提交购买

请求头 Idempotency-Key 必填:8–64 个字符,仅可使用字母、数字、点、下划线、冒号和连字符。

在发请求之前保存幂等键、购买意图和 quote_id。 每一笔有意发起的新购买使用一个新键;同一笔购买的网络重试复用原键,不要每次请求都随机生成新键。

# Use a unique key for a new purchase and retain it for retries.
export DFIP_PURCHASE_KEY='YOUR_UNIQUE_PURCHASE_KEY'
curl --silent --show-error --max-time 30 \
  "$DFIP_API_BASE/api/user/v1/static-residential/orders" \
  -H "Api-Token: $DFIP_API_KEY" \
  -H "Idempotency-Key: $DFIP_PURCHASE_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"quote_id":"YOUR_QUOTE_ID"}'

成功返回 HTTP 202、code: 0,以及任务 operation_no、status 等字段。此时不能把它显示为“购买成功”。

当前账号相同幂等键已有任务时,接口会返回原任务,即使旧报价已过期。不要把一个旧键用于另一笔购买,也不要依赖服务端一定会为新的参数返回冲突;调用端必须自己保存并核对键与购买意图的绑定关系。

4. 查询任务与确认交付

curl --silent --show-error --max-time 30 \
  "$DFIP_API_BASE/api/user/v1/static-residential/operations/YOUR_OPERATION_NO" \
  -H "Api-Token: $DFIP_API_KEY"

建议从每 2–5 秒查询一次开始,等待时间变长时逐步退避。这是调用建议,不是固定服务配额。每次请求使用原 operation_no。

status含义与处理
pending已受理,等待处理;继续查询
processing处理中,可能已预扣余额;不要重复购买
finalizing上游已成功,正在完成本地交付记录;继续查询
completed购买任务已完成;用 local_order_id 对照订单,再查询已购 IP
failed_refunded购买失败,预扣金额已退回余额;核对余额后再决定是否重新购买
failed未扣款失败;读取 message 并处理原因
reconcile_required结果待核验;保存任务号并联系客服,勿重复提交新购买
unknown未识别状态;保留任务号并联系支持,不应当作成功

任务 data 包含:operation_no、status、message、country_code、city_name、quantity、duration_days、business_name、amount、local_order_id、created_at、completed_at。订单号和完成时间在尚未生成时可为 null。

amount 表示报价金额,不是“已经扣款”的证明;结合状态及账户记录核对。completed 后到 已购 IP 查询 获取代理账号、密码和端口。轮询等待超时也不代表任务失败,应保留原任务继续跟踪。

5. 错误处理

HTTP / code说明与处理
400 / 40002地区、数量、期限、业务名称或协议无效
400 / 40004幂等键缺失或格式错误
400 / 40005报价不存在、过期或不属于当前账号;若已有购买任务先跟踪原任务
402 / 40201余额不足;data 提供 available_balance、required_amount、currency
403 / 40301缺少所需 Scope
403 / 40302请求出口不在 Key 白名单
403 / 40303、40304、40305当前账号、子账号静态权限或共享主账号不可用
404 / 40401当前账号下找不到该任务
409 / 40901库存不足;检查 available_stock 并重新选择
409 / 40902幂等参数冲突;核对本地记录,不能直接换键盲目重试
503 / 50303购买任务入队失败;保留原键,核对原任务后处理
503 / 50304地区价格不可用,联系客服
503 / 50305报价服务暂不可用
500 / 50001购买提交异常;先复用原键核对原任务,避免重复购买

鉴权服务暂不可用可能返回 503 / 50300;缺失或失效 Key 返回 401 / 40101、40102。出现网络超时、响应丢失或服务异常时,不应自动换新幂等键重新买。

接入检查清单

  1. 金额和地区经确认后才提交购买。
  2. 本地持久保存幂等键与购买参数,获得响应后保存 operation_no。
  3. HTTP 202 进入处理中;只有 completed 进入已完成。
  4. 对 reconcile_required 停止自动重买,转人工核验。
  5. 不把代理密码、API Key 或完整响应写到公开日志。

当前这组开放 API 提供购买与查询,不提供续费、自动续费开关、删除或换 IP 接口;这些操作请使用控制台已有功能。

查询接口参考 · 接入指南 · English version

最近修改: 2026-09-13