Reseller API for agencies and proxy resellers
Create proxy plans for your clients, set their country and rotation, track their traffic, renew and export them, all over plain HTTP from your own systems. It is the basis for a white-label proxy offer sold under your brand and run on our network, with JSON going in and coming out.
How the reseller API works
With the Cheapest Proxies REST API, an approved reseller can run its client accounts from code: provision a proxy plan for each client, configure its targeting (country, rotation, protocol), check live usage, renew it and export the credentials your customers need. Responses always come back as JSON, and a single API key authenticates every call.
/plans/create, then manage it by its id.
GET /data shows what is left at any time.
Your first client plan in three steps
- Get approved, then copy your API key from the dashboard.
- Check which plans you can offer clients:
GET /catalog. - Create a plan and read back the credentials to pass on:
# Buy 5 GB of US residential and get gateway credentials back
curl -X POST https://cheapest-proxies.com/api/v1/YOUR_KEY/plans/create \
-d "type=residential" -d "gb=5" -d "country=United States" -d "protocol=HTTP"
Authenticating with your API key
Your API key is shown in the reseller dashboard, and the simplest way to send it is as part of the URL path:
https://cheapest-proxies.com/api/v1/{API_KEY}/{action}
Alternatively, send it as an X-API-Key header to /api/v1/index.php?action=…. Store the key as carefully as a company card number, because it can spend your wallet balance, and rotate it from the reseller hub whenever someone with access leaves the team.
Base URL, responses and currency
https://cheapest-proxies.com/api/v1/{API_KEY}/
A successful call returns HTTP 200 with { "status": "success", "data": { … } }. A failed one returns a 4xx or 5xx status, and the reason sits in errors[0].message. Every amount is stated in USD. Calls that change something (create/renew/config/ipauth/delete) use POST; calls that only read use GET.
Rate limits per key
Each key can make up to 60 requests/minute, and calls beyond that receive 429. If a large client base needs a higher limit, contact support.
GET/catalog
Every plan you can provision for a client, with its per-GB price.
curl https://cheapest-proxies.com/api/v1/YOUR_KEY/catalog
{ "status":"success", "data": { "plans": [
{ "plan_id":3, "name":"Residential", "type":"residential", "price_per_gb":3.99,
"currency":"USD", "min_gb":1, "max_gb":1000, "protocols":["HTTP","HTTPS","SOCKS5"] }
] } }
GET/locations
The countries on offer for a given proxy type.
| Parameter | Required | Description |
|---|---|---|
| type | No | One of residential (the default), datacenter, mobile or premium. |
curl "https://cheapest-proxies.com/api/v1/YOUR_KEY/locations?type=residential"
{ "status":"success", "data": { "type":"residential",
"countries":[ {"code":"us","name":"United States"}, {"code":"gb","name":"United Kingdom"} ], "total":2 } }
GET/plans
Lists every plan on your account, each with its connection credentials and configuration.
curl https://cheapest-proxies.com/api/v1/YOUR_KEY/plans
{ "status":"success", "data": { "items": [
{ "id":123, "type":"residential", "plan":"Residential", "status":"active",
"gb":5, "gb_limit":5, "gb_used":0.42, "created_at":"…", "expires_at":"…",
"connection": { "host":"cheapest-proxies.com", "port":823,
"username":"u_ab12__cr.us", "password":"…", "protocol":"HTTP" },
"config": { "countries":["us"], "exclude_countries":[], "rotation":0, "sticky":false, "protocol":"HTTP" } }
], "total":1 } }
GET/plans/get
Returns one plan together with its live usage.
| Parameter | Required | Description |
|---|---|---|
| id | Yes | The id of an existing plan. |
curl "https://cheapest-proxies.com/api/v1/YOUR_KEY/plans/get?id=123"
{ "status":"success", "data": { "id":123, …, "connection":{…},
"usage": { "gb_total":5, "gb_used":0.42, "gb_left":4.58, "source":"live" } } }
GET/plans/usage
The live traffic balance plus usage over time, handy for client reporting.
| Parameter | Required | Description |
|---|---|---|
| id | Yes | The id of an existing plan. |
| period | No | One of week, month (the default), 3months or 6months. |
curl "https://cheapest-proxies.com/api/v1/YOUR_KEY/plans/usage?id=123&period=month"
POST/plans/create
Creates a new plan (sub-user) for a client. The requested GB comes out of your reseller data balance, so top up in the dashboard first; if provisioning fails, the data goes back to your balance. The response includes the plan and its gateway credentials.
| Parameter | Required | Description |
|---|---|---|
| type | Yes* | Which proxy type to buy (residential, datacenter, mobile or premium). *Send either type or plan_id. |
| plan_id | Yes* | A plan id taken from /catalog; it takes priority over type. |
| gb | No | Bandwidth in GB, from 1 to 1000 (default 1). |
| country | No | A country name or ISO-2 code; defaults to United States. |
| protocol | No | HTTP (the default), HTTPS or SOCKS5, provided the plan supports it. |
curl -X POST https://cheapest-proxies.com/api/v1/YOUR_KEY/plans/create \
-d "type=residential" -d "gb=5" -d "country=United States" -d "protocol=HTTP"
{ "status":"success", "data": {
"plan": { "id":124, "type":"residential", "status":"active", "gb":5,
"connection": { "host":"…", "port":823, "username":"u_cd34", "password":"…", "protocol":"HTTP" }, … },
"pending": false, "data_used_gb": 5 } }
POST/plans/renew
Repurchases the same specification as a fresh gateway with a new term, paid from your wallet.
| Parameter | Required | Description |
|---|---|---|
| id | Yes | Id of the plan to buy again. |
curl -X POST https://cheapest-proxies.com/api/v1/YOUR_KEY/plans/renew -d "id=123"
POST/plans/config
Changes a plan's targeting, for example when a client moves into a new market. The change is saved and pushed to the network, and the response carries the updated connection, whose username encodes the targeting.
| Parameter | Required | Description |
|---|---|---|
| id | Yes | The id of an existing plan. |
| countries | No | ISO-2 codes to target, as an array, e.g. ["us","gb"]. |
| exclude_countries | No | ISO-2 codes to leave out, as an array. |
| rotation | No | Sticky-session length in minutes, 0–120; 0 rotates the IP on every request. |
| sticky | No | Set to true to hold one IP for the session. |
| session_id | No | Your own sticky session id, letters and digits only. |
| exclude_asn | No | ASNs to leave out, as an array. |
| anonymous | No | Set to true to apply the anonymity filter. |
| protocol | No | HTTP or SOCKS5. |
curl -X POST https://cheapest-proxies.com/api/v1/YOUR_KEY/plans/config \
-H "Content-Type: application/json" \
-d '{"id":123,"countries":["us"],"rotation":10,"sticky":true,"protocol":"HTTP"}'
POST/plans/ipauth
Lets up to 3 IPs, such as a client’s office addresses, use the gateway without a password.
| Parameter | Required | Description |
|---|---|---|
| id | Yes | The id of an existing plan. |
| whitelist | Yes | IPv4 addresses separated by commas or spaces, up to 3. |
curl -X POST https://cheapest-proxies.com/api/v1/YOUR_KEY/plans/ipauth -d "id=123" -d "whitelist=203.0.113.7"
POST/plans/delete
Cancels a plan, for instance when a client leaves, and releases its gateway upstream.
| Parameter | Required | Description |
|---|---|---|
| id | Yes | The id of an existing plan. |
curl -X POST https://cheapest-proxies.com/api/v1/YOUR_KEY/plans/delete -d "id=123"
GET/balance
Your wallet balance in money terms. Top it up from the dashboard and spend it on GB data.
curl https://cheapest-proxies.com/api/v1/YOUR_KEY/balance
{ "status":"success", "data": { "balance":12.50, "currency":"USD" } }
GET/data
Your reseller GB data balance: the stock that client plans are sold from. More can be bought in the reseller dashboard; each sub-user you provision draws it down.
curl https://cheapest-proxies.com/api/v1/YOUR_KEY/data
{ "status":"success", "data": { "available_gb":42.5, "purchased_gb":100, "allocated_gb":57.5 } }
Legacy per-IP endpoints
These endpoints work on older per-IP proxy rows rather than GB plans. They stay available so existing integrations keep running; anything new should be built on the plan endpoints above.
GET/list[/status] — lists per-IP proxies, optionally filtered by status (active|expired|disabled).
GET/export?format=txt|csv|json — exports active per-IP proxies; with txt you can pass template=%ip%:%port%:%login%:%password% (plus %protocol% %country%).
GET/prolong/calc?ids=&days= — quotes the cost of a per-IP renewal.
POST/prolong/make — renews per-IP proxies and charges the wallet (ids, days).
POST/comment — attaches a label, such as a client name, to per-IP proxies (ids, text).
Code examples for client delivery
Python: create a client plan and hand over its credentials
import requests
BASE = "https://cheapest-proxies.com/api/v1/YOUR_KEY"
# 1. Provision 5 GB of US residential for a customer
plan = requests.post(BASE + "/plans/create",
data={"type": "residential", "gb": 5, "country": "United States"}).json()["data"]["plan"]
c = plan["connection"]
# 2. Hand the customer their proxy string
print(f"{c['host']}:{c['port']}:{c['username']}:{c['password']}")
# 3. Later: retarget to the UK with a 10-min sticky session
requests.post(BASE + "/plans/config", json={"id": plan["id"], "countries": ["gb"], "sticky": True, "rotation": 10})
# 4. Check how much bandwidth they've used
print(requests.get(BASE + "/plans/usage", params={"id": plan["id"]}).json()["data"]["balance"])
Node.js
const BASE = 'https://cheapest-proxies.com/api/v1/YOUR_KEY';
const plan = await fetch(BASE + '/plans/create', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ type: 'residential', gb: 5, country: 'United States' })
}).then(r => r.json());
console.log(plan.data.plan.connection);
PHP
<?php $base = 'https://cheapest-proxies.com/api/v1/YOUR_KEY'; $plans = json_decode(file_get_contents($base . '/plans'), true); print_r($plans['data']['items']);
Error codes and what they mean
Every error also carries a readable explanation in errors[0].message.
| HTTP | Meaning |
|---|---|
| 200 | Success |
| 400 | A parameter is missing or invalid (for example, no id) |
| 401 | The API key is missing, malformed or wrong |
| 402 | Not enough wallet balance |
| 403 | Reseller API access has not been approved for this account |
| 404 | No such plan or resource, or an unknown action |
| 405 | Wrong HTTP method; writes need POST |
| 422 | Unrecognised plan or type, or an invalid body |
| 429 | Over the rate limit of 60/minute |
| 502 | The upstream network refused the request; nothing was charged |
Webhooks: not available yet
Event notifications, such as plan expiry and low-balance warnings, are planned but not live. If your client setup depends on them today, contact support.
Start reselling under your own brand
Once the reseller program approves your account, the API key is waiting in your dashboard within minutes.
Get my API key