CUSTOMER API DOCUMENTATION
Authenticate and discover available capacity.
Use a server-side Bearer key, inspect available location combinations and handle API errors consistently.
On this page
Send the API key in a header↗
Base URL: https://proxysight.com/api/v1.0. Send Authorization: Bearer <PS_API_KEY> on every customer request. Do not put the key in the URL. Customer calls do not need dashboard cookies or a CSRF token.
Create, replace or delete your key in Settings → API key. A replaced/deleted key stops working. The key can read private proxy credentials and change your account’s proxy configuration; keep it off public pages and browser code.
| Header | Value |
|---|---|
| Authorization | Bearer <PS_API_KEY> |
| Content-Type | application/json for PUT, POST and DELETE bodies |
Read countries, pools and matching capacity↗
/api/v1.0/customer/locationsAuthorization: Bearer <PS_API_KEY>120 requests / minute / account
Read the complete capacity array and match your selection; do not treat a country’s summary count as a guarantee for every authentication/protocol combination. The effective generated count is also capped by your account allowance. Inventory values can change.
The example illustrates selected country and capacity entries. The API returns the complete enabled arrays.
{
"advertisedNetworkSize": 40000,
"mappedStaticEndpoints": 9000,
"recordedExitIps": 5851,
"listenerEndpoints": 28800,
"countries": [
{
"code": "de",
"name": "Germany",
"count": 1800,
"continent": "Europe"
},
{
"code": "us",
"name": "United States",
"count": 4499,
"continent": "North America"
}
],
"rotatingPools": [
"world",
"eu",
"us"
],
"definitions": 96,
"hosts": 3,
"capacity": [
{
"mode": "request",
"protocol": "http",
"authentication": "credentials",
"country": "world",
"ports": 900
},
{
"mode": "timed",
"protocol": "http",
"authentication": "credentials",
"country": "eu",
"ports": 900
},
{
"mode": "static",
"protocol": "http",
"authentication": "credentials",
"country": "de",
"ports": 1800
}
]
}Python 3.10+ · pip install requests · Set PS_API_KEY in your environment.import os
import requests
base = os.getenv("PS_API_BASE_URL", "https://proxysight.com/api/v1.0").rstrip("/")
key = os.environ["PS_API_KEY"]
response = requests.request(
"GET",
f"{base}/customer/locations",
headers={"Authorization": f"Bearer {key}"},
timeout=30,
)
response.raise_for_status()
print(response.json())
Response fields 5 fields +
| Field | Meaning |
|---|---|
capacity[]array | Match mode, protocol, authentication and country. Its ports count is the inventory ceiling for that combination. |
countries[] / rotatingPoolsarray | Country-code choices for persistent mappings and pool choices for request/timed rotation. |
advertisedNetworkSizeinteger | The advertised 40,000-proxy network size, separate from generated endpoints and recorded exits. |
mappedStaticEndpoints / recordedExitIpsinteger / integer | null | Mapped inventory entries and recorded distinct exits, when available. |
listenerEndpoints / definitions / hostsinteger | Inventory listener total, enabled definition count and configured gateway count. |
Errors & recovery 3 cases +
| HTTP | What happened | What to do |
|---|---|---|
401 | The API key is missing, revoked, or its account is unavailable. | Use the current Bearer key from Settings → API key. |
429 | The account request limit was reached. | Wait for the Retry-After header before retrying. |
500 | The request could not be completed. | Retry reads with backoff. After a write, read the saved state before sending it again. |
Handle API errors once↗
Error responses use detail; validation responses can also include fields. A timeout is not proof that a write failed. Read the saved state before resending credential replacements or configuration changes.
| Status | Meaning | Next step |
|---|---|---|
| 401 | Missing/revoked key or unavailable account | Stop retries; replace the key or check the account. |
| 403 | An active trial or paid plan is required | Read the account summary and show the plan action. |
| 409 | Update already running, conflicting source IP, or list not ready | Read the saved state before retrying the action. |
| 422 | Invalid body, query value, count or source IP | Correct the value; repeating it will not help. |
| 429 | Request/write limit reached | Wait the number of seconds in Retry-After. |
| 500 | The request could not be completed | Retry reads with backoff. Read saved state before repeating writes. |
| 503 | Database or gateway service is unavailable | Read the configuration when available and retry with backoff. |
{
"detail": "Choose a supported proxy mode, protocol and authentication method."
}Common questions
Where can I see API request counts and latency?
Settings → API key shows measured customer API activity. Those durations measure API processing, not the speed of proxy traffic to a destination.