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
| Method | Path | Key | What it does |
|---|---|---|---|
| GET | /plans | No | All plans with unit price per 30 days, volume prices, minimum and maximum quantity and allowed countries. |
| GET | /countries | No | The 24 countries with region line, cities and cloud availability. |
| GET | /price?plan=rotate-max&quantity=2&days=90 | No | Exact total for a plan, quantity and period (30, 90, 180 or 360 days). |
| GET | /balance | Yes | Credit on the account in US dollars. |
| POST | /orders | Yes | Buy a plan from credit. Body: plan, quantity, days, country (for plans that take one). |
| GET | /orders | Yes | Your last 100 orders with status and access details. |
| GET | /orders/{id} | Yes | One 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
| HTTP | error | Meaning |
|---|---|---|
| 400 | bad_plan, bad_qty, bad_days, bad_country | The request is checked before anything is charged. |
| 401 | unauthorized | Send the header Authorization: Bearer pwk_... |
| 402 | funds | Credit is lower than the price; the answer includes need, the missing amount. Nothing is charged. |
| 429 | rate_limited | More than 300 requests in a minute on one key. |
| 503 | network | The 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.