Browse endpoints
ProxyWing Developer API
Residential
Buy residential traffic per GB, top up existing plans, pull usage reports and build proxy lists.
List residential tiers
Returns the residential proxy tiers available for purchase. Residential traffic is sold per gigabyte; bulk-volume discounts apply automatically at checkout.
GET /residential/productscurl -X GET "https://api.proxywing.com/v1/residential/products" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"tiers": [
{
"tier": "premium",
"per_gb": 6
},
{
"tier": "standard",
"per_gb": 2.5
}
]
}Order residential traffic
Purchases residential proxy traffic (in GB) on the chosen tier using the account balance. This is a one-time purchase — there is no billing cycle or recurring charge; the traffic stays on the service until used. The invoice total is computed by billing — bulk-volume discounts are applied automatically, so larger orders can cost less than gb × per_gb. Once paid, the service provisions immediately and appears in GET /residential/services. Supply an Idempotency-Key header so retries never double-charge.
Body parameters
tierstringrequired"premium" or "standard", from GET /residential/products.
gbintegerrequiredGigabytes of traffic to purchase (1–1000).
promo_codestringoptionalOptional promo code. Only percentage-discount promo codes under 100% off apply via the API (a code that would zero the total is rejected).
POST /residential/orderscurl -X POST "https://api.proxywing.com/v1/residential/orders" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f" \
-H "Content-Type: application/json" \
-d '{"tier":"standard","gb":5}'{
"order_id": "ord_100003",
"invoice_id": "inv_200004",
"tier": "standard",
"gb": 5,
"status": "paid"
}Add bandwidth to a service
Adds GB of traffic to an EXISTING residential service — no new order or new credentials, the extra traffic lands on the same service. An invoice is created for the added GB (bulk-volume discounts apply, so larger top-ups cost less per GB) and, if the balance covers it, paid automatically and the traffic is credited immediately. If the balance is short the invoice stays open (awaiting_payment) and can be settled from the dashboard. Supply an Idempotency-Key header so retries never double-buy.
Path parameters
svc_idstringrequiredThe residential service id, e.g. resi_100001, from GET /residential/services.
Body parameters
gbintegerrequiredGigabytes of traffic to add (1–10000).
POST /residential/services/{svc_id}/top-upcurl -X POST "https://api.proxywing.com/v1/residential/services/{svc_id}/top-up" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f" \
-H "Content-Type: application/json" \
-d '{"gb":5}'{
"service_id": "resi_100001",
"gb_added": 5,
"old_gb": 3,
"new_gb": 8,
"invoice_id": "inv_200020",
"total": 11.25,
"status": "paid"
}List residential services
Returns every active residential service on the account, with its tier and the gateway hostname it connects through.
GET /residential/servicescurl -X GET "https://api.proxywing.com/v1/residential/services" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"services": [
{
"id": "resi_100001",
"tier": "standard",
"status": "active",
"gateway": "quality.proxywing.com"
},
{
"id": "resi_100002",
"tier": "premium",
"status": "active",
"gateway": "premium.proxywing.com"
}
]
}Get connection credentials
Returns the gateway, available ports, and the username/password for a residential service. targeting_field tells you which credential carries geo-targeting and session tokens when you build proxy strings by hand — use POST /residential/services/{svc_id}/generate-proxy-list to have them built for you.
Path parameters
svc_idstringrequiredThe service id, e.g. resi_100001, from GET /residential/services.
GET /residential/services/{svc_id}/credentialscurl -X GET "https://api.proxywing.com/v1/residential/services/{svc_id}/credentials" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"id": "resi_100001",
"tier": "standard",
"gateway": "quality.proxywing.com",
"http_ports": [
8888,
7000,
7001,
7002,
7003,
7004,
7005
],
"socks5_ports": [
1080,
6000,
6001,
6002,
6003,
6004,
6005
],
"username": "pkg-private2",
"password": "sample_password",
"targeting_field": "username"
}Get traffic usage
Returns the traffic balance for a residential service in gigabytes. Fields not tracked for a given tier are null.
Path parameters
svc_idstringrequiredThe service id, e.g. resi_100001.
GET /residential/services/{svc_id}/trafficcurl -X GET "https://api.proxywing.com/v1/residential/services/{svc_id}/traffic" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"tier": "standard",
"total_gb": 20,
"used_gb": 1.21,
"available_gb": 18.79
}Get a usage report
Returns per-hostname traffic usage for a residential service over a date window. Values are in the requested unit; total is the sum across all rows.
Path parameters
svc_idstringrequiredThe service id, e.g. resi_100001.
Query parameters
date_fromstringrequiredStart date, YYYY-MM-DD.
date_tostringrequiredEnd date, YYYY-MM-DD.
unitstringoptionalMeasurement unit for the data values: "B", "KB", "MB" or "GB" (default GB).
GET /residential/services/{svc_id}/usage-reportcurl -X GET "https://api.proxywing.com/v1/residential/services/{svc_id}/usage-report" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"tier": "standard",
"date_from": "2026-06-01",
"date_to": "2026-07-01",
"unit": "GB",
"total": 3.42,
"rows": [
{
"date": "2026-06-15",
"hostname": "example.com",
"data": 2.1,
"requests": 1840
},
{
"date": "2026-06-16",
"hostname": "api.example.com",
"data": 1.32,
"requests": 910
}
]
}List countries & cities
Returns the geo-targeting options for a tier: every available country, or — when country is supplied — the cities available inside it. Use the returned codes in generate-proxy-list.
Query parameters
tierstringrequired"premium" or "standard".
countrystringoptionalISO country code, e.g. US. When set, returns that country's cities instead of the country list.
GET /residential/accesscurl -X GET "https://api.proxywing.com/v1/residential/access" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"tier": "premium",
"countries": [
{
"code": "US",
"name": "United States"
},
{
"code": "GB",
"name": "United Kingdom"
},
{
"code": "DE",
"name": "Germany"
}
]
}Get auto-topup settings
Returns the auto-topup configuration for a residential service. When enabled, the account buys more traffic automatically once the remaining balance falls below the threshold.
Path parameters
svc_idstringrequiredThe service id, e.g. resi_100001.
GET /residential/services/{svc_id}/auto-topupcurl -X GET "https://api.proxywing.com/v1/residential/services/{svc_id}/auto-topup" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"service_id": "resi_100001",
"enabled": true,
"threshold_gb": 2,
"amount_gb": 5,
"payment_source": "balance",
"last_topup_at": null
}Set auto-topup
Enables or disables auto-topup for a residential service. When enabling, both threshold_gb and amount_gb are required and top-ups are paid from the account balance. (Card-funded auto-topup is configured from the dashboard.)
Path parameters
svc_idstringrequiredThe service id, e.g. resi_100001.
Body parameters
enabledbooleanrequiredtrue to enable auto-topup, false to disable.
threshold_gbnumberoptionalTop up when remaining traffic drops below this many GB (1–10000). Required when enabling.
amount_gbnumberoptionalHow many GB to buy each time (1–10000). Required when enabling.
PUT /residential/services/{svc_id}/auto-topupcurl -X PUT "https://api.proxywing.com/v1/residential/services/{svc_id}/auto-topup" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Content-Type: application/json" \
-d '{"enabled":true,"threshold_gb":2,"amount_gb":5}'{
"service_id": "resi_100001",
"enabled": true,
"threshold_gb": 2,
"amount_gb": 5,
"payment_source": "balance",
"last_topup_at": null
}Generate a proxy list
Builds ready-to-use proxy strings for a residential service with the geo-targeting and session behaviour you specify. Rotating sessions get a new exit IP on every request; sticky sessions keep the same exit IP for the session TTL. This endpoint only formats credentials — it never charges the account.
Path parameters
svc_idstringrequiredThe service id, e.g. resi_100001.
Body parameters
countintegeroptionalNumber of proxy strings to generate, 1–1000. Default 10.
protocolstringoptional"http" (default) or "socks5".
formatstringoptionalOutput format. One of "hostname:port:username:password" (default), "hostname:port@username:password", "username:password@hostname:port", "username:password:hostname:port".
portintegeroptionalSpecific gateway port to use. Defaults to the tier's rotating or sticky port based on `session`.
countrystringoptionalISO country code(s) to target, e.g. "US" or "US,GB" for a multi-country pool. Omit for random.
citystringoptionalCity to target (single-country only), from GET /residential/access.
ispstringoptionalISP / ASN to target (single-country only).
sessionstringoptional"rotating" (default) or "sticky".
session_ttlstringoptionalHow long a sticky session keeps its exit IP, e.g. "30s", "10m", "2h", "1d".
ipv4booleanoptionalStandard tier only: restrict to the IPv4-only pool. Default true.
streamingbooleanoptionalPremium tier only: use the high-end streaming pool. Default false.
POST /residential/services/{svc_id}/generate-proxy-listcurl -X POST "https://api.proxywing.com/v1/residential/services/{svc_id}/generate-proxy-list" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Content-Type: application/json" \
-d '{"count":2,"protocol":"http","country":"US","session":"sticky","session_ttl":"10m"}'{
"gateway": "quality.proxywing.com",
"port": 8888,
"protocol": "http",
"count": 2,
"proxies": [
"quality.proxywing.com:8888:pkg-private2-pool-onlyipv4-country-US-session-a1b2c3d4-ttl-10:sample_password",
"quality.proxywing.com:8888:pkg-private2-pool-onlyipv4-country-US-session-e5f6g7h8-ttl-10:sample_password"
]
}