FlamingoProxies API
Integrate Flamingo's high-performance proxy network directly into your software. Automate user management, check data usage, and generate proxies programmatically.
Authentication
All API requests must be authenticated using your unique API Key. You can find your key in the Dashboard Settings.
Pass the key in the X-Api-Key header of every request.
curl -X GET https://api.flamingoproxies.com/v1/plans \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
url = "https://api.flamingoproxies.com/v1/plans"
headers = {
"X-Api-Key": "YOUR_API_KEY_HERE"
}
response = requests.get(url, headers=headers)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/plans', {
headers: {
'X-Api-Key': 'YOUR_API_KEY_HERE'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
Base URL
All endpoints are relative to:
Account Overview
One call for everything: all residential plans (Entry, Standard, Sneakers, Ticket, Deluxe, Enterprise) and Mobile with their data balance and auto top-up, your low-balance alert, a summary of your ISP orders per country, and your servers. Proxy credentials are only returned by Get Plan Details.
Request Example
curl -X GET "https://api.flamingoproxies.com/v1/account" \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
response = requests.get(
"https://api.flamingoproxies.com/v1/account",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"}
)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/account', {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Response Example
{
"success": true,
"account": {
"user_id": "discord_123456789",
"email": "you@example.com",
"plans": [
{
"slug": "standard",
"plan_id": 2,
"name": "Standard",
"type": "residential",
"is_active": true,
"capabilities": {
"state": true,
"city": true
},
"usage": {
"available_gb": 4.5,
"used_gb": 5.5,
"total_gb": 10.0
},
"auto_topup": {
"enabled": true,
"threshold_gb": 0.5,
"topup_gb": 5.0
}
},
{
"slug": "mobile",
"plan_id": 7,
"name": "Mobile",
"type": "mobile",
"is_active": true,
"capabilities": {
"state": true,
"city": true
},
"usage": {
"available_gb": 2.5,
"used_gb": 7.5,
"total_gb": 10.0
},
"auto_topup": {
"enabled": false,
"threshold_gb": 0.0,
"topup_gb": 0.0
}
}
],
"low_balance_alert": {
"enabled": true,
"threshold_gb": 0.5
},
"isp": {
"active_orders": 2,
"proxies": 60,
"auto_renewal_orders": 1,
"next_expiry": "2026-11-04T11:44:35Z",
"countries": [
{
"country_code": "DE",
"country": "Germany",
"orders": 1,
"proxies": 50
},
{
"country_code": "US",
"country": "United States",
"orders": 1,
"proxies": 10
}
]
},
"servers": {
"count": 1
}
}
}
plans always lists all seven plans (shortened above); is_active shows which ones you have. isp.countries counts your active ISP orders and proxies per country.
Get Plans
All seven plans, six residential plus Mobile, with whether they're active on your account and which targeting they support. Add include_usage=true to get every plan's data balance and auto top-up in the same call. Use the slug for the other endpoints (see Plans).
Request Example
curl -X GET "https://api.flamingoproxies.com/v1/plans?include_usage=true" \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
response = requests.get(
"https://api.flamingoproxies.com/v1/plans",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"},
params={"include_usage": "true"}
)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/plans', {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' },
params: { include_usage: 'true' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| include_usage | Boolean | true adds usage and auto_topup to every plan. Balances are read live, so the call takes a moment longer. |
Response Example
{
"success": true,
"plans": [
{
"slug": "entry",
"plan_id": 1,
"name": "Entry",
"type": "residential",
"is_active": false,
"capabilities": {
"state": false,
"city": false
},
"usage": null,
"auto_topup": {
"enabled": false,
"threshold_gb": 0.0,
"topup_gb": 0.0
}
},
{
"slug": "standard",
"plan_id": 2,
"name": "Standard",
"type": "residential",
"is_active": true,
"capabilities": {
"state": true,
"city": true
},
"usage": {
"available_gb": 4.5,
"used_gb": 5.5,
"total_gb": 10.0
},
"auto_topup": {
"enabled": true,
"threshold_gb": 0.5,
"topup_gb": 5.0
}
},
{
"slug": "mobile",
"plan_id": 7,
"name": "Mobile",
"type": "mobile",
"is_active": true,
"capabilities": {
"state": true,
"city": true
},
"usage": {
"available_gb": 2.5,
"used_gb": 7.5,
"total_gb": 10.0
},
"auto_topup": {
"enabled": false,
"threshold_gb": 0.0,
"topup_gb": 0.0
}
}
]
}
Response Fields
| Field | Type | Description |
|---|---|---|
| is_active | Boolean | Whether you have this plan. |
| capabilities | Object | state / city: which sub-country targeting the plan supports. |
| usage | Object | Data balance in GB: available_gb (left), used_gb and total_gb (all data bought for the plan). null for inactive plans. |
| auto_topup | Object | Your auto top-up setting: enabled, threshold_gb (top up when the balance drops below) and topup_gb (amount added). |
| usage_error | String | Only present when the balance can't be read right now; usage is then null. |
Without include_usage each plan has only slug, plan_id, name, type, is_active and capabilities. The example shows 3 of the 7 plans.
Get Plan Details
Status, data balance, auto top-up and proxy credentials of one residential or mobile plan, e.g. standard, ticket or mobile.
Request Example
curl -X GET "https://api.flamingoproxies.com/v1/plans/standard" \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
response = requests.get(
"https://api.flamingoproxies.com/v1/plans/standard",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"}
)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/plans/standard', {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| slug Required | String | Plan slug: entry, standard, sneakers, ticket, deluxe, enterprise or mobile. |
Response Example
{
"success": true,
"plan": {
"slug": "standard",
"plan_id": 2,
"name": "Standard",
"type": "residential",
"is_active": true,
"capabilities": {
"state": true,
"city": true
},
"usage": {
"available_gb": 4.5,
"used_gb": 5.5,
"total_gb": 10.0
},
"auto_topup": {
"enabled": true,
"threshold_gb": 0.5,
"topup_gb": 5.0
},
"credentials": {
"username": "your-proxy-username",
"password": "your-proxy-password"
}
}
}
Inactive plans return is_active: false with usage and credentials set to null. If a balance can't be read at the moment, usage is null and usage_error explains why. Keep your credentials private.
Get Usage
The data balance in GB of every active plan, residential and mobile, keyed by plan slug. A plan whose balance can't be read at the moment is listed in unavailable instead of being reported as 0 GB.
Request Example
curl -X GET "https://api.flamingoproxies.com/v1/usage" \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
response = requests.get(
"https://api.flamingoproxies.com/v1/usage",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"}
)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/usage', {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Response Example
{
"success": true,
"usage": {
"standard": {
"plan_id": 2,
"plan_name": "Standard",
"type": "residential",
"available_gb": 4.5,
"used_gb": 5.5,
"total_gb": 10.0
},
"ticket": {
"plan_id": 4,
"plan_name": "Ticket",
"type": "residential",
"available_gb": 1.2,
"used_gb": 3.8,
"total_gb": 5.0
},
"mobile": {
"plan_id": 7,
"plan_name": "Mobile",
"type": "mobile",
"available_gb": 2.5,
"used_gb": 7.5,
"total_gb": 10.0
}
},
"unavailable": []
}
Response Fields
| Field | Type | Description |
|---|---|---|
| available_gb | Number | Data left on the plan. |
| used_gb | Number | Data used so far. |
| total_gb | Number | All data bought for the plan. |
| unavailable | Array | Slugs of active plans whose balance couldn't be read right now. Retry shortly. |
Get Locations
Fetch supported countries, regions, cities, or ISPs for a specific plan type.
Query Parameters
| Parameter | Description |
|---|---|
| plan Required | Plan slug (e.g., entry, mobile). |
| type Optional | Data to fetch: countries (default), states (residential sub-country regions), cities, regions, or isps (mobile only). |
| country | Country code (e.g., us). Required when fetching states, cities, regions, or ISPs. |
| state | State code (residential). Optional filter when fetching cities — narrows the list to that state. Discover valid values via type=states. |
| region | Region name (mobile). Required when fetching cities for mobile plans; also accepted as an alias of state for residential cities. |
Example Request
curl -X GET "https://api.flamingoproxies.com/v1/locations?plan=entry&country=us" \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
params = {
"plan": "entry",
"country": "us",
"type": "cities"
}
response = requests.get(
"https://api.flamingoproxies.com/v1/locations",
params=params,
headers={"X-Api-Key": "YOUR_API_KEY_HERE"}
)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/locations', {
params: { plan: 'entry', country: 'us' },
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Response Example
{
"success": true,
"data": [
{
"code": "de",
"name": "Germany"
},
{
"code": "us",
"name": "United States"
}
]
}
Residential plans return {code, name} pairs for countries, states and cities; use the code in Generate Proxies. Mobile returns the live country, region, city and ISP lists.
Generate Proxies
Creates ready-to-use proxies for any residential plan or Mobile, with country, state / city targeting and sticky or rotating sessions. Proxies are returned as host:port:user:pass.
Request Example
curl -X POST https://api.flamingoproxies.com/v1/generate-proxies \
-H "X-Api-Key: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"plan": "standard", "proxy_amount": 10, "country": "us", "proxy_type": "sticky", "ttl": 30}'
import requests
response = requests.post(
"https://api.flamingoproxies.com/v1/generate-proxies",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"},
json={
"plan": "standard",
"proxy_amount": 10,
"country": "us",
"proxy_type": "sticky",
"ttl": 30
}
)
print(response.json())
const axios = require('axios');
const data = {
"plan": "standard",
"proxy_amount": 10,
"country": "us",
"proxy_type": "sticky",
"ttl": 30
};
axios.post('https://api.flamingoproxies.com/v1/generate-proxies', data, {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
JSON Body Parameters
| Parameter | Type | Description |
|---|---|---|
| plan Required | String | Plan slug: entry, standard, sneakers, ticket, deluxe, enterprise or mobile. |
| proxy_amount Required | Integer | Number of proxies to generate, 1 to 50,000. |
| country | String | Country code, e.g. us or de (see Get Locations). Mobile: leave out or send all for any country. |
| proxy_type | String | sticky keeps the same IP for ttl minutes, rotating gives a new IP per request. Default: sticky for residential plans, rotating for Mobile. |
| ttl | Integer | Sticky session length in minutes. Default 30. |
| state | String | State for sub-country targeting (standard; for mobile it is used as the region). Values via GET /v1/locations?type=states&country=us. |
| city | String | City code (standard and mobile). Can be combined with state or sent alone. Values via GET /v1/locations?type=cities&country=us&state=california. |
| region | String | Mobile only: region from GET /v1/locations?plan=mobile&type=regions&country=us. |
| rotation | String | Mobile only: random (rotating) or sticky. Overrides proxy_type. |
Note: State/city targeting is only honoured by plans that support it
(standard and mobile). For other plans these fields are ignored,
and the response includes a warnings array explaining what was dropped.
Invalid state/city values return 400 with the list of valid options.
Response Example
{
"success": true,
"count": 2,
"proxies": [
"standard.flamingoproxies.com:12321:your-username:your-password_country-us_session-AbCdEfGhIjKl_lifetime-30",
"standard.flamingoproxies.com:12321:your-username:your-password_country-us_session-MnOpQrStUvWx_lifetime-30"
]
}
Check a Plan
Tests a residential or mobile plan end to end: generates a few fresh proxies with your targeting and sends one request through each. You get alive or dead, the latency and the exit IP per proxy, which is handy for monitoring or before a big run.
Request Example
curl -X POST https://api.flamingoproxies.com/v1/plans/standard/check \
-H "X-Api-Key: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"country": "us", "amount": 3}'
import requests
response = requests.post(
"https://api.flamingoproxies.com/v1/plans/standard/check",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"},
json={
"country": "us",
"amount": 3
}
)
print(response.json())
const axios = require('axios');
const data = {
"country": "us",
"amount": 3
};
axios.post('https://api.flamingoproxies.com/v1/plans/standard/check', data, {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| slug Required | String | Plan slug: entry, standard, sneakers, ticket, deluxe, enterprise or mobile. |
JSON Body Parameters
| Parameter | Type | Description |
|---|---|---|
| country | String | Country code. Default us. Mobile: all for any country. |
| state | String | State (standard) or region (mobile), as in Generate Proxies. |
| city | String | City code (standard and mobile). |
| proxy_type | String | sticky (default) or rotating. |
| ttl | Integer | Sticky session length in minutes. Default 30. |
| amount | Integer | Number of proxies to test, 1 to 10. Default 3. |
| timeout | Number | Seconds to wait per proxy, 2 to 15. Default 8. |
Response Example
{
"success": true,
"plan": "standard",
"country": "us",
"proxy_type": "sticky",
"checked": 3,
"alive": 3,
"dead": 0,
"results": [
{
"proxy": "standard.flamingoproxies.com:12321:your-username:your-password_country-us_session-AbCdEfGhIjKl_lifetime-30",
"alive": true,
"latency_ms": 812,
"exit_ip": "203.0.113.25",
"error": null
},
{
"proxy": "standard.flamingoproxies.com:12321:your-username:your-password_country-us_session-MnOpQrStUvWx_lifetime-30",
"alive": true,
"latency_ms": 655,
"exit_ip": "198.51.100.7",
"error": null
},
{
"proxy": "standard.flamingoproxies.com:12321:your-username:your-password_country-us_session-QrStUvWxYzAb_lifetime-30",
"alive": true,
"latency_ms": 930,
"exit_ip": "192.0.2.44",
"error": null
}
]
}
Each test uses a few kilobytes of the plan's data. A plan without balance returns 400 Insufficient balance; a plan you don't have returns 400. See Limits for how often you can check.
Check Proxies
Live check of proxies you already have: residential and mobile proxies from Generate Proxies and the proxies of your active ISP orders, up to 100 per request. Each proxy sends one request; you get alive or dead, the latency and the exit IP.
Request Example
curl -X POST https://api.flamingoproxies.com/v1/proxies/check \
-H "X-Api-Key: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"proxies": ["standard.flamingoproxies.com:12321:your-username:your-password_country-us_session-AbCdEfGhIjKl_lifetime-30", "203.0.113.10:8000:user:pass"], "timeout": 6}'
import requests
response = requests.post(
"https://api.flamingoproxies.com/v1/proxies/check",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"},
json={
"proxies": [
"standard.flamingoproxies.com:12321:your-username:your-password_country-us_session-AbCdEfGhIjKl_lifetime-30",
"203.0.113.10:8000:user:pass"
],
"timeout": 6
}
)
print(response.json())
const axios = require('axios');
const data = {
"proxies": [
"standard.flamingoproxies.com:12321:your-username:your-password_country-us_session-AbCdEfGhIjKl_lifetime-30",
"203.0.113.10:8000:user:pass"
],
"timeout": 6
};
axios.post('https://api.flamingoproxies.com/v1/proxies/check', data, {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
JSON Body Parameters
| Parameter | Type | Description |
|---|---|---|
| proxies Required | Array or String | Up to 100 proxies as a list, or as text with one proxy per line. Formats: ip:port:user:pass, user:pass@ip:port or http://user:pass@ip:port. |
| timeout | Number | Seconds to wait per proxy, 2 to 10. Default 6. |
Response Example
{
"success": true,
"checked": 2,
"alive": 2,
"dead": 0,
"skipped": 1,
"results": [
{
"proxy": "standard.flamingoproxies.com:12321:your-username:your-password_country-us_session-AbCdEfGhIjKl_lifetime-30",
"type": "residential",
"alive": true,
"latency_ms": 640,
"exit_ip": "198.51.100.7",
"error": null
},
{
"proxy": "203.0.113.10:8000:user:pass",
"type": "isp",
"alive": true,
"latency_ms": 95,
"exit_ip": "203.0.113.10",
"error": null
},
{
"proxy": "192.0.2.50:3128:user:pass",
"type": null,
"alive": false,
"latency_ms": null,
"exit_ip": null,
"error": "not a proxy of your account"
}
]
}
Results keep the order you sent. type is residential, mobile or isp. Only FlamingoProxies proxies of your account are tested; anything else is skipped and counted in skipped. For a whole ISP order use Check ISP Proxies.
ISP Products
The ISP proxies you can order: country, region, type (Premium / Retail), duration, price per IP in EUR and quantity limits.
Request Example
curl -X GET "https://api.flamingoproxies.com/v1/isp/products?country=DE" \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
response = requests.get(
"https://api.flamingoproxies.com/v1/isp/products",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"},
params={"country": "DE"}
)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/isp/products', {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' },
params: { country: 'DE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| country | String | Only this country: ISO code such as DE or a name such as Germany (see ISP Countries). |
| region | String | Only this region, e.g. Germany or Ashburn. |
| type | String | premium or retail. |
Response Example
{
"success": true,
"count": 1,
"products": [
{
"product_id": 13,
"name": "DE PREMIUM ISP (monthly)",
"country_code": "DE",
"country": "Germany",
"region": "Germany",
"type": "Premium",
"duration": "Monthly",
"valid_days": 30,
"unit_price_eur": 1.7,
"min_quantity": 10,
"max_quantity": 1000,
"quantity_pricing": {
"monthly": null,
"daily": null
}
}
]
}
unit_price_eur is the price per IP for the whole duration, before VAT. Filters ignore upper and lower case.
ISP Orders
Your ISP orders with country code, list amount, status, expiry, auto-renewal and price. Add include_proxies=true to get the proxies of every order in the same call.
Request Example
curl -X GET "https://api.flamingoproxies.com/v1/isp/orders?include_proxies=true&format=user:pass@ip:port" \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
response = requests.get(
"https://api.flamingoproxies.com/v1/isp/orders",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"},
params={"include_proxies": "true", "format": "user:pass@ip:port"}
)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/isp/orders', {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' },
params: { include_proxies: 'true', format: 'user:pass@ip:port' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| status | String | active (default) or all to include expired orders. |
| country | String | Only orders of this country: ISO code such as US or a name. |
| include_proxies | Boolean | true adds a proxies array to every order. |
| format | String | Proxy format: ip:port:user:pass (default), user:pass@ip:port or http (http://user:pass@ip:port). |
Response Example
{
"success": true,
"count": 1,
"orders": [
{
"order_id": 6244,
"product_id": 13,
"product": "DE PREMIUM ISP (monthly)",
"country_code": "DE",
"country": "Germany",
"region": "Germany",
"type": "Premium",
"duration": "Monthly",
"quantity": 2,
"proxy_count": 2,
"status": "active",
"order_date": "2026-10-05T11:44:35Z",
"valid_to": "2026-11-04T11:44:35Z",
"expires_in_days": 15,
"auto_renewal": true,
"auto_renewal_available": true,
"replace_ips_available": true,
"purchase_price": {
"currency": "EUR",
"net": 3.4,
"vat": 0.65,
"gross": 4.05,
"vat_rate": 19.0
},
"proxies": [
"user:pass@203.0.113.10:8000",
"user:pass@203.0.113.11:8000"
]
}
]
}
Response Fields
| Field | Type | Description |
|---|---|---|
| order_id | Integer | Order number, as shown in your dashboard. |
| country_code | String | ISO 3166-1 alpha-2 code of the proxies' country, e.g. DE or US. |
| country | String | Country name. |
| region | String | Location as sold: a country or a city such as Ashburn (US). |
| type / duration | String | Premium or Retail; Daily, Monthly or Quarterly. |
| quantity | Integer | Number of IPs ordered. |
| proxy_count | Integer | List amount: number of proxies in the order's list right now. |
| status | String | active, expired or inactive. |
| order_date / valid_to | String | UTC timestamps (ISO 8601). valid_to is when the order ends unless it renews. |
| expires_in_days | Integer | Full days left; 0 once expired. |
| auto_renewal | Boolean | Whether the order renews automatically before valid_to. |
| auto_renewal_available | Boolean | Whether auto-renewal can be switched on for this order in the dashboard (not for daily orders). |
| replace_ips_available | Boolean | Whether the one-time Replace IPs is still available. |
| purchase_price | Object | What you paid when ordering, in EUR: net, vat, gross and vat_rate (%). null if no price is recorded. |
| proxies | Array | The proxy list. Only with include_proxies=true; always included in ISP Order Details. |
ISP Order Details
One ISP order including its proxies, with the same fields as ISP Orders. Works for expired orders too; check status.
Request Example
curl -X GET "https://api.flamingoproxies.com/v1/isp/orders/6244" \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
response = requests.get(
"https://api.flamingoproxies.com/v1/isp/orders/6244",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"}
)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/isp/orders/6244', {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| order_id Required | Integer | The order number shown in your dashboard. |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| format | String | Proxy format, see ISP Orders. |
Response Example
{
"success": true,
"order": {
"order_id": 6244,
"product_id": 13,
"product": "DE PREMIUM ISP (monthly)",
"country_code": "DE",
"country": "Germany",
"region": "Germany",
"type": "Premium",
"duration": "Monthly",
"quantity": 2,
"proxy_count": 2,
"status": "active",
"order_date": "2026-10-05T11:44:35Z",
"valid_to": "2026-11-04T11:44:35Z",
"expires_in_days": 15,
"auto_renewal": true,
"auto_renewal_available": true,
"replace_ips_available": true,
"purchase_price": {
"currency": "EUR",
"net": 3.4,
"vat": 0.65,
"gross": 4.05,
"vat_rate": 19.0
},
"proxies": [
"203.0.113.10:8000:user:pass",
"203.0.113.11:8000:user:pass"
]
}
}
ISP Proxy List
The proxies of one order as plain text, one per line, ready to load into your tools.
Request Example
curl -X GET "https://api.flamingoproxies.com/v1/isp/orders/6244/proxies?format=ip:port:user:pass" \ -H "X-Api-Key: YOUR_API_KEY_HERE" \ -o proxies.txt
import requests
response = requests.get(
"https://api.flamingoproxies.com/v1/isp/orders/6244/proxies",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"},
params={"format": "ip:port:user:pass"}
)
print(response.text)
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/isp/orders/6244/proxies', {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' },
params: { format: 'ip:port:user:pass' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| format | String | Proxy format, see ISP Orders. |
Response Example (text/plain)
203.0.113.10:8000:user:pass
203.0.113.11:8000:user:pass
Check ISP Proxies
Tests the proxies of an active order live: each one requests a test page through the proxy. You get alive or dead, the latency and the exit IP. Large orders are checked in batches with offset and limit; continue with next_offset until it is null.
Request Example
curl -X POST https://api.flamingoproxies.com/v1/isp/orders/6244/check \
-H "X-Api-Key: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"offset": 0, "limit": 25}'
import requests
response = requests.post(
"https://api.flamingoproxies.com/v1/isp/orders/6244/check",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"},
json={
"offset": 0,
"limit": 25
}
)
print(response.json())
const axios = require('axios');
const data = {
"offset": 0,
"limit": 25
};
axios.post('https://api.flamingoproxies.com/v1/isp/orders/6244/check', data, {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
JSON Body Parameters
| Parameter | Type | Description |
|---|---|---|
| offset | Integer | Position of the first proxy to check. Default 0. |
| limit | Integer | Number of proxies to check, 1 to 100. Default 25. |
| timeout | Number | Seconds to wait per proxy, 2 to 10. Default 6. |
Response Example
{
"success": true,
"order_id": 6244,
"total": 2,
"offset": 0,
"checked": 2,
"alive": 1,
"dead": 1,
"next_offset": null,
"results": [
{
"proxy": "203.0.113.10:8000:user:pass",
"alive": true,
"latency_ms": 184,
"exit_ip": "203.0.113.10",
"error": null
},
{
"proxy": "203.0.113.11:8000:user:pass",
"alive": false,
"latency_ms": null,
"exit_ip": null,
"error": "timeout"
}
]
}
Only active orders can be checked. The same batch of an order can be checked once every 30 seconds and one check per account runs at a time (see Limits); otherwise the API answers 429 with a Retry-After header. To test single proxies from several orders, use Check Proxies.
Servers
Your Windows servers: location, IP, status and paid-until date. Server passwords are never returned by the API.
Request Example
curl -X GET "https://api.flamingoproxies.com/v1/servers?include_traffic=true" \ -H "X-Api-Key: YOUR_API_KEY_HERE"
import requests
response = requests.get(
"https://api.flamingoproxies.com/v1/servers",
headers={"X-Api-Key": "YOUR_API_KEY_HERE"},
params={"include_traffic": "true"}
)
print(response.json())
const axios = require('axios');
axios.get('https://api.flamingoproxies.com/v1/servers', {
headers: { 'X-Api-Key': 'YOUR_API_KEY_HERE' },
params: { include_traffic: 'true' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| include_traffic | Boolean | true adds this month's traffic (used_gb) and your included allowance (quota_gb, prorated for partial months). |
Response Example
{
"success": true,
"count": 1,
"servers": [
{
"server_id": "e0e92a19-aa0c-45c9-982a-03795856f3c2",
"name": "flamingo-windows-vds-1790672150",
"region": "EU",
"ip_address": "203.0.113.20",
"username": "Administrator",
"status": "active",
"created_at": "2026-09-29T08:55:00Z",
"expires_at": "2026-10-29T08:55:00Z",
"auto_renewal": false,
"backup_enabled": true,
"recreate_available": true,
"traffic": {
"month": "2026-10",
"used_gb": 7.0,
"quota_gb": 5000.0,
"quota_full_gb": 5000,
"over_gb": 0.0
}
}
]
}
Plans
Every plan the API supports. Use the slug in /v1/plans/{slug}, /v1/plans/{slug}/check, /v1/generate-proxies and /v1/locations. Balances are in GB (1 GB = 1000 MB).
All Plans
| Slug | Plan ID | Type | Targeting |
|---|---|---|---|
| entry | 1 | Residential | Country |
| standard | 2 | Residential | Country, state, city |
| sneakers | 3 | Residential | Country |
| ticket | 4 | Residential | Country |
| deluxe | 5 | Residential | Country |
| enterprise | 6 | Residential | Country |
| mobile | 7 | Mobile | Country, region, city |
ISP Countries
ISP orders and products carry the country_code (ISO 3166-1 alpha-2) and country of their region. Filter with country=DE or country=Germany. ISP Products always returns the current list of regions.
Current Regions
| Region | country_code | Country |
|---|---|---|
| Ashburn | US |
United States |
| Australia | AU |
Australia |
| Canada | CA |
Canada |
| France | FR |
France |
| Germany | DE |
Germany |
| Hong Kong | HK |
Hong Kong |
| Italy | IT |
Italy |
| Japan | JP |
Japan |
| Moldova | MD |
Moldova |
| Netherlands | NL |
Netherlands |
| Poland | PL |
Poland |
| Singapore | SG |
Singapore |
| South Korea | KR |
South Korea |
| Spain | ES |
Spain |
| United Kingdom | GB |
United Kingdom |
Limits
Live checks send real requests through your proxies, so they are limited per account. When you hit a limit the API answers 429 with a Retry-After header (seconds). Please keep other calls reasonable, e.g. poll balances at most once a minute.
Check Limits
| Endpoint | Per request | How often |
|---|---|---|
| POST /v1/isp/orders/{order_id}/check | 1 to 100 proxies | Same batch once every 30 s |
| POST /v1/plans/{slug}/check | 1 to 10 proxies | Same plan once every 10 s |
| POST /v1/proxies/check | Up to 100 proxies | Once every 5 s |
| All checks | One check per account at a time | |
| POST /v1/generate-proxies | Up to 50,000 proxies | No fixed limit |
Errors
Every error returns JSON with success: false and a readable message.
| Status | Meaning | What to do |
|---|---|---|
| 400 | Bad request | A parameter is missing or invalid, the plan isn't active on your account, or its balance is empty; the message says which. |
| 401 | API key missing | Send your key in the X-Api-Key header. |
| 403 | Invalid API key | Copy the key again from your dashboard settings. |
| 404 | Not found | Unknown plan slug, or an ISP order that isn't on your account. |
| 429 | Too many requests | A check limit was hit (see Limits). Wait for the seconds in the Retry-After header. |
| 500 | Server error | Retry shortly; contact support if it persists. |
Error Example
{
"success": false,
"message": "ISP order not found."
}
Why Automate with Flamingo API?
Integrating residential proxies directly into your application allows for seamless scalability. Our RESTful API provides endpoints for checking the data balance of every residential and mobile plan, generating new proxies on the fly, fetching your ISP proxies by country, live-checking residential, mobile and ISP proxies, and monitoring your servers without logging into the dashboard.
Whether you are building a custom web scraper, a sneaker bot, or an enterprise-grade data intelligence platform, Flamingo's API guarantees you have programmatic access to over 100 million IPs worldwide.
API FAQ
Got more questions? Join our Discord for personalized support.
Does Flamingo Proxies have an API?
Yes. Our REST API returns the plans and data balances of all residential plans and Mobile, generates residential and mobile proxies, fetches your ISP orders and proxy lists, live-checks proxies, and lists your servers.
What authentication methods does the API support?
Every request is authenticated with your personal API key, sent in the X-Api-Key header. You find the key in your dashboard settings.
Is there a rate limit on API requests?
Live proxy checks are limited per account: an ISP batch once every 30 seconds, a plan once every 10 seconds, a proxy list once every 5 seconds, and one check at a time. Faster calls get HTTP 429 with a Retry-After header. Please keep other calls reasonable, for example poll balances at most once a minute.
Is the API free to use?
Yes. API access is included with every Flamingo Proxies plan at no extra cost.
Which programming languages can I use?
Any language that supports HTTP requests — Python, JavaScript, Go, PHP, cURL, and more. The API returns standard JSON responses.
Can I fetch and check my proxies through the API?
Yes. GET /v1/isp/orders lists your ISP orders with country code, list amount and auto-renewal, and GET /v1/isp/orders/{order_id}/proxies returns a proxy list as text. POST /v1/isp/orders/{order_id}/check, POST /v1/plans/{slug}/check and POST /v1/proxies/check test ISP, residential and mobile proxies live and return latency and exit IP.
How do I see the balance of all my plans?
Call GET /v1/usage for every active plan, or GET /v1/plans?include_usage=true for all seven plans including inactive ones. Each active residential or mobile plan returns its available, used and total GB.