API for developers
You can buy proxies and manage them from your own code: place orders, read packages, extend them,
follow events. Everything you buy becomes a package.
Packages come in two kinds, told apart by the family field:
| Residential | IPv4 | |
|---|---|---|
family | traffic_gateway | dedicated |
| What you buy | a volume of traffic in gigabytes | N dedicated addresses for a term |
| What you pay for | gigabytes, traffic does not expire | per address per period: week, 2 weeks, month, 2 or 3 months |
| Connections | you build as many lines as you like with any geo | a fixed list of addresses with one login and password |
| IP change | rotation or a change-IP link | replacement of all package addresses once every 30 days |
| Product | Residential | IPv4 |
Purchase, the package list and the package card are shared routes for both kinds. Operations that only one kind has are described separately: traffic and fixed addresses.
Base URL and authentication
Section titled “Base URL and authentication”https://ipv.rentcurl https://ipv.rent/api/v1/balance \ -H 'Authorization: Bearer YOUR_API_KEY'Sign up at app.ipv.rent, then confirm your email: without confirmation you cannot log in.
A key is issued in the dashboard: Profile → API keys → Create key. The secret is shown once; an account can have up to 20 active keys.
A revoked key stops being accepted immediately, and the api_key.revoked event goes to the log.
401 invalid_api_key - the key was not accepted. 403 insufficient_scope - the key lacks the
scope the route requires.
Request and response schemas with every field and example - in the OpenAPI reference.
Key scopes
Section titled “Key scopes”A key issued without specifying scopes gets all of them. The set of an issued key cannot be changed.
| Scope | What it opens |
|---|---|
catalog:read | products and their options, the geo catalog, price quotes |
packages:read | package list, package card, renewal options |
packages:write | purchase and all package operations: top-up, connections, password, renewal, address replacement, fingerprint, auto-renewal |
orders:read | orders |
orders:write | reserved - no route requires it today |
billing:read | balance and transactions |
events:read | event log |
Routes
Section titled “Routes”Catalog and purchase - for both kinds:
| Route | Scope | Idempotency-Key |
|---|---|---|
GET /api/v1/products | catalog:read | - |
GET /api/v1/products/{product}/options | catalog:read | - |
POST /api/v1/quote | catalog:read | no |
POST /api/v1/packages | packages:write | required |
GET /api/v1/packages | packages:read | - |
GET /api/v1/packages/{id} | packages:read | - |
POST /api/v1/packages/{id}/password | packages:write | no |
Residential only:
| Route | Scope | Idempotency-Key |
|---|---|---|
GET /api/v1/geo/countries, /states, /cities, /asns | catalog:read | - |
POST /api/v1/packages/{id}/proxies | packages:write | no |
POST /api/v1/packages/{id}/topup | packages:write | required |
POST /api/v1/packages/{id}/rotation-secret | packages:write | no |
IPv4 only:
| Route | Scope | Idempotency-Key |
|---|---|---|
GET /api/v1/packages/{id}/prolong-options | packages:read | - |
POST /api/v1/packages/{id}/prolong | packages:write | required |
POST /api/v1/packages/{id}/replace | packages:write | no |
POST /api/v1/packages/{id}/fingerprint | packages:write | no |
POST /api/v1/packages/{id}/renewal | packages:write | no |
Account:
| Route | Scope | Idempotency-Key |
|---|---|---|
GET /api/v1/orders, /orders/{id} | orders:read | - |
GET /api/v1/balance, /transactions | billing:read | - |
GET /api/v1/events | events:read | - |
An operation of the other kind on a package answers 422 unsupported_capability.
Balance top-up and key management - only in the dashboard.
Limits
Section titled “Limits”120 requests per minute per key, plus 30 per minute for requests that change something (POST).
Every response carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset; exceeding the
limit gives 429 with retry_after and Retry-After: wait the given number of seconds and retry.
Support
Section titled “Support”Telegram: @ipvrent_support, email
[email protected]. Include the request_id from the error body.
News and service status - in the t.me/ipvrent channel.