Package

A list of all publicly available methods for interacting with the API.

GET

Packages summary

New/package/summary

Packages summary

How many packages the user has and what renewing all of them costs, per currency.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/summary

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/summary", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

List your packages

New/package/list
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Your packages

Every package on the account, newest first, paginated (page, per-page); search matches the id, uid, name, a proxy address or a product name.

Notes

  • The product is order.type; proxy_count, proxy_countries and is_disabled sum up the package.
  • Use the id with Get a package and List package proxies.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/list

Query parameters

IdentifierRegulationsExample
with-deletedNot necessarilynullableex-booleanfalse
searchNot necessarilynullablestring185
per-pageNot necessarilynullableinteger55
pageNot necessarilynullableinteger25
sort-byNot necessarilynullablestring17
sort-orderNot necessarilynullablestringin:asc, desc"asc"

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/list", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

Get a package

New/package/view/{id}

One package

Settings, status, expiry, traffic and logins of a package you own.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/view/{id}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/view/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

Connect to a proxy

New/package/connection/{id}

Connect to a proxy

One proxy of a package as a ready connection: host, port, login, password, a proxy URL, the host:port:login:password line and copy-paste snippets (curl, python, node, php, go) that print the exit IP.

Notes

  • Without index the first working proxy is used; index comes from List package proxies.
  • protocol: http (default) or socks5. The Python SOCKS snippet needs requests[socks]; the Node ones https-proxy-agent / socks-proxy-agent.
  • A package whose proxies are still being issued answers 409 proxies_not_ready — try again in a minute.
  • These are live credentials: show them only to the account owner.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/connection/{id}

Query parameters

IdentifierRegulationsExample
indexNot necessarilynullableinteger0
protocolNot necessarilynullablestringin:http, socks5"http"
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/connection/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();

Examples of answers

Success200application/json
{
  "data": {
    "package_id": 14800,
    "index": 0,
    "protocol": "http",
    "host": "gw.stableproxy.com",
    "port": 10000,
    "username": "user123",
    "password": "pass456",
    "url": "http://user123:[email protected]:10000",
    "line": "gw.stableproxy.com:10000:user123:pass456",
    "country_code": "UA",
    "snippets": {
      "curl": "curl -x 'http://user123:[email protected]:10000' https://api.ipify.org?format=json"
    }
  },
  "meta": []
}
GET

Package usage statistics

New/package/statistics/{id}
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-statistics.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/statistics/{id}

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/statistics/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

List proxy changes of a package

New/package/changes/{id}

Proxy change history

When the proxies of a package were replaced, added or removed, newest first.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-diffs.list
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/changes/{id}

Query parameters

IdentifierRegulationsExample
per-pageNot necessarilynullableinteger77
pageNot necessarilynullableinteger89
sort-byNot necessarilynullablestringapp\_validators\_ex_in_rule""
sort-orderNot necessarilynullablestringin:asc, desc"asc"
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/changes/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

Get one proxy change

New/package/changes/{id}/{diffId}

One proxy change

What one change did: which proxies left and which came in.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-diffs.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/changes/{id}/{diffId}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800
diffId1requiredinteger1

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/changes/{id}/{diffId}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

Get package settings

New/package/settings/{id}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Package settings

The package's settings as {setting: value}: is-auto-renew, name, description, proxy-usernames, proxy-passwords, proxy-auth-ips, connect-keep-alive-seconds, split-super-proxies-count, ad-block.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-settings.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/settings/{id}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/settings/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

List package proxies

New/package/proxies/{id}

A package's proxies

The ready-to-use proxies of a package — host, ports, login and password, country — paginated.

Notes

  • These are live credentials: show them only to the account owner.
  • The index of a row is what Rotate proxy IP and Check proxies take.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/proxies/{id}

Query parameters

IdentifierRegulationsExample
with-hiddenNot necessarilynullableex-booleanfalse
countriesNot necessarilynullablearray{"UA": 10, "PL": 20}
searchNot necessarilynullablestring206
per-pageNot necessarilynullableinteger16
pageNot necessarilynullableinteger30
sort-byNot necessarilynullablestringapp\_validators\_ex_in_rule""
sort-orderNot necessarilynullablestringin:asc, desc"asc"
countries.*Not necessarilydistinctstringcountry_code{"UA": 10, "PL": 20}
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/proxies/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
PUT

Change package settings

New/package/settings/{id}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Change package settings

Changes only the settings sent: is-auto-renew, name, description, proxy-usernames[], proxy-passwords[], proxy-auth-ips[] (IP allow-list), connect-keep-alive-seconds, split-super-proxies-count, ad-block.

Notes

  • New logins or passwords stop the old ones at once — tell the user before changing them.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-settings.update
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

PUThttps://api.stableproxy.com/v3/package/settings/{id}

Query parameters

IdentifierRegulationsExample
is-auto-renewNot necessarilynullableex-booleanfalse
nameNot necessarilynullablestring39
descriptionNot necessarilynullablestring60
proxy-usernamesNot necessarilynullablearray64
proxy-passwordsNot necessarilynullablearray3
proxy-auth-ipsNot necessarilynullablearray[]
connect-keep-alive-secondsNot necessarilynullablenumeric303
split-super-proxies-countNot necessarilynullablenumeric9801
ad-blockNot necessarilynullableex-booleanfalse
proxy-usernames.*requiredstring29
proxy-passwords.*requiredstring32
proxy-auth-ips.*requiredstringvalid_ip_or_domain1
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/settings/{id}", {
3 method: "PUT",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 },
8 body: JSON.stringify({
9 "is-auto-renew": "false",
10 "name": 39,
11 "description": 60,
12 "proxy-usernames": 64,
13 "proxy-passwords": 3,
14 "proxy-auth-ips": "[]",
15 "connect-keep-alive-seconds": 303,
16 "split-super-proxies-count": 9801,
17 "ad-block": "false",
18 "proxy-usernames.*": 29,
19 "proxy-passwords.*": 32,
20 "proxy-auth-ips.*": 1
21 })
22});
23const data = await response.json();
GET

Get package features

New/package/features/{id}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Package features

Optional features of a package and whether each one is on.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-features.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/features/{id}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/features/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
PUT

Turn package features on or off

New/package/features/{id}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Turn features on or off

Sets the listed features[] to status (true or false). Keys come from Get package features.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-features.update
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

PUThttps://api.stableproxy.com/v3/package/features/{id}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/features/{id}", {
3 method: "PUT",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

Get proxy list download links

New/package/download/{id}

Download links

Links that download the whole proxy list as txt, csv, json, xml or curl lines, for HTTP and SOCKS5.

Notes

  • The links work without signing in — anyone with a link gets the list. Reset download links makes the old ones stop.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/download/{id}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/download/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
DELETE

Reset download links

New/package/download/{id}

Reset download links

Makes every existing download link of the package stop working; Get proxy list download links then gives new ones.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages.reset-download-hash
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

DELETEhttps://api.stableproxy.com/v3/package/download/{id}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/download/{id}", {
3 method: "DELETE",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

Count non-working proxies

New/package/dead/{id}

Non-working proxies

How many proxies of a package are marked not working, and whether they can be replaced now (allow_refresh).

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/dead/{id}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/dead/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
POST

Replace non-working proxies

New/package/replace/{id}/{type}

Replace non-working proxies

Swaps the proxies marked not working for fresh ones of the same kind. type is non-working.

Notes

  • Replaced proxies get new addresses — the user must update them wherever they are used.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.update
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

POSThttps://api.stableproxy.com/v3/package/replace/{id}/{type}

Query parameters

IdentifierRegulationsExample
type1requiredstringin:non-working"non-working"
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/replace/{id}/{type}", {
3 method: "POST",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
POST

Check where proxies are located

New/package/locations/{id}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Check proxy locations

Starts a geo-location check of up to 20 proxies (indexes[]): each is connected once to learn its exit IP. Returns a token and the services to ask.

Notes

  • Read each service's answer with Get location check results.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

POSThttps://api.stableproxy.com/v3/package/locations/{id}

Query parameters

IdentifierRegulationsExample
indexesrequiredarray1
indexes.*Not necessarilyinteger0
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/locations/{id}", {
3 method: "POST",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 },
8 body: JSON.stringify({
9 "indexes": 1,
10 "indexes.*": "0"
11 })
12});
13const data = await response.json();
GET

Get location check results

New/package/locations/{id}/service/{service}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Location check results

Where one geo-location service places each checked proxy. Pass the token from Check where proxies are located.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/locations/{id}/service/{service}

Query parameters

IdentifierRegulationsExample
tokenrequiredstring56
id1requiredinteger14800
service1requiredstringipinfo

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/locations/{id}/service/{service}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

List proxy pools

New/package/pools/{id}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Proxy pools

Pools a residential GB package can draw IPs from.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/pools/{id}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/pools/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
POST

Check proxies

New/package/check/{id}

Check proxies

Connects through the chosen proxies right now and reports which answer, their exit IP and timing.

Notes

  • indexes: list indexes from List package proxies, at most 20 per call.
  • A proxy that answers but was marked broken is marked working again.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

POSThttps://api.stableproxy.com/v3/package/check/{id}

Query parameters

IdentifierRegulationsExample
indexesrequiredarray4
indexes.*Not necessarilyinteger0
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/check/{id}", {
3 method: "POST",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 },
8 body: JSON.stringify({
9 "indexes": 4,
10 "indexes.*": "0"
11 })
12});
13const data = await response.json();
PUT

Set the pool of all proxies

New/package/pool/{id}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Set the pool of all proxies

Moves every proxy of the package to pool_id; null returns them to the default pool.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.update
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

PUThttps://api.stableproxy.com/v3/package/pool/{id}

Query parameters

IdentifierRegulationsExample
pool_idNot necessarilynullablestring4
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/pool/{id}", {
3 method: "PUT",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 },
8 body: JSON.stringify({
9 "pool_id": 4
10 })
11});
12const data = await response.json();
PUT

Set the pool of one proxy

New/package/pool/{id}/{proxyIndex}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Set the pool of one proxy

Moves one proxy to pool_id; null returns it to the default pool.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.update
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

PUThttps://api.stableproxy.com/v3/package/pool/{id}/{proxyIndex}

Query parameters

IdentifierRegulationsExample
pool_idNot necessarilynullablestring39
id1requiredinteger14800
proxyIndex1requiredinteger0

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/pool/{id}/{proxyIndex}", {
3 method: "PUT",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 },
8 body: JSON.stringify({
9 "pool_id": 39
10 })
11});
12const data = await response.json();
GET

List regions a package can target

New/package/regions/{id}

Targetable regions

Regions of a country that a residential package can target when adding proxies.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/regions/{id}

Query parameters

IdentifierRegulationsExample
countrystringrequiredcountry_code""
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/regions/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

List cities a package can target

New/package/cities/{id}

Targetable cities

Cities a residential package can target, optionally within regions[].

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/cities/{id}

Query parameters

IdentifierRegulationsExample
regionsNot necessarilyarraydistinct[]
countrystringrequiredcountry_code""
regions.*Not necessarilystring""
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/cities/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
POST

Add proxies to a package

New/package/proxy/{id}

Add proxies

Adds targeted proxies to a traffic package (residential, mobile rotating, datacenter GB, B2B).

Notes

  • count (1–1000), countries[], fixed (sticky IP), interval (rotation minutes, 1–120), pool_id; residential also regions[], cities[].
  • Traffic is shared by the package — adding proxies costs nothing by itself.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.update
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

POSThttps://api.stableproxy.com/v3/package/proxy/{id}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800
countrequiredinteger30
countriesNot necessarilynullablearray{"UA": 10, "PL": 20}
countries.*Not necessarilystring{"UA": 10, "PL": 20}
fixedrequiredbooleantrue
intervalrequiredinteger10
pool_idNot necessarilynullablestring20
regionsNot necessarilynullablearray[]
regions.*Not necessarilystring""
citiesNot necessarilynullablearray[]
cities.*Not necessarilystring""

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/proxy/{id}", {
3 method: "POST",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 },
8 body: JSON.stringify({
9 "count": 30,
10 "countries": "{\"UA\": 10, \"PL\": 20}",
11 "countries.*": "{\"UA\": 10, \"PL\": 20}",
12 "fixed": "true",
13 "interval": "10",
14 "pool_id": 20,
15 "regions": "[]",
16 "regions.*": "\"\"",
17 "cities": "[]",
18 "cities.*": "\"\""
19 })
20});
21const data = await response.json();
DELETE

Remove a proxy you added

New/package/proxy/{id}/{proxyIndex}

Remove a proxy

Removes one proxy the user added to a traffic package. Proxies that came with the package cannot be removed.

Notes

  • Ask the user before calling it.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.update
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

DELETEhttps://api.stableproxy.com/v3/package/proxy/{id}/{proxyIndex}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800
proxyIndex1requiredinteger0

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/proxy/{id}/{proxyIndex}", {
3 method: "DELETE",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

Get a proxy note

New/package/note/{id}/{proxyIndex}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Proxy note

The user's own note on one proxy.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages.set-note
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/note/{id}/{proxyIndex}

Query parameters

IdentifierRegulationsExample
noteNot necessarilynullablestring71
id1requiredinteger14800
proxyIndex1requiredinteger0

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/note/{id}/{proxyIndex}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
PUT

Set a proxy note

New/package/note/{id}/{proxyIndex}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Set a proxy note

Saves a note (3–100 characters) on one proxy; null clears it.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages.set-note
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

PUThttps://api.stableproxy.com/v3/package/note/{id}/{proxyIndex}

Query parameters

IdentifierRegulationsExample
noteNot necessarilynullablestring71
id1requiredinteger14800
proxyIndex1requiredinteger0

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/note/{id}/{proxyIndex}", {
3 method: "PUT",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 },
8 body: JSON.stringify({
9 "note": 71
10 })
11});
12const data = await response.json();
PUT

Hide or show a proxy

New/package/hide/{id}/{proxyIndex}

Hide or show a proxy

Hides one proxy from lists and downloads, or shows it again. A hidden proxy keeps working.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.update
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

PUThttps://api.stableproxy.com/v3/package/hide/{id}/{proxyIndex}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800
proxyIndex1requiredinteger0

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/hide/{id}/{proxyIndex}", {
3 method: "PUT",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
GET

List entry servers

New/package/servers/{id}
Replaces older v2 methods

This API v3 method replaces these API v2 methods (they still work):

Entry servers

Servers a package can connect through, and which one is selected. A closer server can be faster.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages-proxies.read
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

GEThttps://api.stableproxy.com/v3/package/servers/{id}

Query parameters

IdentifierRegulationsExample
with-hiddenNot necessarilynullableex-booleanfalse
countriesNot necessarilynullablearray{"UA": 10, "PL": 20}
searchNot necessarilynullablestring82
per-pageNot necessarilynullableinteger167
pageNot necessarilynullableinteger82
sort-byNot necessarilynullablestringapp\_validators\_ex_in_rule""
sort-orderNot necessarilynullablestringin:asc, desc"asc"
countries.*Not necessarilydistinctstringcountry_code{"UA": 10, "PL": 20}
id1requiredinteger14800

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/servers/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
POST

Rotate proxy IP

New/package/rotate/{id}/{proxyIndex}

Rotate a proxy's IP

Gives one proxy of a package a new exit IP, where the product supports rotation.

This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages.change-proxy-ip
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

POSThttps://api.stableproxy.com/v3/package/rotate/{id}/{proxyIndex}

Query parameters

IdentifierRegulationsExample
id1requiredinteger14800
proxyIndex1requiredinteger0

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/rotate/{id}/{proxyIndex}", {
3 method: "POST",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();
PUT

Select the entry server

New/package/servers/{id}/{pid}

Select the entry server

Switches the package to another entry server from List entry servers.

Notes

  • The proxy host changes — the user must update it wherever it is used.
This method requires authorization!
You can use your own API key, which can be obtained at control panel.
This method - requires permissions -packages.set-super-proxy
When creating an API token in your control panel, you can choose certain permissions (for example: prevent the token from placing orders).
You can also find a list of permissions in our documentation.

Query method

PUThttps://api.stableproxy.com/v3/package/servers/{id}/{pid}

Query parameters

IdentifierRegulationsExample
with-hiddenNot necessarilynullableex-booleanfalse
countriesNot necessarilynullablearray{"UA": 10, "PL": 20}
searchNot necessarilynullablestring114
per-pageNot necessarilynullableinteger76
pageNot necessarilynullableinteger34
sort-byNot necessarilynullablestringapp\_validators\_ex_in_rule""
sort-orderNot necessarilynullablestringin:asc, desc"asc"
countries.*Not necessarilydistinctstringcountry_code{"UA": 10, "PL": 20}
id1requiredinteger14800
pid1requiredinteger1

Code examples

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/package/servers/{id}/{pid}", {
3 method: "PUT",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 },
8 body: JSON.stringify({
9 "with-hidden": "false",
10 "countries": "{\"UA\": 10, \"PL\": 20}",
11 "search": 114,
12 "per-page": 76,
13 "page": 34,
14 "sort-by": "\"\"",
15 "sort-order": "\"asc\"",
16 "countries.*": "{\"UA\": 10, \"PL\": 20}"
17 })
18});
19const data = await response.json();