Skip to content

Quickstart

Terminal window
export KEY='YOUR_KEY'
export BASE='https://ipv.rent'
Terminal window
curl -s "$BASE/api/v1/products" -H "Authorization: Bearer $KEY"
{
"products": [
{
"slug": "residential",
"name": "Residential",
"family": "traffic_gateway",
"unit": "gb",
"unit_price": "2.00",
"monthly_price_from": null,
"currency": "USD",
"min_volume": 1,
"volume_presets": [1, 5, 10, 25, 50, 100, 250, 500],
"volume_discounts": []
},
{
"slug": "ipv4",
"name": "IPv4",
"family": "dedicated",
"unit": "ip",
"unit_price": null,
"monthly_price_from": "1.49",
"currency": "USD",
"min_volume": 1,
"volume_presets": [],
"volume_discounts": []
}
]
}

slug is the value of the product field in all the following requests. From here there is one path per product.

1. Price

Terminal window
curl -s -X POST "$BASE/api/v1/quote" \
-H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-d '{"product":"residential","volume":10}'
{
"unit": "2.00",
"unit_label": "per_gb",
"quantity": 10,
"discount": "0.00",
"discount_percent": "0.00",
"total": "20.00",
"currency": "USD"
}

2. Purchase

Terminal window
curl -s -X POST "$BASE/api/v1/packages" \
-H "Authorization: Bearer $KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H 'Content-Type: application/json' \
-d '{
"product": "residential",
"volume": 10,
"client_reference": "first-run"
}'
{
"order_id": 128,
"package_id": 42,
"status": "completed",
"price": "20.00",
"client_reference": "first-run"
}

Save the idempotency key before the request: a retry after a timeout must carry the same value.

3. Connections

Terminal window
curl -s -X POST "$BASE/api/v1/packages/42/proxies" \
-H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-d '{
"count": 2,
"mode": "sticky",
"protocol": "http",
"ttl_minutes": 30,
"geo": {
"country": "us"
}
}'
{
"count": 2,
"proxies": [
{
"host": "residential.ipv.rent",
"port": 10000,
"username": "USERNAME_1",
"password": "PASSWORD",
"rotation_url": "https://ipv.rent/r/9f3c1e..."
},
{
"host": "residential.ipv.rent",
"port": 10000,
"username": "USERNAME_2",
"password": "PASSWORD",
"rotation_url": "https://ipv.rent/r/1a77b2..."
}
]
}

4. Check

Terminal window
curl -x 'http://USERNAME_1:[email protected]:10000' https://api.ipify.org

1. What you can choose

Terminal window
curl -s "$BASE/api/v1/products/ipv4/options" -H "Authorization: Bearer $KEY"
{
"type": "ipv4",
"countries": [
{
"code": "us",
"name": "United States",
"periods": ["week", "2_weeks", "month", "2_months", "3_months"],
"quantity_max": null,
"plans": [
{
"id": "dc",
"traffic_gb": null,
"periods": ["week", "2_weeks", "month", "2_months", "3_months"],
"operators": [
{
"id": "united-states",
"name": "United States",
"available": 374
}
]
}
]
},
"..."
]
}

operators are locations within the country: the whole country or a city. available - how many addresses are free there right now; you cannot buy more. quantity_max: null - there is no separate limit per purchase.

2. Price

Terminal window
curl -s -X POST "$BASE/api/v1/quote" \
-H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-d '{
"product": "ipv4",
"country": "us",
"operator": "united-states",
"period": "month",
"quantity": 2
}'
{
"unit": "1.49",
"unit_label": "per_ip",
"quantity": 2,
"discount": "0.00",
"discount_percent": "0.00",
"total": "2.98",
"currency": "USD"
}

3. Purchase

Terminal window
curl -s -X POST "$BASE/api/v1/packages" \
-H "Authorization: Bearer $KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H 'Content-Type: application/json' \
-d '{
"product": "ipv4",
"country": "us",
"operator": "united-states",
"period": "month",
"quantity": 2
}'
{
"order_id": 131,
"package_id": 57,
"status": "completed",
"price": "2.98",
"client_reference": null,
"package_ids": [57],
"requested": 2,
"fulfilled": 2
}

All addresses of one purchase are one package.

4. Addresses and access

Terminal window
curl -s "$BASE/api/v1/packages/57" -H "Authorization: Bearer $KEY"
{
"id": 57,
"family": "dedicated",
"product": "ipv4",
"status": "active",
"expires_at": "2026-11-04T12:00:00+00:00",
"auto_renew": true,
"credentials": {
"username": "USERNAME",
"password": "PASSWORD"
},
"addresses": [
{
"host": "198.51.100.11",
"port_http": 10010,
"port_socks": 10011
},
{
"host": "198.51.100.12",
"port_http": 10012,
"port_socks": 10013
}
],
"...": "..."
}

The addresses start answering within 2 minutes of the purchase.

5. Check

Terminal window
curl -x 'http://USERNAME:[email protected]:10010' https://api.ipify.org

Renewal, auto-renewal, address replacement and fingerprint - on the Fixed addresses page.

1. What you can choose

Terminal window
curl -s "$BASE/api/v1/products/mobile/options" -H "Authorization: Bearer $KEY"
{
"type": "mobile",
"countries": [
{
"code": "fr",
"name": "France",
"periods": ["day", "week", "month", "3_months"],
"quantity_max": null,
"plans": [
{
"id": "unlimited",
"traffic_gb": null,
"periods": ["day", "week", "month", "3_months"],
"operators": [
{
"id": "free-mobile",
"name": "Free Mobile",
"available": 7
},
{
"id": "sfr",
"name": "SFR",
"available": 3
}
]
}
]
},
"..."
]
}

operators are the mobile carriers of the country. available - how many ports of that carrier are free right now; you cannot buy more.

2. Price

Terminal window
curl -s -X POST "$BASE/api/v1/quote" \
-H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-d '{
"product": "mobile",
"country": "fr",
"operator": "free-mobile",
"period": "day",
"quantity": 1
}'

3. Purchase

Terminal window
curl -s -X POST "$BASE/api/v1/packages" \
-H "Authorization: Bearer $KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H 'Content-Type: application/json' \
-d '{
"product": "mobile",
"country": "fr",
"operator": "free-mobile",
"period": "day",
"quantity": 1
}'

If the carrier has fewer free ports than requested, the purchase is refused with 422 out_of_stock. Nothing is charged.

4. Port and access

Terminal window
curl -s "$BASE/api/v1/packages/58" -H "Authorization: Bearer $KEY"
{
"id": 58,
"family": "dedicated",
"product": "mobile",
"status": "active",
"credentials": {
"username": "USERNAME",
"password": "PASSWORD"
},
"addresses": [
{
"host": "fr2.mobile.ipv.rent",
"port_http": 13029,
"port_socks": 13029
}
],
"endpoint": {
"country": "fr",
"operator": "Free Mobile",
"rotation_interval_minutes": 0,
"rotation_url": "https://ipv.rent/r/9f3c1e..."
},
"capabilities": ["prolong", "rotate", "rotation_interval", "credentials", "renewal"],
"...": "..."
}

HTTP and SOCKS5 work on the same port.

5. Check and change the IP

Terminal window
curl -x 'http://USERNAME:[email protected]:13029' https://api.ipify.org
curl -s 'https://ipv.rent/r/9f3c1e...'

A GET on rotation_url gives the port a new IP from the same carrier; the answers are listed in IP change. The port drops connections for a few seconds while the IP changes. The IP change timer is set in the dashboard.

Renewal, auto-renewal and password - on the Fixed addresses page: they work for a mobile package the same way. Address replacement and fingerprint are not available for mobile ports. After the end of the term a mobile port cannot be extended.