AuraProxies API
Check your balance, buy plans and generate proxy lists from your own code. JSON over HTTPS, authenticated with an API key.
- Base URL
- https://auraproxies.net/api/v1
- Auth
- Bearer API key
- Rate limit
- 120 requests / minute / key
- Money
- Integers in US cents
Quickstart
- Create a key on the API Keys page of your dashboard. Copy it — it's only shown once.
- Send it as a bearer token with every request.
- Top up your balance in the dashboard; API orders are paid from it.
curl https://auraproxies.net/api/v1/account \
-H "Authorization: Bearer pk_your_api_key"{ "email": "[email protected]", "balanceCents": 4250, "currency": "USD" }All money amounts are integers in US cents (4250 = $42.50). Dates are ISO 8601 in UTC.
Authentication
Base URL: https://auraproxies.net/api/v1. Send your key in the Authorization header on every request. Requests without a valid key get 401.
Authorization: Bearer pk_your_api_keyFull-access keys can do everything, including placing orders. Read-only keys can view your account, plans and generate proxy lists but can't spend balance — use them for dashboards and monitoring.
Keep keys on your server. Never put them in browser code or public repositories. If a key leaks, delete it on the API Keys page — it stops working immediately.
Errors & rate limits
Errors always have this shape, with a stable code you can branch on:
{ "error": { "code": "insufficient_balance", "message": "Insufficient balance. Please top up your account." } }| Name | Type | Description |
|---|---|---|
| 400 invalid_request | Bad parameters or JSON body. The message names the field. | |
| 401 unauthorized | Missing, malformed, revoked or expired key. | |
| 402 insufficient_balance | Not enough balance for the order. | |
| 403 insufficient_scope | A read-only key tried to place an order. | |
| 403 email_unverified | Confirm the account's email address in the dashboard before buying. | |
| 403 account_disabled | The account is suspended. | |
| 404 not_found / product_unavailable | Unknown plan, or product not on sale. | |
| 409 plan_inactive | The plan has expired. | |
| 409 not_metered | Data top-up was requested for an unlimited (time-based) plan. | |
| 429 rate_limited | Too many requests. Wait until Retry-After seconds have passed. | |
| 502 provisioning_failed | The plan couldn't be set up. Your balance was refunded automatically. | |
| 500 internal_error | Something went wrong on our side. Safe to retry with the same Idempotency-Key. |
Each key can make 120 requests per minute. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix seconds).
Account
Your email and current balance.
{ "email": "[email protected]", "balanceCents": 4250, "currency": "USD" }Products
Everything on sale, with the exact prices orders are charged.
billingUnit: "GB"— buy anyquantityof GB betweenminQuantityandmaxQuantity.volumeTierslower the per-GB price for bigger orders.billingUnit: "DURATION"— unlimited-traffic plans sold as fixedpackages;quantitymust equal one package'shours.
{
"products": [
{
"slug": "residential",
"type": "RESIDENTIAL",
"name": "Residential",
"billingUnit": "GB",
"basePriceCents": 300,
"minQuantity": 1,
"maxQuantity": 1000,
"volumeTiers": [{ "minQty": 50, "priceCents": 250 }],
"packages": []
}
]
}Orders
Buy a plan, paid from your balance. On success you get the order and the new plan's credentials straight away.
| Name | Type | Description |
|---|---|---|
| productSlug | string | Required. From GET /products. |
| quantity | integer | Required. GB for per-GB products; package hours for unlimited plans. |
| couponCode | string | Optional discount code. |
Always send an Idempotency-Key header with a unique value per purchase (a UUID is ideal). If your request times out and you retry with the same key, you get the original order back — with "replayed": true — instead of being charged twice.
curl -X POST https://auraproxies.net/api/v1/orders \
-H "Authorization: Bearer pk_your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f1c2b9e-0d4a-4c1e-9a43-2b7d1f0c8e55" \
-d '{ "productSlug": "residential", "quantity": 10 }'{
"order": { "id": "cm1x...", "status": "ACTIVE", "totalCents": 3000, "discountCents": 0 },
"plan": {
"planId": "cm1y...",
"username": "u12345",
"password": "s3cr3t",
"host": "us.gate.auraproxies.net",
"httpPort": 13337,
"socksPort": 13337,
"expiresAt": null
},
"replayed": false
}Your orders, newest first. limit is 1–100 (default 50). Statuses: ACTIVE, EXPIRED, FAILED, REFUNDED, PROVISIONING.
Plans
Your proxy plans with credentials, gateway and usage. status is optional (active or expired).
{
"plans": [
{
"id": "cm1y...",
"label": "Residential — 10 GB",
"product": "RESIDENTIAL",
"status": "active",
"username": "u12345",
"password": "s3cr3t",
"gateway": { "host": "us.gate.auraproxies.net", "httpPort": 13337, "socksPort": 13337 },
"bandwidthBytes": 10737418240,
"usedBytes": 1288490188,
"usageUpdatedAt": "2026-10-15T09:20:00.000Z",
"expiresAt": null,
"createdAt": "2026-10-01T12:00:00.000Z"
}
]
}bandwidthBytes is 0 for unlimited (time-based) plans. Usage is refreshed every few minutes; usageUpdatedAt says when.
Add data to a per-GB plan, paid from your balance. The username and password don't change, so your tools keep working. Priced like a new order of the same product (volume discounts apply to the GB you add). Send an Idempotency-Key header, just like for orders.
| Name | Type | Description |
|---|---|---|
| gb | integer | Required. GB to add (1 up to the product's maximum). |
curl -X POST https://auraproxies.net/api/v1/plans/cm1y.../topup \
-H "Authorization: Bearer pk_your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 0b8e6c1a-refill-2026-10-15" \
-d '{ "gb": 25 }'{
"order": { "id": "cm2a...", "status": "ACTIVE", "totalCents": 6250 },
"plan": { "id": "cm1y...", "bandwidthBytes": 37580963840, "usedBytes": 1288490188 },
"replayed": false
}Unlimited plans can't be topped up (409 not_metered) — buy a new package instead. A typical auto-refill script polls GET /plans and tops up when usedBytes gets close to bandwidthBytes.
Generate proxies
Build a ready-to-use proxy list for one of your plans. Free and unlimited — it doesn't use balance.
| Name | Type | Description |
|---|---|---|
| count | 1–1000 | How many lines. Default 10. |
| country | string | Residential and Mobile only: 2-letter exit country (e.g. DE). Omit for a random country. |
| location | us | eu | sg | Which gateway to connect through. Sets the exit for Shared ISP and Datacenter (us or eu only); for Residential and Mobile, pick the one nearest your servers. Default us. |
| session | rotating | sticky | rotating = new IP per request (default); sticky = keep one IP per line. Datacenter plans always rotate. |
| ttl | 1–1440 | Sticky session length in minutes. Default 10. |
| protocol | http | socks5 | Which scheme to connect with (both use the same port). Default http. |
| format | host:port:user:pass | user:pass@host:port | Line format. Default host:port:user:pass. |
| output | json | text | text returns one proxy per line (handy for tools that read a file). |
curl "https://auraproxies.net/api/v1/plans/cm1y.../proxies?count=3&country=US&session=sticky&ttl=30&output=text" \
-H "Authorization: Bearer pk_your_api_key"us.gate.auraproxies.net:13337:u12345-country-us-session-k2j9x0aq-ttl-30:s3cr3t
us.gate.auraproxies.net:13337:u12345-country-us-session-p0d7m3re-ttl-30:s3cr3t
us.gate.auraproxies.net:13337:u12345-country-us-session-z81wq5nc-ttl-30:s3cr3tCode examples
Buy 10 GB if the balance allows, then fetch 50 rotating US proxies.
import uuid, requests
API = "https://auraproxies.net/api/v1"
H = {"Authorization": "Bearer pk_your_api_key"}
balance = requests.get(f"{API}/account", headers=H).json()["balanceCents"]
if balance >= 3000:
r = requests.post(
f"{API}/orders",
headers={**H, "Idempotency-Key": str(uuid.uuid4())},
json={"productSlug": "residential", "quantity": 10},
)
r.raise_for_status()
plan_id = r.json()["plan"]["planId"]
proxies = requests.get(
f"{API}/plans/{plan_id}/proxies",
headers=H,
params={"count": 50, "country": "US"},
).json()["proxies"]
print("\n".join(proxies))import { randomUUID } from "node:crypto";
const API = "https://auraproxies.net/api/v1";
const H = { Authorization: "Bearer pk_your_api_key" };
const { balanceCents } = await (await fetch(`${API}/account`, { headers: H })).json();
if (balanceCents >= 3000) {
const res = await fetch(`${API}/orders`, {
method: "POST",
headers: { ...H, "Content-Type": "application/json", "Idempotency-Key": randomUUID() },
body: JSON.stringify({ productSlug: "residential", quantity: 10 }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const { plan } = await res.json();
const list = await fetch(`${API}/plans/${plan.planId}/proxies?count=50&country=US`, { headers: H });
console.log((await list.json()).proxies.join("\n"));
}Questions? Email [email protected] or open a ticket from your dashboard.