浏览端点
ProxyWing 开发者 API
子用户
转售您的住宅流量。在服务下创建子用户,向其划转或从其收回流量(GB),生成其代理字符串,并根据其自身的用量报告向其计费。
创建子用户
在您的某个住宅服务下创建子用户,并从该服务的余额中向其转移流量。这就是转售您自有流量的方式:每个子用户都是一套独立的凭据,拥有自己的 GB 余额和独立的用量报告。在两种套餐上,gb 都必须是整数 GB(1、2、3……),最小为 1——小数值将被拒绝并返回 422。流量会立即从父服务中扣除。在高级版上,您可以自行选择 username 和 password;在标准版上,两者均由平台设置,提供其中任何一个都将返回 400 unsupported_for_tier。当服务剩余的未分配流量不足时,返回 409 insufficient_unallocated_traffic。Idempotency-Key 为必填项——省略将在任何流量转移之前返回 400。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
请求体参数
gbnumber 必填分配给新子用户的整数 GB。最小为 1。
labelstring 可选您为此子用户设置的自定义标识,在该服务内唯一。
usernamestring 可选仅限高级版。按发送内容原样使用;省略则生成 12 个字符的随机名称。
passwordstring 可选仅限高级版。12–64 个字符;省略则由我们生成。
POST /residential/services/{svc_id}/subuserscurl -X POST "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f" \
-H "Content-Type: application/json" \
-d '{"label":"acme-client-01","gb":5}'{
"id": "rsub_42",
"service_id": "resi_100001",
"tier": "premium",
"label": "acme-client-01",
"username": "uexxjq9gp4xn",
"allocated_gb": 5,
"used_gb": null,
"available_gb": null,
"status": "active",
"created_at": "2026-07-26T08:12:44Z",
"password": "MCCk99K80AtGEPY2"
}列出子用户
列出住宅服务下有效的子用户,以及其已分配的流量和状态。已删除和创建失败的子用户不会列出。此处不包含实时余额——请通过 GET .../subusers/{subuser_id}/traffic 读取。密码仅由创建和轮换密码操作返回,或通过 GET .../subusers/{subuser_id}/credentials 获取。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
查询参数
limitinteger 可选要返回的最大行数。默认 50。
offsetinteger 可选要跳过的行数,用于分页。
GET /residential/services/{svc_id}/subuserscurl -X GET "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"subusers": [
{
"id": "rsub_42",
"service_id": "resi_100001",
"tier": "premium",
"label": "acme-client-01",
"username": "uexxjq9gp4xn",
"allocated_gb": 5,
"used_gb": null,
"available_gb": null,
"status": "active",
"created_at": "2026-07-26T08:12:44Z",
"password": null
}
]
}获取子用户
返回单个子用户,包括其当前的分配额度和状态。此处不包含实时余额——请通过 GET .../subusers/{subuser_id}/traffic 读取。密码仅由创建和轮换密码操作返回,或通过 GET .../subusers/{subuser_id}/credentials 获取。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
GET /residential/services/{svc_id}/subusers/{subuser_id}curl -X GET "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"id": "rsub_42",
"service_id": "resi_100001",
"tier": "premium",
"label": "acme-client-01",
"username": "uexxjq9gp4xn",
"allocated_gb": 5,
"used_gb": null,
"available_gb": null,
"status": "active",
"created_at": "2026-07-26T08:12:44Z",
"password": null
}重命名子用户
更新子用户的 label。标签是您自己的元数据,绝不会发送到上游网络。此处不包含实时余额——请通过 GET .../subusers/{subuser_id}/traffic 读取。密码仅由创建和轮换密码操作返回,或通过 GET .../subusers/{subuser_id}/credentials 获取。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
请求体参数
labelstring 可选此子用户的新标签。
PUT /residential/services/{svc_id}/subusers/{subuser_id}curl -X PUT "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Content-Type: application/json" \
-d '{"label":"acme-client-renamed"}'{
"id": "rsub_42",
"service_id": "resi_100001",
"tier": "premium",
"label": "acme-client-01",
"username": "uexxjq9gp4xn",
"allocated_gb": 5,
"used_gb": null,
"available_gb": null,
"status": "active",
"created_at": "2026-07-26T08:12:44Z",
"password": null
}为子用户添加流量
从父服务向此子用户转移更多流量。gb 必须是整数 GB(1、2、3……),最小为 1;小数值将被拒绝并返回 422。如果父服务没有那么多未分配流量,将返回 409 insufficient_unallocated_traffic。Idempotency-Key 为必填项——省略将在任何流量转移之前返回 400。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
请求体参数
gbnumber 必填要转给子用户的整数 GB。最小为 1。
POST /residential/services/{svc_id}/subusers/{subuser_id}/allocatecurl -X POST "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}/allocate" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f" \
-H "Content-Type: application/json" \
-d '{"gb":2}'{
"id": "rsub_42",
"service_id": "resi_100001",
"tier": "premium",
"label": "acme-client-01",
"username": "uexxjq9gp4xn",
"allocated_gb": 7,
"used_gb": null,
"available_gb": null,
"status": "active",
"created_at": "2026-07-26T08:12:44Z",
"password": null
}从子用户收回流量
从子用户收回流量并归还给父服务。省略 gb 即可收回该子用户仍持有的全部流量。与分配不同,此处的 gb 可以是小数:一个获分配 3 GB、已使用 0.4 的子用户持有 2.6,这部分剩余量必须可以归还。请求量超过子用户持有量时,将返回 409 insufficient_subuser_traffic,并注明确切的可用量。Idempotency-Key 为必填项——省略将在任何流量转移之前返回 400。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
请求体参数
gbnumber 可选要收回的 GB 数。省略则收回全部剩余余额。
POST /residential/services/{svc_id}/subusers/{subuser_id}/reclaimcurl -X POST "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}/reclaim" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f" \
-H "Content-Type: application/json" \
-d '{"gb":2}'{
"id": "rsub_42",
"service_id": "resi_100001",
"tier": "premium",
"label": "acme-client-01",
"username": "uexxjq9gp4xn",
"allocated_gb": 3,
"used_gb": null,
"available_gb": null,
"status": "active",
"created_at": "2026-07-26T08:12:44Z",
"password": null
}删除子用户
删除该子用户。其仍持有的流量会先退回到父服务,因此不会有任何损失。该凭据会立即失效。高级版用户名在删除后仍会保留,无法再次使用。Idempotency-Key 为必填项——省略它将在任何流量转移之前返回 400。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
DELETE /residential/services/{svc_id}/subusers/{subuser_id}curl -X DELETE "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f"{
"id": "rsub_42",
"status": "deleted"
}获取子用户凭据
返回此子用户的网关、端口和凭据——即您交给自己客户的信息。在高级版上,定位令牌附加在“密码”之后;在标准版上,用户名是一个固定的共享值,令牌附加在“用户名”之后,而密码用于标识该子用户。targeting_field 会告诉您适用哪种情况。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
GET /residential/services/{svc_id}/subusers/{subuser_id}/credentialscurl -X GET "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}/credentials" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"id": "rsub_42",
"tier": "premium",
"gateway": "premium.proxywing.com",
"http_ports": [
12345,
54321
],
"socks5_ports": [
12345,
54321
],
"username": "uexxjq9gp4xn",
"password": "MCCk99K80AtGEPY2",
"targeting_field": "password"
}轮换子用户密码
为子用户签发新密码;旧密码立即无法再通过身份验证。在高级版上,定位令牌存放在密码中,因此轮换密码会使您已为该子用户分发的所有代理字符串失效——请重新签发。在标准版上,令牌存放在用户名中,因此之前签发的字符串只需换用新密码即可。Idempotency-Key 为必填项——省略将在任何流量转移之前返回 400。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
请求体参数
passwordstring 可选仅限高级版。省略则自动生成。
POST /residential/services/{svc_id}/subusers/{subuser_id}/rotate-passwordcurl -X POST "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}/rotate-password" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f" \
-H "Content-Type: application/json" \
-d '{}'{
"id": "rsub_42",
"service_id": "resi_100001",
"tier": "premium",
"label": "acme-client-01",
"username": "uexxjq9gp4xn",
"allocated_gb": 5,
"used_gb": null,
"available_gb": null,
"status": "active",
"created_at": "2026-07-26T08:12:44Z",
"password": "7Qp2LmXe4RtVbN91"
}获取子用户流量
子用户的实时余额,从网络读取,而非来自我们的缓存。余额为零的子用户会在网关处被拒绝,直到您为其分配更多流量。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
GET /residential/services/{svc_id}/subusers/{subuser_id}/trafficcurl -X GET "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}/traffic" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"id": "rsub_42",
"allocated_gb": 5,
"used_gb": 1.204,
"available_gb": 3.796
}子用户用量报告
按子用户统计某一日期范围内的用量,格式与服务级报告相同——因此您无需构建任何新内容,即可据此向自己的客户计费。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
查询参数
date_fromstring 必填开始日期,YYYY-MM-DD。
date_tostring 必填结束日期,YYYY-MM-DD。
unitstring 可选B、KB、MB 或 GB。默认 GB。
GET /residential/services/{svc_id}/subusers/{subuser_id}/usage-reportcurl -X GET "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}/usage-report" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"tier": "premium",
"date_from": "2026-07-01",
"date_to": "2026-07-26",
"unit": "GB",
"total": 1.204,
"rows": [
{
"date": "2026-07-24",
"data": 0.61,
"requests": 8123
}
]
}生成子用户代理列表
为此子用户生成即用型代理字符串——即您交给自己客户的确切字符串。其格式与服务级生成器逐字节一致,因此您的客户无法分辨是哪个端点生成的。
路径参数
svc_idstring 必填住宅服务 ID,可从 GET /residential/services 获取。
subuser_idstring 必填子用户 ID,例如 rsub_42。
请求体参数
countinteger 可选要生成的字符串数量。1–1000,默认 10。
protocolstring 可选"http"(默认)、"socks5" 或 "mix"。"mix" 仅限标准版套餐——同一端口同时响应 HTTP 和 SOCKS5;在高级版上请求该值将返回 400。
formatstring 可选输出格式,例如 hostname:port:username:password。
portinteger 可选要使用的特定网关端口。必须是该协议已公布的端口之一——高级版接受 102 HTTP 和 102 SOCKS5 端口,标准版接受 111 HTTP、112 SOCKS5,以及用于 "mix" 的 5555。默认根据 `session` 使用该套餐的轮换端口或粘性端口("mix" 为 5555)。
countrystring 可选ISO 国家代码,以逗号分隔。
citystring 可选要定位的城市。要求恰好指定一个 `country`——若使用逗号分隔的多国家值,城市将被忽略。两种套餐均可用;可通过 `GET /residential/services/{svc_id}/access?country=US` 查询有效名称(高级版覆盖的城市远多于标准版)。空格会被移除,因此 "Los angeles" 将以 `LosAngeles` 发送。
ispstring 可选要定位的 ASN,例如 Comcast 为 `7922`。与 `city` 一样,要求恰好指定一个 `country`,并可与其组合以同时锁定两者(芝加哥的 Comcast)。高级版接受 AS 号或提供商名称;标准版需要 AS 号。没有 ASN 查询端点——请自行提供 AS 号。
sessionstring 可选rotating 或 sticky。默认 rotating。
session_ttlstring 可选粘性会话时长,例如 10m、1h。
ipv4boolean 可选仅限标准版套餐:限定使用仅 IPv4 的 IP 池。默认 true。
streamingboolean 可选仅限高级版套餐:使用高端流媒体 IP 池。默认 false。
directboolean 可选仅限高级版套餐:直连模式,适用于 IMAP 等不适合默认路径的协议。默认 false。
skip_static_ispboolean 可选仅限高级版套餐:跳过静态 ISP 出口。默认 false。
hoststring 可选输出原始入口 IP,而非 DNS 网关主机名。必须是该套餐已公布的入口 IP 之一,或该套餐的网关名称;其他任何值都将返回 400。除非确有需要,否则请勿设置——网关主机名按地理位置路由,固定 IP 会使使用该字符串的所有用户都被发送到同一区域。可用 IP 由子用户凭据端点以 `entry_ips` 返回。
POST /residential/services/{svc_id}/subusers/{subuser_id}/generate-proxy-listcurl -X POST "https://api.proxywing.com/v1/residential/services/{svc_id}/subusers/{subuser_id}/generate-proxy-list" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Content-Type: application/json" \
-d '{"count":3,"protocol":"http","session":"rotating","country":"US"}'{
"gateway": "premium.proxywing.com",
"port": 54321,
"protocol": "http",
"count": 3,
"proxies": [
"premium.proxywing.com:54321:uexxjq9gp4xn:MCCk99K80AtGEPY2_country-US"
]
}