REST API v1
Buy and manage proxies from your own code: catalog, orders, renewals, IP and protocol changes, balance, export.
Base URL
https://proxyleet.com/api/v1
Authorization
Header Authorization: Bearer <your token>
Full reference
Every method, parameter, error code and example lives in the interactive reference. It is generated from the API code itself, so it always matches actual behaviour.
Quick start
1. Issue a token
Use your dashboard email and password. The token is shown once — store it immediately, it cannot be retrieved later.
curl -X POST https://proxyleet.com/api/v1/tokens \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"...","name":"my integration"}'
2. Verify the token
curl https://proxyleet.com/api/v1/me \
-H "Authorization: Bearer plt_..."
3. Pick a product and check the price
curl "https://proxyleet.com/api/v1/products?product_type=proxy&country=DE" \
-H "Authorization: Bearer plt_..."
curl "https://proxyleet.com/api/v1/products/12345/pricing?period=30&count=2" \
-H "Authorization: Bearer plt_..."
4. Place the order
The Idempotency-Key header protects you from double charges:
repeating a request with the same key returns the same order.
curl -X POST https://proxyleet.com/api/v1/orders \
-H "Authorization: Bearer plt_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-2026-09-11-001" \
-d '{"product_id":12345,"period":30,"count":2}'
5. Fetch proxy credentials
curl https://proxyleet.com/api/v1/proxies \
-H "Authorization: Bearer plt_..."
Shared pool subscription
Send the subscription key in the same Authorization header.
Pick the response shape with format: json,
plain (ip:port) or prefixed
(type://ip:port).
curl "https://proxyleet.com/api/v1/subscription/proxies?type=http,socks5&country=DE&format=plain" \
-H "Authorization: Bearer YOUR_KEY"
The previous address https://proxyleet.com/proxy/key=...&type=http
keeps working unchanged — migrating is optional.
Errors
Errors follow RFC 9457 and are returned as
application/problem+json. Branch on the code
field rather than on the message text.
{
"type": "https://proxyleet.com/api/v1/errors/insufficient_funds",
"title": "Insufficient funds",
"status": 402,
"code": "insufficient_funds",
"detail": "Balance 120 RUB is less than the required 164 RUB.",
"request_id": "01M27M8BXC2VEMRS73ENNA7ZT8",
"balance": 120,
"required": 164,
"missing": 44
}
Every response carries a request_id (in the error body and in
the X-Request-Id header). Quote it when contacting support and
we find the request straight away.
Rate limits are exposed through RateLimit-Limit,
RateLimit-Remaining and RateLimit-Reset. The full
list of error codes is in the
reference.