ProxyWing LogoProxyWing
Browse endpoints

ProxyWing Developer API

Datacenter

Order, list, extend, rotate credentials and whitelist IPs for datacenter proxies.

GET/datacenter/products

List datacenter products

Returns the datacenter proxy products available for purchase, with per-location pricing.

Auth · Bearer
RequestGET /datacenter/products
curl -X GET "https://api.proxywing.com/v1/datacenter/products" \
  -H "Authorization: Bearer pk_live_XXXXXXXX"
Response200 · application/json
{
  "products": [
    {
      "product_id": "dcprod_3",
      "location": "UK",
      "quantity": 1,
      "price_monthly": 1.8
    }
  ]
}
POST/datacenter/orders

Order a datacenter proxy

Purchases a datacenter proxy product using the account balance and provisions it immediately. 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 of a timed-out request never double-charge the account. The order_id in the response is the id you use on every later call for this resource, and it is only known once the order provisions — it is null while the order is still awaiting_payment. Pay the invoice, then either re-read the response of a balance-settled order or poll the relevant list endpoint to pick the resource up. Idempotency-Key is REQUIRED on this endpoint — omitting it returns 400 and nothing is charged.

Auth · BearerIdempotency-Key

Body parameters

  • product_idstringrequired

    The product to order, from GET /datacenter/products.

  • billing_cyclestringoptional

    Billing 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_codestringoptional

    Optional promo code. Only percentage-discount promo codes under 100% off apply via the API (a code that would zero the total is rejected).

RequestPOST /datacenter/orders
curl -X POST "https://api.proxywing.com/v1/datacenter/orders" \
  -H "Authorization: Bearer pk_live_XXXXXXXX" \
  -H "Idempotency-Key: b3f2a1c4-7e9d-4a2b-8c6f-1d5e9a0b3c7f" \
  -H "Content-Type: application/json" \
  -d '{"product_id":"dcprod_3","billing_cycle":"annually"}'
Response200 · application/json
{
  "order_id": "ord_3JO0ArTC2d2keb5YTlom",
  "invoice_id": "inv_200001",
  "product_id": "dcprod_3",
  "billing_cycle": "annually",
  "total": 19.44,
  "status": "paid"
}
GET/datacenter/orders/{ord_id}/renewal-options

Get renewal terms

Returns the extension terms available for an order — 1, 3, 6 and 12 months — each with its price. Longer terms use the product's discounted per-cycle pricing, so 3/6/12 months cost less than the monthly price times the number of months. Pass one of these months values as cycle to the extend endpoint. Only MONTHLY services can be priced here; a non-monthly service currently surfaces as a 500 rather than a clean 4xx.

Auth · Bearer

Path parameters

  • ord_idstringrequired

    The order id, e.g. ord_100001, from GET /datacenter/proxies.

RequestGET /datacenter/orders/{ord_id}/renewal-options
curl -X GET "https://api.proxywing.com/v1/datacenter/orders/{ord_id}/renewal-options" \
  -H "Authorization: Bearer pk_live_XXXXXXXX"
Response200 · application/json
{
  "order_id": "ord_100001",
  "next_due_date": "2026-09-02",
  "options": [
    {
      "months": 1,
      "total": 1.8,
      "label": "1 Month",
      "discount_pct": 0
    },
    {
      "months": 3,
      "total": 5.15,
      "label": "3 Months",
      "discount_pct": 5
    },
    {
      "months": 6,
      "total": 10.05,
      "label": "6 Months",
      "discount_pct": 7
    },
    {
      "months": 12,
      "total": 19.44,
      "label": "12 Months",
      "discount_pct": 10
    }
  ]
}
POST/datacenter/orders/{ord_id}/extend

Extend a datacenter order

Generates a renewal invoice for the order's underlying service and settles it from the account balance. On payment the service's next due date and the proxy expiry advance by cycle months — status is "paid" and next_due_date confirms the new due date. Longer terms are billed at the product's discounted per-cycle price (see GET /datacenter/orders/{ord_id}/renewal-options). If the balance can't cover total, the invoice is left open and status is "awaiting_payment"; top up and repeat the call to settle the same invoice (a second one is never stacked). 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.

Auth · BearerIdempotency-Key

Path parameters

  • ord_idstringrequired

    The order id to extend, e.g. ord_100001.

Body parameters

  • cycleintegerrequired

    Term to extend by, in months: 1, 3, 6 or 12. See GET /renewal-options for the price of each.

  • cycle_typestringrequired

    Must be "monthly" — the only supported cycle unit.

RequestPOST /datacenter/orders/{ord_id}/extend
curl -X POST "https://api.proxywing.com/v1/datacenter/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"}'
Response200 · application/json
{
  "order_id": "ord_100001",
  "invoice_id": "inv_200002",
  "status": "paid",
  "total": 5.15,
  "next_due_date": "2026-12-02"
}
GET/datacenter/proxies

List datacenter proxies

Returns every datacenter order on the account along with the live proxy credentials for each. 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.

Auth · Bearer
RequestGET /datacenter/proxies
curl -X GET "https://api.proxywing.com/v1/datacenter/proxies" \
  -H "Authorization: Bearer pk_live_XXXXXXXX"
Response200 · application/json
{
  "orders": [
    {
      "id": "ord_100001",
      "location": "UK",
      "status": "active",
      "expires_at": "2026-08-02T10:14:00",
      "proxies": [
        {
          "id": "prx_8fJ2Wm4Qx1Pv7Ra0Ub9c",
          "ip": "203.0.113.60",
          "http_port": 47668,
          "socks_port": 47669,
          "username": "SAMPLEU1",
          "password": "sample_password",
          "location": "UK",
          "expires_at": "2026-08-02T10:14:00"
        }
      ]
    }
  ]
}
POST/datacenter/orders/{ord_id}/change-password

Change a proxy's password

Rotates the proxy authentication password for an order. Existing sessions using the old password stop working immediately.

Auth · Bearer

Path parameters

  • ord_idstringrequired

    The order id whose proxy password to rotate.

RequestPOST /datacenter/orders/{ord_id}/change-password
curl -X POST "https://api.proxywing.com/v1/datacenter/orders/{ord_id}/change-password" \
  -H "Authorization: Bearer pk_live_XXXXXXXX"
Response200 · application/json
{
  "status": "password_changed"
}
GET/datacenter/orders/{ord_id}/whitelist

List whitelisted IPs

Returns the IPs currently whitelisted on a datacenter order (IPs allowed to use the proxies without a username/password).

Auth · Bearer

Path parameters

  • ord_idstringrequired

    The order id, from GET /datacenter/proxies.

RequestGET /datacenter/orders/{ord_id}/whitelist
curl -X GET "https://api.proxywing.com/v1/datacenter/orders/{ord_id}/whitelist" \
  -H "Authorization: Bearer pk_live_XXXXXXXX"
Response200 · application/json
{
  "order_id": "ord_100001",
  "ips": [
    "203.0.113.9",
    "203.0.113.10"
  ]
}
POST/datacenter/orders/{ord_id}/whitelist

Whitelist an IP

Adds an IP address to the order's whitelist, allowing IP-authenticated access without a username/password.

Auth · Bearer

Path parameters

  • ord_idstringrequired

    The order id to whitelist the IP on.

Body parameters

  • ipstringrequired

    IPv4 or IPv6 address to whitelist, e.g. 203.0.113.9.

RequestPOST /datacenter/orders/{ord_id}/whitelist
curl -X POST "https://api.proxywing.com/v1/datacenter/orders/{ord_id}/whitelist" \
  -H "Authorization: Bearer pk_live_XXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{"ip":"203.0.113.9"}'
Response200 · application/json
{
  "status": "whitelisted",
  "ip": "203.0.113.9"
}
DELETE/datacenter/orders/{ord_id}/whitelist/{ip}

Remove a whitelisted IP

Removes an IP from the datacenter 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.

Auth · Bearer

Path parameters

  • ord_idstringrequired

    The order id, from GET /datacenter/proxies.

  • ipstringrequired

    The whitelisted IP to remove, e.g. 203.0.113.9.

RequestDELETE /datacenter/orders/{ord_id}/whitelist/{ip}
curl -X DELETE "https://api.proxywing.com/v1/datacenter/orders/{ord_id}/whitelist/{ip}" \
  -H "Authorization: Bearer pk_live_XXXXXXXX"
Response200 · application/json
{
  "order_id": "ord_100001",
  "ips": [
    "203.0.113.10"
  ]
}