CUSTOMER API DOCUMENTATION
Choose when the exit assignment changes.
Use the same configuration endpoint for Every request, timed sticky sessions and persistent assignments.
On this page
Pick the result you need↗
| Dashboard option | API fields | Result |
|---|---|---|
| Every request | mode: request | Independent requests receive rotating assignments. An exit can repeat. |
| Sticky session | mode: timed, interval: 10 seconds to 24 hours (supported presets) | Related requests use the configured timed assignment behavior. |
| Keep the same IP | mode: static | Use a persistent mapped assignment on the same port. |
Apply a 30-second sticky session↗
PUT
Applies a timed EU Pool configuration and returns the selected endpoints with mode and interval./api/v1.0/customer/proxies/configurationAuthorization: Bearer <PS_API_KEY>120 / minute overall · configuration: 20 / 5 minutes
This replaces the complete selection. Send the existing protocol, authentication and count if those should stay the same. World, EU and US are the rotating pools; read the catalog for their available capacities.
application/json
Example response
{
"gatewayReady": true,
"synced": true,
"access": true,
"allowance": {
"ports": 500,
"threads": 500,
"trial": false
},
"settings": {
"mode": "timed",
"protocol": "http",
"authentication": "credentials",
"country": "eu",
"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": "eu",
"pool": "eu",
"mode": "timed",
"interval": 30
},
{
"id": 2,
"host": "192.0.2.11",
"port": 40301,
"country": "eu",
"pool": "eu",
"mode": "timed",
"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
{
"mode": "timed",
"protocol": "http",
"authentication": "credentials",
"country": "eu",
"count": 2,
"interval": 30
}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(
"PUT",
f"{base}/customer/proxies/configuration",
headers={"Authorization": f"Bearer {key}"},
json={"mode": "timed", "protocol": "http", "authentication": "credentials", "country": "eu", "count": 2, "interval": 30},
timeout=120,
)
response.raise_for_status()
print(response.json())
Request parameters 8 inputs +
| Parameter | Where | Value |
|---|---|---|
modestring · required | body | request = Every request; timed = Sticky session with an interval; static = Keep the same IP. |
protocolstring · required | body | http or socks5. HTTP supports HTTPS destinations through CONNECT. |
authenticationstring · required | body | credentials or ip. Add a source address before selecting ip. |
countrystring · required | body | request/timed: world, eu or us. static: world, eu or an available lowercase country code. |
countinteger · required | body | 1–2,000, further limited by your plan and the matching available inventory. |
intervalinteger · optional | body | 10, 30, 60, 300, 600, 900, 1800, 3600, 7200, 21600, 43200 or 86400 seconds; default 30. Only timed mode uses it, but the value must always be valid. |
expectedRevisionstring · optional | body | The active 24-character lowercase hex revision from GET /customer/proxies. Stale versions return 409. |
requestIdstring · optional | body | A unique 32-character lowercase hex request reference. Reuse it with exactly the same body after a timeout. |
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. |
Check your actual connection behavior↗
- Check settings.mode and settings.interval in the returned state before using the exported list.
- Test fresh connections before and after a session boundary; reused connections can behave differently.
- Rotation can return a previously seen exit. Neither mode guarantees an unused IP for each request.
Common questions
Can I set a 24-hour session with this endpoint?
The timed API supports 10 and 30 seconds; 1, 5, 10, 15 and 30 minutes; and 1, 2, 6, 12 and 24 hours. For a persistent mapped assignment choose mode: static, shown as Keep the same IP in the dashboard.
Need help with this guide?Send us your question