# REST API overview
Source: https://proxuno.com/docs/api
Updated: 2026-10-01

REST API

Base URL, authentication, versioning policy, rate limits, conventions and the complete endpoint list of the Proxuno REST API v1.

Updated 1 Oct 2026 3 min read API v1

### On this page

- [Base URL](#base-url)
- [Authentication](#authentication)
- [Conventions](#conventions)
- [Endpoints](#endpoints)
- [Rate limits](#rate-limits)
- [A first call](#a-first-call)
- [Changes to v1](#changes-to-v1)
- [Public catalogue feed](#public-catalogue-feed)

The REST API exposes everything you need to run proxies from code: list and configure proxies, rotate mobile IPs, read usage, generate residential endpoints and read your orders. Purchases and top-ups stay in the dashboard: there is no endpoint to create a purchase or a crypto invoice.

The public API uses version **v1**. Changes are additive only: new endpoints, new optional parameters and new response fields can appear; existing fields are never removed, renamed or retyped within v1. Write clients that ignore unknown fields.

## Base URL[#](#base-url)

TextCopy

```text
https://proxuno.com/api/v1
```

Use HTTPS in production: an API key sent over plain HTTP must be considered leaked. Unknown paths under `/api/v1` answer `404` with code `not_found`.

## Authentication[#](#authentication)

Create a key in [Dashboard → API](/dashboard/api) and send it with every request, either as a bearer token or in `X-API-Key`:

HTTPCopy

```http
GET /api/v1/me HTTP/1.1
Host: proxuno.com
Authorization: Bearer pxl_live_7Gq2Xk9Rm4Tn8Vw1Zc5Hb3Jd6Lf0Ps2A
```

Details, key rotation and storage advice: [Authentication](/docs/authentication#api-keys).

## Conventions[#](#conventions)

| Topic | Rule |
| --- | --- |
| Format | JSON in and out, UTF-8. Send `Content-Type: application/json` with a body. |
| Field names | `snake_case`. |
| Dates | ISO 8601 in UTC, e.g. `2026-09-30T14:05:12.000Z`. Date-only parameters use `YYYY-MM-DD`. |
| Money | Integer cents of the account currency (`10500` = $105) with a separate `currency` field (`"USD"`). |
| Traffic | Integer bytes. 1 GB = 1,000,000,000 bytes, as billed. |
| Countries | ISO 3166-1 alpha-2, lowercase (`fr`, `gb`, `de`). |
| Ids | Proxies use numeric ids; orders use their reference (`ORD-2026-01482`). |
| Envelope | Every success response is `{"data": …}`. Lists add `"meta"` (totals, applied filters, pagination). |
| Version header | Every response carries `X-API-Version: v1`. |
| Ownership | Every endpoint only ever returns resources of the key's account. Another account's id answers `404`, not `403`. |

## Endpoints[#](#endpoints)

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/me` | Account summary: email, balance, residential login and traffic left. |
| `GET` | `/proxies` | Mobile and static proxies. Filters: `type`, `country`, `status`. |
| `GET` | `/proxies/{id}` | One proxy with credentials, current IP and rotation settings. |
| `POST` | `/proxies/{id}/rotate` | Rotate a mobile proxy's IP. |
| `PATCH` | `/proxies/{id}` | Change `rotation_interval_min` and `auto_renew`. |
| `GET` | `/usage` | Daily traffic and requests between `from` and `to`. |
| `GET` | `/residential/endpoints` | Generate residential endpoints (country, city, sessions, format). |
| `GET` | `/countries` | Countries, cities and carriers with product availability. |
| `GET` | `/orders` | Your orders with status and totals. |
| `GET` | `/rotate/{token}` | Rotation link — outside `/api/v1`, needs no key. |

Reference pages: [Proxies, usage & orders](/docs/api-proxies) · [Residential endpoints & countries](/docs/api-residential) · [Errors & rate limits](/docs/api-errors).

## Rate limits[#](#rate-limits)

Each API key may send **60 requests per minute**. Every response carries:

| Header | Meaning |
| --- | --- |
| `X-RateLimit-Limit` | Requests allowed in the current window (60). |
| `X-RateLimit-Remaining` | Requests left in the window. |
| `X-RateLimit-Reset` | When the window resets, as a Unix timestamp in seconds. |

Over the limit, the API answers `429` with code `rate_limited` and a `Retry-After` header. Mobile rotation has its own 10-second cooldown per proxy on top of this — see [Errors & rate limits](/docs/api-errors).

## A first call[#](#a-first-call)

cURLPythonNode.jsPHP

Copy

```bash
curl -s https://proxuno.com/api/v1/me -H "Authorization: Bearer $PROXUNO_API_KEY"
```

```python
import os, httpx

client = httpx.Client(
base_url="https://proxuno.com/api/v1",
headers={"Authorization": f"Bearer {os.environ['PROXUNO_API_KEY']}"},
timeout=30,
)
print(client.get("/me").json())
```

```javascript
const api = (path, init = {}) =>
fetch(`https://proxuno.com/api/v1${path}`, {
...init,
headers: { Authorization: `Bearer ${process.env.PROXUNO_API_KEY}`, ...init.headers },
}).then(async (r) => {
const body = await r.json();
if (!r.ok) throw Object.assign(new Error(body.error.message), { code: body.error.code, status: r.status });
return body;
});

console.log(await api("/me"));
```

```php
<?php
$ch = curl_init("https://proxuno.com/api/v1/me");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("PROXUNO_API_KEY")],
]);
$me = json_decode(curl_exec($ch), true);
print_r($me);
```

Response:

JSONCopy

```json
{
"data": {
"id": 3187,
"email": "ops@example.com",
"name": null,
"locale": "en",
"email_verified": true,
"created_at": "2025-11-04T09:12:44.000Z",
"balance": { "cents": 7550, "currency": "USD" },
"proxy_auth_mode": "userpass",
"proxies": { "mobile_active": 3, "static_active": 5, "expiring_soon": 1 },
"residential": {
"login": "px4k2m9q7a",
"host": "resi.gw.proxuno.com",
"ports": { "http": 7000, "socks5": 7001 },
"bytes_total": 25000000000,
"bytes_used": 10180000000,
"bytes_remaining": 14820000000,
"active_packages": 1,
"next_expiry": "2026-11-28T10:41:07.000Z"
}
}
}
```

`GET /me` does not include the residential password; it is embedded in the lines (or in the `password` field with `format=json`) returned by [`GET /residential/endpoints`](/docs/api-residential). Regenerate it from Dashboard → Residential if it leaks.

## Changes to v1[#](#changes-to-v1)

Additions are listed in the [changelog](/changelog) under the API tag. The most recent: extended residential endpoint generation (`format`, `protocol`, `count` up to 1,000) in v5.4.2, September 2026.

## Public catalogue feed[#](#public-catalogue-feed)

The [public pricing feed](/pricing.json) lists current USD prices by mobile country and duration, residential traffic tier and static ISP quantity bracket. It also gives the catalogue date, crypto options and balance top-up limits; it requires no API key.

Use the [HTML price list](/pricing) or its [Markdown representation](/pricing.md) to read the same prices with their purchase and refund conditions.

Something unclear, outdated or wrong on this page? Tell us — documentation issues are fixed in the next release at the latest.

[Report an issue with this page](/contact?topic=support&subject=Documentation%20issue%3A%20REST%20API%20overview)
