NodeProxies
API Reference
The NodeProxies REST API lets you manage your account, retrieve plan details and credentials, check your balance, view transaction history, and create top-up payments.
All endpoints are at https://nodeproxies.xyz/api and require a Bearer token.
Token auth
Bearer token on every request
JSON responses
All responses are JSON
REST
Standard HTTP methods
Authentication
Include your API token in the Authorization header on every request. Find your token in the dashboard under Account Settings.
Authorization: Bearer YOUR_API_TOKEN
Base URL
https://nodeproxies.xyz/api
Balance
/api/balanceGet your current account balanceRequest
curl https://nodeproxies.xyz/api/balance \ -H "Authorization: Bearer YOUR_API_TOKEN"
Response
{
"balance": 24.50
}| Field | Type | Description |
|---|---|---|
| balance | number | Current balance in USD |
List Plans
/api/plansList all active plans on your accountRequest
curl https://nodeproxies.xyz/api/plans \ -H "Authorization: Bearer YOUR_API_TOKEN"
Response
[
{
"id": "uuid",
"plan_type": "residential",
"amount_gb": 10,
"used_gb": 1.23,
"status": "active",
"expires_at": "2026-05-08T00:00:00Z",
"created_at": "2026-04-08T12:00:00Z"
}
]| Field | Type | Description |
|---|---|---|
| id | string | Unique plan UUID |
| plan_type | string | residential, datacenter, mobile, or unlimited |
| amount_gb | number | Total GB allocated |
| used_gb | number | GB consumed so far |
| status | string | active or expired |
| expires_at | string | ISO 8601 expiry timestamp |
Get Plan & Credentials
/api/plans/:idGet a specific plan including proxy credentialsRequest
curl https://nodeproxies.xyz/api/plans/PLAN_UUID \ -H "Authorization: Bearer YOUR_API_TOKEN"
Response
{
"plan_id": "uuid",
"username": "user_abc123",
"password": "pass_xyz789",
"plan_type": "residential",
"max_bytes": 10737418240,
"used_bytes": 1320000000,
"enabled": true,
"active": true,
"last_used": "2026-04-08T10:30:00Z"
}| Field | Type | Description |
|---|---|---|
| plan_id | string | Plan UUID |
| username | string | Proxy username for this plan |
| password | string | Proxy password for this plan |
| max_bytes | number | Total allocated bandwidth in bytes |
| used_bytes | number | Bandwidth consumed in bytes |
| enabled | boolean | Whether this plan is currently usable |
username and password from this response to authenticate your proxy connections.Purchase Plan
/api/plans/purchasePurchase a new proxy plan using your account balanceRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
| plan_type | string | Yes | Type of plan: 'residential', 'mobile', 'datacenter', 'unlimited_datacenter', or 'unlimited_residential' |
| amount | number | Conditional | Bandwidth amount. Required for data-based plans (residential, mobile, datacenter) |
| unit | string | Conditional | Bandwidth unit: 'MB' or 'GB'. Required for data-based plans (min 1 GB or 100 MB) |
| bandwidth_mb | number | No | Alternative explicit bandwidth allocation in megabytes |
| time_hours | number | Conditional | Duration in hours. Required for time-based plans or adding duration |
| duration_days | number | No | Alternative plan duration in days |
| expires_at | string | No | Explicit ISO 8601 expiry timestamp |
| promocode | string | No | Optional promo code to apply to the purchase |
Request (Data-based Plan)
curl -X POST https://nodeproxies.xyz/api/plans/purchase \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan_type": "residential",
"amount": 10,
"unit": "GB",
"promocode": "WELCOME10"
}'Request (Time-based Plan)
curl -X POST https://nodeproxies.xyz/api/plans/purchase \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan_type": "unlimited_residential",
"time_hours": 24,
"timeUnit": "daily"
}'Response
{
"success": true,
"plan": {
"id": "uuid",
"plan_id": "PLAN_SHORT_ID",
"username": "proxy_user_123",
"password": "proxy_password_abc",
"plan_type": "residential",
"amount_gb": 10,
"amount_mb": 0,
"time_hours": 0,
"status": "active",
"enabled": true,
"active": true,
"created_at": "2026-07-01T17:00:00Z"
},
"charged": 18.00,
"subtotal": 20.00,
"discount": 2.00,
"new_balance": 32.00
}Update / Top Up Plan
/api/plans/updateAdd additional bandwidth or extend duration on an existing proxy planRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
| plan_id | string | Yes | The UUID of the plan to update/top up |
| update_type | string | Yes | Type of update: 'bandwidth' (to add GB data) or 'time' (to extend hours) |
| add_amount | number | Yes | The quantity to add (e.g., 5 for 5 GB bandwidth or 24 for 24 hours of time) |
Request Example (Add Bandwidth)
curl -X POST https://nodeproxies.xyz/api/plans/update \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "PLAN_UUID_HERE",
"update_type": "bandwidth",
"add_amount": 5
}'Request Example (Extend Time)
curl -X POST https://nodeproxies.xyz/api/plans/update \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "PLAN_UUID_HERE",
"update_type": "time",
"add_amount": 72
}'Response
{
"success": true,
"message": "Plan updated successfully",
"charged": 2.50,
"new_balance": 47.50,
"updated_field": "amount_gb",
"new_value": 15
}Reset Proxy Password
/api/plans/reset-passwordReset or customize the proxy authentication password for a planRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
| plan_id | string | Yes | The ID of the plan to reset password for |
| new_password | string | No | Optional custom password. If omitted, a secure random password is generated |
Request Example
curl -X POST https://nodeproxies.xyz/api/plans/reset-password \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "PLAN_ID_HERE",
"new_password": "MyCustomSecretPass123"
}'Response
{
"success": true,
"newPassword": "MyCustomSecretPass123"
}Transactions
/api/transactionsList account transactions with optional filtersQuery Parameters
| Parameter | Type | Description |
|---|---|---|
| type | string | topup or plan_purchase |
| status | string | completed, pending, or failed |
| timeFilter | string | daily, weekly, or yearly |
| limit | number | Max results (default 50) |
| offset | number | Pagination offset (default 0) |
Request
curl "https://nodeproxies.xyz/api/transactions?limit=10&type=topup" \ -H "Authorization: Bearer YOUR_API_TOKEN"
Response
{
"transactions": [
{
"id": "uuid",
"type": "topup",
"amount": 10.00,
"status": "completed",
"description": "Balance top-up via Stripe",
"created_at": "2026-04-08T12:00:00Z"
}
],
"total": 42
}Countries
/api/countriesList all available countries per proxy typeRequest
curl https://nodeproxies.xyz/api/countries \ -H "Authorization: Bearer YOUR_API_TOKEN"
Response
{
"residential": ["us", "gb", "de", "fr", ...],
"datacenter": ["us", "gb", "de", ...],
"mobile": ["us", "gb", ...],
"unlimited": ["us", "gb", ...]
}Create Payment
/api/paymentsCreate a balance top-up checkout sessionRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
| amount | number | Yes | USD amount. Min $1 (crypto) or $3 (card). Max $1000 |
| method | string | Yes | "stripe" or "crypto" |
Request
curl -X POST https://nodeproxies.xyz/api/payments \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"amount": 20, "method": "stripe"}'Response — Stripe
{
"url": "https://checkout.stripe.com/...",
"sessionId": "cs_live_..."
}Response — Crypto
{
"url": "https://pay.cryptomus.com/...",
"orderId": "uuid"
}url to complete payment. Balance is credited automatically via webhook on confirmation.Dedicated ISP Packages & Stock
/api/isp/packagesList all available dedicated ISP location packages and real-time inventoryRequest
curl https://nodeproxies.xyz/api/isp/packages \ -H "Authorization: Bearer YOUR_API_TOKEN"
Response
[
{
"id": "4d616e76-5594-4876-8af0-35f464cc5b6d",
"package_name": "US Ashburn Dedicated ISP",
"country": "US Ashburn",
"monthlyPrice": 1.59,
"in_stock": 142
}
]Deploy Dedicated ISP Proxies
/api/isp/purchaseDeploy custom dedicated ISP proxies with custom duration, protocol, and authenticationRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
| package_id | string | Yes | The ISP package ID from /api/isp/packages |
| expiry_days | number | No | Duration in days (default: 30) |
| quantity | number | No | Number of dedicated IP addresses (default: 1) |
| custom_username | string | No | Optional custom username for proxy authentication |
| socks | boolean | No | Enable SOCKS5 & UDP protocol support (default: false) |
| ip_auth | boolean | No | Enable IP Whitelist authentication mode (default: false) |
| ips_allowed | array | No | Array of client IPv4 addresses for IP whitelist auth |
Request Example
curl -X POST https://nodeproxies.xyz/api/isp/purchase \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"package_id": "4d616e76-5594-4876-8af0-35f464cc5b6d",
"expiry_days": 30,
"quantity": 1,
"socks": true
}'Response
{
"success": true,
"plan": {
"id": "isp_1787495435349_z6r9k",
"plan_type": "isp",
"country_code": "US Ashburn",
"proxy_list": ["192.168.1.1:8080:user:pass"],
"expires_at": "2026-09-23T12:00:00Z"
},
"totalCost": 1.59,
"newBalance": 3298.41
}Renew Dedicated ISP Plan
/api/isp/renewExtend duration / renew an active dedicated ISP proxy planRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
| plan_id | string | Yes | The ID of the dedicated ISP plan |
| expiry_days | number | No | Number of extension days to add (default: 30) |
Request Example
curl -X POST https://nodeproxies.xyz/api/isp/renew \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "isp_1787495435349_z6r9k",
"expiry_days": 30
}'Response
{
"success": true,
"expiresAt": "2026-10-23T12:00:00Z",
"newBalance": 3296.82
}Rotate ISP Subnet IP (Free)
/api/isp/rotateInstant 1-click IP subnet swap for dedicated ISP proxy lines (100% Free)Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| plan_id | string | Yes | The ID of the dedicated ISP plan |
Request Example
curl -X PATCH https://nodeproxies.xyz/api/isp/rotate \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "plan_id": "isp_1787495435349_z6r9k" }'Response
{
"success": true,
"message": "Subnet IP rotated successfully",
"plan": {
"id": "isp_1787495435349_z6r9k",
"proxy_list": ["198.51.100.42:8080:user:pass"]
}
}IP Whitelist Management
/api/isp/whitelistUpdate allowed client IP whitelist for IP-authenticated plansRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
| plan_id | string | Yes | The ID of the plan |
| ips_allowed | array | Yes | Array of IPv4 addresses allowed to connect |
Request Example
curl -X PATCH https://nodeproxies.xyz/api/isp/whitelist \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "isp_1787495435349_z6r9k",
"ips_allowed": ["198.51.100.10", "203.0.113.5"]
}'Response (Success)
{
"success": true,
"plan": {
"id": "isp_1787495435349_z6r9k",
"whitelisted_ips": ["198.51.100.10", "203.0.113.5"]
}
}Error Response (User/Pass ISP Proxies — HTTP 400)
{
"error": "This dedicated ISP proxy was created in User/Pass authentication mode. Upstream ISP proxies lock authentication mode at creation time. To use IP authentication, enter allowed IPs during initial purchase."
}ip_auth: true and ips_allowed during initial deployment via POST /api/isp/purchase.Proxy Connection
Use the username and password from GET /api/plans/:id to connect. Port is 8080.
| Gateway | Region | Port |
|---|---|---|
global.nodeproxies.xyz | Auto — recommended | 8080 |
eu-1.nodeproxies.xyz | Europe 1 | 8080 |
eu-2.nodeproxies.xyz | Europe 2 | 8080 |
na.nodeproxies.xyz | North America | 8080 |
curl -x "http://USERNAME:[email protected]:8080" "https://httpbin.org/ip"
import requests
proxies = {
"http": "http://USERNAME:[email protected]:8080",
"https": "http://USERNAME:[email protected]:8080",
}
r = requests.get("https://httpbin.org/ip", proxies=proxies)
print(r.json())Geo Targeting
Append targeting flags to your proxy username using hyphens.
| Syntax | Example | Effect |
|---|---|---|
| -country-{cc} | -country-us | Route through a US exit IP |
| -city-{city} | -city-newyork | Route through a specific city |
| -type-mobile | -type-mobile | Use mobile carrier IPs |
| -country-{cc}-city-{city} | -country-gb-city-london | Country + city combined |
# US exit IP curl -x "http://USERNAME-country-us:[email protected]:8080" https://httpbin.org/ip # Germany, mobile curl -x "http://USERNAME-country-de-type-mobile:[email protected]:8080" https://httpbin.org/ip
Sticky Sessions
Append -session-{key} to your username to pin all requests with that key to the same exit IP for ~10 minutes.
# Same exit IP for all requests with session-order123 curl -x "http://USERNAME-session-order123:[email protected]:8080" https://httpbin.org/ip # Combine with country curl -x "http://USERNAME-country-us-session-order123:[email protected]:8080" https://httpbin.org/ip
Error Codes
All API errors return JSON with an error field.
{ "error": "Invalid token" }| Status | Meaning | Common Cause |
|---|---|---|
| 400 | Bad Request | Missing or invalid parameters |
| 401 | Unauthorized | Missing or invalid API token |
| 403 | Forbidden | Account banned |
| 404 | Not Found | Resource doesn't exist or belongs to another user |
| 429 | Too Many Requests | Rate limit hit (3 req/min for payments) |
| 500 | Internal Server Error | Unexpected error — try again |
Need help?
Support responds quickly.
