ISP proxies
Static residential (ISP) IPs, announced by consumer internet providers.
/api/v1/isp/products scope: api.static.readList products
The plans on sale and the periods each can be bought for. Prices depend on the quantity and locations, so ask POST /quote for one.
Requires the api.static.read scope.
limitinteger50.offsetinteger0.curl https://api.datafuel.ai/api/v1/isp/products \ --header 'Authorization: Bearer df_live_your_key_here'
{ "results": [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "name": "string", "description": "string", "max_ips": 0, "period_days": [ 0 ] } ], "count": 0, "limit": 0, "offset": 0 }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/products/{product} scope: api.static.readGet a product
The product with every country and region it can be ordered in, its stock level and how many IPs one order may take there.
Requires the api.static.read scope.
productREQUIREDstringcurl https://api.datafuel.ai/api/v1/isp/products/{product} \ --header 'Authorization: Bearer df_live_your_key_here'
{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "name": "string", "description": "string", "max_ips": 0, "period_days": [ 0 ], "locations": [ { "country": "US", "region": "CA", "region_name": "California", "stock_level": "high", "max_ips": 0 } ] }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/plans scope: api.static.readList your plans
Requires the api.static.read scope.
limitinteger50.offsetinteger0.statusstringcurl https://api.datafuel.ai/api/v1/isp/plans \ --header 'Authorization: Bearer df_live_your_key_here'
{ "results": [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z" } ], "count": 0, "limit": 0, "offset": 0 }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/plans/{plan} scope: api.static.readGet a plan
The plan with its authentication settings and locations. The username and password are at GET /plans/{plan}/credentials.
Requires the api.static.read scope.
planREQUIREDstringcurl https://api.datafuel.ai/api/v1/isp/plans/{plan} \ --header 'Authorization: Bearer df_live_your_key_here'
{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z", "auth": { "mode": "credentials", "allowed_ips": [ "string" ] }, "replacements_left": 0, "locations": [ { "country": "US", "region": "CA", "ips": 0 } ] }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/plans/{plan}/proxies scope: api.static.manageList a plan's proxies
Every IP of the plan with its port and location, plus the credentials to use them with. It carries the password, so it needs the manage level and is never cached.
Requires the api.static.manage scope.
planREQUIREDstringformatstringcurl https://api.datafuel.ai/api/v1/isp/plans/{plan}/proxies \ --header 'Authorization: Bearer df_live_your_key_here'
{ "username": "string", "password": "string", "proxies": [ { "ip": "string", "port": 0, "country": "string", "region": "string" } ] }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/plans/{plan}/credentials scope: api.static.manageGet the credentials
The username and password every IP of the plan accepts in credentials mode. They are a secret, so reading them needs the manage level and the answer is never cached.
Requires the api.static.manage scope. Every call is recorded in the account's audit log.
planREQUIREDstringcurl https://api.datafuel.ai/api/v1/isp/plans/{plan}/credentials \ --header 'Authorization: Bearer df_live_your_key_here'
{ "username": "string", "password": "string" }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/plans/{plan}/credentials/reset scope: api.static.manageReset the credentials
Issues a new password for every IP of the plan at once and answers the credentials; the old password stops working. The username stays. 409 plan_not_active unless the plan is active, plan_provisioning while some of its IPs are still being delivered.
Requires the api.static.manage scope. Every call is recorded in the account's audit log.
planREQUIREDstringcurl https://api.datafuel.ai/api/v1/isp/plans/{plan}/credentials/reset \ --request POST \ --header 'Authorization: Bearer df_live_your_key_here'
{ "username": "string", "password": "string" }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/plans/{plan}/auth scope: api.static.manageSet how the proxies authenticate
credentials asks for the username and password; ip lets only allowed_ips in. The list replaces the one the plan has. 409 plan_not_active unless the plan is active, plan_provisioning while some of its IPs are still being delivered.
Requires the api.static.manage scope.
planREQUIREDstringmodeREQUIREDstringallowed_ipsarray<string>curl https://api.datafuel.ai/api/v1/isp/plans/{plan}/auth \ --request PUT \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer df_live_your_key_here' \ --data '{ "mode": "credentials", "allowed_ips": [ "string" ] }'
{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z", "auth": { "mode": "credentials", "allowed_ips": [ "string" ] }, "replacements_left": 0, "locations": [ { "country": "US", "region": "CA", "ips": 0 } ] }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/plans/{plan}/replace scope: api.static.manageReplace the IPs
Swaps every IP of the plan for new ones in the same locations and spends one of replacements_left. Buy more with POST /plans/{plan}/orders. 409 plan_not_active unless the plan is active, plan_provisioning while some of its IPs are still being delivered, no_replacements_left when none are left.
Requires the api.static.manage scope.
planREQUIREDstringcurl https://api.datafuel.ai/api/v1/isp/plans/{plan}/replace \ --request POST \ --header 'Authorization: Bearer df_live_your_key_here'
{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z", "auth": { "mode": "credentials", "allowed_ips": [ "string" ] }, "replacements_left": 0, "locations": [ { "country": "US", "region": "CA", "ips": 0 } ] }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/quote scope: api.static.readPrice a new plan
What POST /orders with the same body would charge, including discounts, tax and the payment method's fee, or why it cannot be ordered. Nothing is reserved. 404 when the product does not exist; 422 promo_code_invalid when the promo code is refused.
Requires the api.static.read scope.
product_idREQUIREDstringperiod_daysREQUIREDintegerlocationsREQUIREDarray<object>paymentobject | nullpromo_codestringcurl https://api.datafuel.ai/api/v1/isp/quote \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer df_live_your_key_here' \ --data '{ "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "period_days": 1, "locations": [ { "country": "US", "region": "CA", "ips": 1 } ], "payment": { "method": "balance", "card_id": "string" }, "promo_code": "string" }'
{ "purchasable": false, "issues": [ { "code": "string", "message": "string", "field": "string", "limit": 0 } ], "net": 0, "discount": 0, "tax": 0, "fee": 0, "total": 0, "currency": "usd" }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/orders scope: api.static.purchaseBuy a new plan
Charges the balance or a saved card straight away, without asking the customer, and delivers the plan. 201 answers the delivered plan; 202 means it is paid and still being delivered, or the bank asked for 3-D Secure (order.action_url). 404 when the product does not exist.
Requires the api.static.purchase scope. Send a unique Idempotency-Key per order; repeating it with the same body answers the first order instead of charging again.
Idempotency-KeyREQUIREDstringproduct_idREQUIREDstringperiod_daysREQUIREDintegerlocationsREQUIREDarray<object>paymentREQUIREDobjectpromo_codestringcurl https://api.datafuel.ai/api/v1/isp/orders \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer df_live_your_key_here' \ --header 'Idempotency-Key: your-idempotency-key' \ --data '{ "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "period_days": 1, "locations": [ { "country": "US", "region": "CA", "ips": 1 } ], "payment": { "method": "balance", "card_id": "string" }, "promo_code": "string" }'
{ "order": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "pending", "service": "string", "product": "string", "action": "new", "total": 0, "currency": "usd", "payment": { "method": "balance", "card_id": "string" }, "plan_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "action_url": "https://example.com", "error": { "code": "insufficient_balance", "message": "string" }, "replayed": false, "created_at": "2026-01-01T00:00:00Z", "paid_at": "2026-01-01T00:00:00Z" }, "plan": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z", "auth": { "mode": "credentials", "allowed_ips": [ "string" ] }, "replacements_left": 0, "locations": [ { "country": "US", "region": "CA", "ips": 0 } ] } }
{ "order": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "pending", "service": "string", "product": "string", "action": "new", "total": 0, "currency": "usd", "payment": { "method": "balance", "card_id": "string" }, "plan_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "action_url": "https://example.com", "error": { "code": "insufficient_balance", "message": "string" }, "replayed": false, "created_at": "2026-01-01T00:00:00Z", "paid_at": "2026-01-01T00:00:00Z" }, "plan": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z", "auth": { "mode": "credentials", "allowed_ips": [ "string" ] }, "replacements_left": 0, "locations": [ { "country": "US", "region": "CA", "ips": 0 } ] } }
{ "order": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "pending", "service": "string", "product": "string", "action": "new", "total": 0, "currency": "usd", "payment": { "method": "balance", "card_id": "string" }, "plan_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "action_url": "https://example.com", "error": { "code": "insufficient_balance", "message": "string" }, "replayed": false, "created_at": "2026-01-01T00:00:00Z", "paid_at": "2026-01-01T00:00:00Z" }, "plan": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z", "auth": { "mode": "credentials", "allowed_ips": [ "string" ] }, "replacements_left": 0, "locations": [ { "country": "US", "region": "CA", "ips": 0 } ] } }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/plans/{plan}/quote scope: api.static.readPrice an add-on
What POST /plans/{plan}/orders with the same body would charge. 422 promo_code_invalid when the promo code is refused.
Requires the api.static.read scope.
planREQUIREDstringreplacementsREQUIREDintegerpaymentobject | nullpromo_codestringcurl https://api.datafuel.ai/api/v1/isp/plans/{plan}/quote \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer df_live_your_key_here' \ --data '{ "replacements": 1, "payment": { "method": "balance", "card_id": "string" }, "promo_code": "string" }'
{ "purchasable": false, "issues": [ { "code": "string", "message": "string", "field": "string", "limit": 0 } ], "net": 0, "discount": 0, "tax": 0, "fee": 0, "total": 0, "currency": "usd" }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
/api/v1/isp/plans/{plan}/orders scope: api.static.purchaseBuy an add-on
Buys more IP replacements for a plan you hold, charged straight away.
Requires the api.static.purchase scope. Send a unique Idempotency-Key per order; repeating it with the same body answers the first order instead of charging again.
planREQUIREDstringIdempotency-KeyREQUIREDstringreplacementsREQUIREDintegerpaymentREQUIREDobjectpromo_codestringcurl https://api.datafuel.ai/api/v1/isp/plans/{plan}/orders \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer df_live_your_key_here' \ --header 'Idempotency-Key: your-idempotency-key' \ --data '{ "replacements": 1, "payment": { "method": "balance", "card_id": "string" }, "promo_code": "string" }'
{ "order": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "pending", "service": "string", "product": "string", "action": "new", "total": 0, "currency": "usd", "payment": { "method": "balance", "card_id": "string" }, "plan_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "action_url": "https://example.com", "error": { "code": "insufficient_balance", "message": "string" }, "replayed": false, "created_at": "2026-01-01T00:00:00Z", "paid_at": "2026-01-01T00:00:00Z" }, "plan": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z", "auth": { "mode": "credentials", "allowed_ips": [ "string" ] }, "replacements_left": 0, "locations": [ { "country": "US", "region": "CA", "ips": 0 } ] } }
{ "order": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "pending", "service": "string", "product": "string", "action": "new", "total": 0, "currency": "usd", "payment": { "method": "balance", "card_id": "string" }, "plan_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "action_url": "https://example.com", "error": { "code": "insufficient_balance", "message": "string" }, "replayed": false, "created_at": "2026-01-01T00:00:00Z", "paid_at": "2026-01-01T00:00:00Z" }, "plan": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z", "auth": { "mode": "credentials", "allowed_ips": [ "string" ] }, "replacements_left": 0, "locations": [ { "country": "US", "region": "CA", "ips": 0 } ] } }
{ "order": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "pending", "service": "string", "product": "string", "action": "new", "total": 0, "currency": "usd", "payment": { "method": "balance", "card_id": "string" }, "plan_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "action_url": "https://example.com", "error": { "code": "insufficient_balance", "message": "string" }, "replayed": false, "created_at": "2026-01-01T00:00:00Z", "paid_at": "2026-01-01T00:00:00Z" }, "plan": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "product_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "provisioning", "ips": 0, "period_days": 0, "expires_at": "2026-01-01T00:00:00Z", "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2026-01-01T00:00:00Z", "auth": { "mode": "credentials", "allowed_ips": [ "string" ] }, "replacements_left": 0, "locations": [ { "country": "US", "region": "CA", "ips": 0 } ] } }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }
{ "error": "string", "message": "string", "meta": {} }