CUSTOMER API DOCUMENTATION
Get and replace proxy credentials.
Read the connection details for your applications. Replace proxy credentials when you need to revoke an old copy.
On this page
Read your saved connections↗
GET
Returns the saved selection, private proxy credentials, generated endpoints and account access state./api/v1.0/customer/proxiesAuthorization: Bearer <PS_API_KEY>120 requests / minute / account
This read does not generate a list or contact the gateways. Without active access it still returns account state, with access: false and empty credentials/endpoints.
application/json
Example response
{
"gatewayReady": true,
"synced": true,
"access": true,
"allowance": {
"ports": 500,
"threads": 500,
"trial": false
},
"settings": {
"mode": "request",
"protocol": "http",
"authentication": "credentials",
"country": "world",
"count": 2,
"interval": 30
},
"whitelist": [],
"credentials": {
"username": "ps_user_7_example",
"password": "your-proxy-password"
},
"endpoints": [
{
"id": 1,
"host": "192.0.2.10",
"port": 40300,
"country": "world",
"pool": "world",
"mode": "request",
"interval": 30
},
{
"id": 2,
"host": "192.0.2.11",
"port": 40301,
"country": "world",
"pool": "world",
"mode": "request",
"interval": 30
}
],
"distribution": {
"192.0.2.10": 1,
"192.0.2.11": 1
},
"user": {
"id": 7,
"email": "[email protected]",
"username": "casey",
"role": "customer",
"emailVerified": true,
"status": "ACTIVE",
"createdAt": "2026-10-20T10:00:00+00:00",
"providers": [],
"canEditCredentials": true,
"tier": "premium",
"trial": {
"active": false,
"used": true,
"limitBytes": 1000000000,
"usedBytes": 1000000000,
"requests": 2500
},
"plan": {
"id": "growth",
"autoRenew": true,
"paymentProvider": "stripe",
"amountCents": 6000,
"subscriptionId": "sub_example",
"name": "Growth",
"status": "active",
"concurrency": 500,
"ports": 500,
"billingPeriod": "monthly",
"expiresAt": "2026-11-24T10:00:00+00:00"
}
}
}request.pyPython
Before you run
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/proxies",
headers={"Authorization": f"Bearer {key}"},
timeout=30,
)
response.raise_for_status()
print(response.json())
Response fields 7 fields +
| Field | Meaning |
|---|---|
access / allowanceboolean / object | null | Whether the account can use proxies, with its ports, threads and trial flag. |
gatewayReady / syncedboolean | Gateway access is configured and the saved settings have reached all three gateways. |
settingsobject | null | The active mode, protocol, authentication, location, count and interval. |
credentialsobject | Separate proxy username and password. These are private and are not your API key. |
endpoints[]array | Gateway host/port entries to use in your client. They are not a list of dedicated exit IPs. |
distributionobject | How many returned endpoints belong to each gateway host. |
whitelist / userarray / object | Authorized source addresses and the public account/plan summary. |
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. |
Replace the proxy username and password↗
POST
Replaces the account proxy credential pair, applies it across the gateways and returns the updated connection state./api/v1.0/customer/proxies/credentials/rotateAuthorization: Bearer <PS_API_KEY>120 / minute overall · credential replacement: 5 / hour
Update every client that uses the old proxy credentials after this succeeds. The API key and account login remain separate. Read the saved state after a timeout before issuing another replacement.
application/json
Example response
{
"gatewayReady": true,
"synced": true,
"access": true,
"allowance": {
"ports": 500,
"threads": 500,
"trial": false
},
"settings": {
"mode": "request",
"protocol": "http",
"authentication": "credentials",
"country": "world",
"count": 2,
"interval": 30
},
"whitelist": [],
"credentials": {
"username": "ps_user_7_example",
"password": "replacement-proxy-password"
},
"endpoints": [
{
"id": 1,
"host": "192.0.2.10",
"port": 40300,
"country": "world",
"pool": "world",
"mode": "request",
"interval": 30
},
{
"id": 2,
"host": "192.0.2.11",
"port": 40301,
"country": "world",
"pool": "world",
"mode": "request",
"interval": 30
}
],
"distribution": {
"192.0.2.10": 1,
"192.0.2.11": 1
},
"user": {
"id": 7,
"email": "[email protected]",
"username": "casey",
"role": "customer",
"emailVerified": true,
"status": "ACTIVE",
"createdAt": "2026-10-20T10:00:00+00:00",
"providers": [],
"canEditCredentials": true,
"tier": "premium",
"trial": {
"active": false,
"used": true,
"limitBytes": 1000000000,
"usedBytes": 1000000000,
"requests": 2500
},
"plan": {
"id": "growth",
"autoRenew": true,
"paymentProvider": "stripe",
"amountCents": 6000,
"subscriptionId": "sub_example",
"name": "Growth",
"status": "active",
"concurrency": 500,
"ports": 500,
"billingPeriod": "monthly",
"expiresAt": "2026-11-24T10:00:00+00:00"
}
}
}JSON request body
{}request.pyPython
Before you run
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(
"POST",
f"{base}/customer/proxies/credentials/rotate",
headers={"Authorization": f"Bearer {key}"},
json={},
timeout=120,
)
response.raise_for_status()
print(response.json())
Response fields 7 fields +
| Field | Meaning |
|---|---|
access / allowanceboolean / object | null | Whether the account can use proxies, with its ports, threads and trial flag. |
gatewayReady / syncedboolean | Gateway access is configured and the saved settings have reached all three gateways. |
settingsobject | null | The active mode, protocol, authentication, location, count and interval. |
credentialsobject | Separate proxy username and password. These are private and are not your API key. |
endpoints[]array | Gateway host/port entries to use in your client. They are not a list of dedicated exit IPs. |
distributionobject | How many returned endpoints belong to each gateway host. |
whitelist / userarray / object | Authorized source addresses and the public account/plan summary. |
Errors & recovery 7 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. |
403 | No active trial or paid proxy access. | Read /customer/account and activate a plan if needed. |
409 | Another account configuration update is still running. | Wait, then read /customer/proxies before changing it again. |
422 | A setting, source IP, inventory selection or count is invalid. | Use the returned field error and the location capacity response. |
503 | Gateway synchronization could not finish. | The desired settings are retained. Read the saved state before retrying. |
Keep connection values private↗
- Do not publish API responses, exported URI lists or request logs containing proxy passwords.
- Use authentication: credentials in a configuration write. It selects the matching username/password endpoint bank.
- Replacing proxy credentials changes access credentials, not the exit IP assignment.
Common questions
Does this replace my account password?
No. Account login, the customer API key and proxy connection credentials are independent.
Further reading
Requests: proxy configuration (opens in a new tab)Java 17 HTTP client configuration (opens in a new tab)cURL command reference (opens in a new tab)Need help with this guide?Send us your question