curl --request GET \
--url https://api.platform.soax.com/v1/proxy/packages/{package_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.platform.soax.com/v1/proxy/packages/{package_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.platform.soax.com/v1/proxy/packages/{package_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.platform.soax.com/v1/proxy/packages/{package_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.soax.com/v1/proxy/packages/{package_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.platform.soax.com/v1/proxy/packages/{package_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.platform.soax.com/v1/proxy/packages/{package_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "b2f0c3d4-e5a6-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Residential - EU scraping",
"status": "active",
"status_reason": null,
"created_at": "2026-03-15T12:00:00Z",
"types": [
"wifi"
],
"tiers": [
1,
2,
3
],
"allowed_countries": null,
"traffic_limit": 500000000000,
"traffic_spent": 120000000000,
"traffic_left": 380000000000,
"password": "aB3dE5fG7h",
"max_connections": 300,
"allowed_users": null,
"allowed_ips": [
"203.0.113.7"
],
"tcp_available_ports": [
80,
443,
"1024-65535"
],
"udp_available_ports": [],
"tcp_allowed_ports": [],
"udp_allowed_ports": [],
"ports_mode": "inherit",
"tcp_blocked_ports": [
25
],
"udp_blocked_ports": [],
"dns_resolver": "remote",
"auth_method": "pwd",
"http_allowed": true,
"https_allowed": true,
"socks5_tcp_allowed": true,
"socks5_udp_allowed": false,
"allowed_targets": [],
"blocked_targets": [],
"targets_mode": "inherit",
"special_allowed_targets": [],
"allowed_target_types": null
}{
"detail": "Invalid API key"
}{
"detail": "Missing required scope: proxy:packages:read"
}{
"detail": "Package not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"error": "Rate limit exceeded: 5 per 1 second"
}Get a package
Retrieve full configuration for one proxy package: status, network types, tiers, traffic usage (in bytes), the package password used for proxy authentication, connection limits, allowed IPs, port and target rules, and enabled protocols.
If the API key is restricted to specific packages, requesting a package outside the restriction returns 404 (not 403), so the existence of other packages is not revealed.
Requires the proxy:packages:read scope.
curl --request GET \
--url https://api.platform.soax.com/v1/proxy/packages/{package_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.platform.soax.com/v1/proxy/packages/{package_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.platform.soax.com/v1/proxy/packages/{package_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.platform.soax.com/v1/proxy/packages/{package_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.soax.com/v1/proxy/packages/{package_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.platform.soax.com/v1/proxy/packages/{package_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.platform.soax.com/v1/proxy/packages/{package_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "b2f0c3d4-e5a6-4b7c-8d9e-0f1a2b3c4d5e",
"name": "Residential - EU scraping",
"status": "active",
"status_reason": null,
"created_at": "2026-03-15T12:00:00Z",
"types": [
"wifi"
],
"tiers": [
1,
2,
3
],
"allowed_countries": null,
"traffic_limit": 500000000000,
"traffic_spent": 120000000000,
"traffic_left": 380000000000,
"password": "aB3dE5fG7h",
"max_connections": 300,
"allowed_users": null,
"allowed_ips": [
"203.0.113.7"
],
"tcp_available_ports": [
80,
443,
"1024-65535"
],
"udp_available_ports": [],
"tcp_allowed_ports": [],
"udp_allowed_ports": [],
"ports_mode": "inherit",
"tcp_blocked_ports": [
25
],
"udp_blocked_ports": [],
"dns_resolver": "remote",
"auth_method": "pwd",
"http_allowed": true,
"https_allowed": true,
"socks5_tcp_allowed": true,
"socks5_udp_allowed": false,
"allowed_targets": [],
"blocked_targets": [],
"targets_mode": "inherit",
"special_allowed_targets": [],
"allowed_target_types": null
}{
"detail": "Invalid API key"
}{
"detail": "Missing required scope: proxy:packages:read"
}{
"detail": "Package not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"error": "Rate limit exceeded: 5 per 1 second"
}Authorizations
API key secret (starts with s_live_). Create keys in the dashboard under Settings → API keys, or via POST /v1/api-keys/. Send it as Authorization: Bearer <secret>.
Path Parameters
The ID of the proxy package
Response
Successful Response
Response model for package detail endpoint (GET /v1/proxy/packages/{package_id}).
Display status: active, paused (manually paused), limited (traffic limit reached), suspended, or deleted.
Calculate the remaining traffic for the package.
Why the package is not active: user_paused, traffic_limit_reached, out_of_credits, account_suspended, plan_limit_exceeded, or null.
mix, wifi, mobile Was this page helpful?