ProxyWorld

Developer API for IP plans

A small REST API with JSON answers: read plans, countries and exact prices without a key, and check credit and buy plans with your API key. Every answer has ok: true or false.

Base URL
https://proxyworld.cc/api/v1
Authentication
Authorization: Bearer pwk_...
Format
JSON over HTTPS
Limit
300 requests per minute per key

Endpoints

MethodPathKeyWhat it does
GET/plansNoAll plans with unit price per 30 days, volume prices, minimum and maximum quantity and allowed countries.
GET/countriesNoThe 24 countries with region line, cities and cloud availability.
GET/price?plan=rotate-max&quantity=2&days=90NoExact total for a plan, quantity and period (30, 90, 180 or 360 days).
GET/balanceYesCredit on the account in US dollars.
POST/ordersYesBuy a plan from credit. Body: plan, quantity, days, country (for plans that take one).
GET/ordersYesYour last 100 orders with status and access details.
GET/orders/{id}YesOne order by its code (PO-...).

Examples

cURL

curl -s https://proxyworld.cc/api/v1/price?plan=static-ip\&quantity=10\&days=30

curl -s -X POST https://proxyworld.cc/api/v1/orders \
  -H "Authorization: Bearer pwk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"plan":"static-ip","quantity":10,"days":30,"country":"DE"}'

Python

import requests
KEY = "pwk_YOUR_KEY"
r = requests.post("https://proxyworld.cc/api/v1/orders",
    headers={"Authorization": f"Bearer {KEY}"},
    json={"plan": "rotate-max", "quantity": 2, "days": 90})
print(r.status_code, r.json())

Node.js

const r = await fetch("https://proxyworld.cc/api/v1/orders", {
  method: "POST",
  headers: { Authorization: "Bearer pwk_YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ plan: "cloud-pc-b", quantity: 2, days: 30, country: "NL" }),
});
console.log(r.status, await r.json());

Answer to POST /orders

{
  "ok": true,
  "order": {
    "id": "PO-7KQ2M9XHTA",
    "product": "static",
    "plan": "static-ip",
    "quantity": 10,
    "days": 30,
    "country": "DE",
    "price": "40.20",
    "status": "processing",
    "status_text": "Setting up",
    "created_at": "2026-11-05T09:00:00.000Z",
    "active_at": null,
    "ends_at": null,
    "access": null
  }
}

A new order starts as processing and becomes active when the service is ready; access then holds the login code (app plans), the proxy list and user (proxy plans) or the Remote Desktop addresses (cloud PCs). Poll GET /orders/{id} every few seconds until it changes.

Errors

HTTPerrorMeaning
400bad_plan, bad_qty, bad_days, bad_countryThe request is checked before anything is charged.
401unauthorizedSend the header Authorization: Bearer pwk_...
402fundsCredit is lower than the price; the answer includes need, the missing amount. Nothing is charged.
429rate_limitedMore than 300 requests in a minute on one key.
503networkThe service could not be set up right now; nothing is charged. Try again later.

Create or replace your key in the console under API. The key is shown once and stored only as a hash; replacing it stops the old key at once.

Proxy and IP API: Plans, Prices, Orders and Balance (REST)