Browse endpoints
ProxyWing Developer API
ISP
Order, list, extend, change passwords and whitelist IPs for ISP proxies.
List ISP products
Returns the ISP proxy products available for purchase across every location, with monthly pricing.
GET /isp/productscurl -X GET "https://api.proxywing.com/v1/isp/products" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"products": [
{
"product_id": "prod_368",
"category": "isp",
"group": "ISP US New York Premium",
"name": "1 Proxy ISP US",
"price_monthly": 3
}
]
}Order an ISP proxy
Purchases an ISP proxy product using the account balance and provisions it immediately once paid. Only ISP-category products (from GET /isp/products) are accepted. Choose a billing_cycle of monthly, quarterly, semiannually or annually — longer terms are billed at the product's discounted per-cycle price (the same rates as the web checkout), and the total field reports exactly what was charged. Supply an Idempotency-Key header so retries never double-charge. Idempotency-Key is REQUIRED on this endpoint — omitting it returns 400 and nothing is charged.
Body parameters
product_idstringrequiredThe ISP product to order, from GET /isp/products.
billing_cyclestringoptionalBilling term: "monthly" (default), "quarterly", "semiannually" or "annually". Longer terms bill the product's discounted per-cycle price. (Month counts 1/3/6/12 are accepted as aliases.)
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 /isp/orderscurl -X POST "https://api.proxywing.com/v1/isp/orders" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f" \
-H "Content-Type: application/json" \
-d '{"product_id":"prod_368","billing_cycle":"quarterly"}'{
"order_id": "ord_100010",
"invoice_id": "inv_200010",
"product_id": "prod_368",
"category": "isp",
"billing_cycle": "quarterly",
"total": 8.55,
"status": "paid"
}Get renewal terms
Returns the extension terms available for an ISP order — 1, 3, 6 and 12 months — each with its (discounted for longer terms) price. Pass one of these months values as cycle to extend. Only MONTHLY services can be priced here; a non-monthly service currently surfaces as a 500 rather than a clean 4xx.
Path parameters
ord_idstringrequiredThe ISP order id, from GET /isp/proxies.
GET /isp/orders/{ord_id}/renewal-optionscurl -X GET "https://api.proxywing.com/v1/isp/orders/{ord_id}/renewal-options" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"order_id": "ord_100010",
"next_due_date": "2026-09-02",
"options": [
{
"months": 1,
"total": 3,
"label": "1 Month",
"discount_pct": 0
},
{
"months": 3,
"total": 8.55,
"label": "3 Months",
"discount_pct": 5
},
{
"months": 6,
"total": 16.75,
"label": "6 Months",
"discount_pct": 7
},
{
"months": 12,
"total": 32.4,
"label": "12 Months",
"discount_pct": 10
}
]
}Extend an ISP order
Renews an ISP order for 1, 3, 6 or 12 months, settling the invoice from the account balance. Longer terms use the product's discounted per-cycle price (see GET /isp/orders/{ord_id}/renewal-options). Supply an Idempotency-Key header so retries never double-extend. Idempotency-Key is REQUIRED — omitting it returns 400 before anything is charged. Only services on a MONTHLY billing cycle can be extended through the API, and the service must be active or suspended; anything else is rejected. A service ordered on a quarterly, semiannual or annual cycle cannot be extended here.
Path parameters
ord_idstringrequiredThe ISP order id to extend.
Body parameters
cycleintegerrequiredTerm to extend by, in months: 1, 3, 6 or 12.
cycle_typestringrequiredMust be "monthly".
POST /isp/orders/{ord_id}/extendcurl -X POST "https://api.proxywing.com/v1/isp/orders/{ord_id}/extend" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f" \
-H "Content-Type: application/json" \
-d '{"cycle":3,"cycle_type":"monthly"}'{
"order_id": "ord_100010",
"invoice_id": "inv_200012",
"status": "paid",
"total": 8.55,
"next_due_date": "2026-12-02"
}List ISP proxies
Returns every active ISP order on the account with its live proxy credentials. Each order's id is stable: the same order returns the same ord_... on every call and it keeps resolving, so you can store it. The order of the list is not guaranteed — match on the id, not on position.
GET /isp/proxiescurl -X GET "https://api.proxywing.com/v1/isp/proxies" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"orders": [
{
"id": "ord_100010",
"location": "US",
"status": "active",
"expires_at": "2026-08-02T00:00:00+00:00",
"proxies": [
{
"id": "prx_9Km2Wq4Xv1Pb7Ra0Uc8d",
"ip": "203.0.113.20",
"http_port": 8080,
"socks_port": 1080,
"username": "ISPSAMPLE",
"password": "sample_password",
"location": "US",
"expires_at": "2026-08-02T00:00:00+00:00"
}
]
}
]
}Change an ISP proxy's password
Rotates the authentication password for every proxy in an ISP order. Sessions using the old password stop working immediately.
Path parameters
ord_idstringrequiredThe ISP order id, from GET /isp/proxies.
POST /isp/orders/{ord_id}/change-passwordcurl -X POST "https://api.proxywing.com/v1/isp/orders/{ord_id}/change-password" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"status": "password_changed"
}List whitelisted IPs
Returns the IPs currently whitelisted on an ISP order (IPs allowed to use the proxies without a username/password).
Path parameters
ord_idstringrequiredThe order id, from GET /isp/proxies.
GET /isp/orders/{ord_id}/whitelistcurl -X GET "https://api.proxywing.com/v1/isp/orders/{ord_id}/whitelist" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"order_id": "ord_100010",
"ips": [
"203.0.113.9"
]
}Whitelist an IP
Adds an IP address to the ISP order's whitelist for IP-authenticated access.
Path parameters
ord_idstringrequiredThe ISP order id to whitelist the IP on.
Body parameters
ipstringrequiredIPv4 or IPv6 address to whitelist, e.g. 203.0.113.9.
POST /isp/orders/{ord_id}/whitelistcurl -X POST "https://api.proxywing.com/v1/isp/orders/{ord_id}/whitelist" \
-H "Authorization: Bearer pk_live_XXXXXXXX" \
-H "Content-Type: application/json" \
-d '{"ip":"203.0.113.9"}'{
"status": "whitelisted",
"ip": "203.0.113.9"
}Remove a whitelisted IP
Removes an IP from the ISP order's whitelist and returns the resulting whitelist. Idempotent — removing an IP that is not whitelisted still returns 200, so retrying after a timeout is safe. Returns 503 whitelist_sync_pending when the entry was removed from our records but the proxy has not applied the change yet; the IP may still be accepted until it does, so retry to confirm.
Path parameters
ord_idstringrequiredThe ISP order id, from GET /isp/proxies.
ipstringrequiredThe whitelisted IP to remove, e.g. 203.0.113.9.
DELETE /isp/orders/{ord_id}/whitelist/{ip}curl -X DELETE "https://api.proxywing.com/v1/isp/orders/{ord_id}/whitelist/{ip}" \
-H "Authorization: Bearer pk_live_XXXXXXXX"{
"order_id": "ord_100001",
"ips": [
"203.0.113.10"
]
}