Skip to main content
Base URL: https://panel.scamprojecttest.xyz/proxy/api/v1. Shared rules (auth, limits, errors, idempotency) are in the overview.
v1 covers buying static proxies (ISP/Datacenter), renewal, and all reads. Buying rotating (residential/mobile) proxies via the API is not exposed yet — it needs the bot’s interactive geo-targeting flow.

Account

MethodPathScopeDescription
GET/users/meproxy:readKey & user profile
GET/users/{user_id}/balanceproxy:readBalance
GET/transactionsproxy:readTransactions (paginated, ?user_id=)
GET/referralsproxy:readReferral stats

Catalog & quote

Catalog

GET /proxy/catalog · scope proxy:read
{ "categories": [
  { "category":"isp","label":"ISP","unit":"IP","kind":"static","live":true,"sample_price_usd":"2.50" },
  { "category":"residential","label":"Residential","unit":"GB","kind":"rotating","live":true,"sample_price_usd":"2.00" }
] }
Pricing is volume-tiered (the larger the volume, the lower the per-unit price); sample_price_usd is the first-tier price. Get live tiers via /proxy/quote.

Quote

POST /proxy/quote · scope proxy:read · body { "category":"isp", "quantity":5 }
{ "category":"isp","quantity":5,"unit":"IP","price_usd":"12.50","available":true }

Subscriptions

MethodPathScopeDescription
GET/proxy/subscriptionsproxy:readList (paginated, ?user_id=)
GET/proxy/subscriptions/{id}proxy:readSubscription card
GET/proxy/subscriptions/{id}/credentialsproxy:readCredentials
The credentials response depends on the type:
// static
{ "subscription_id": 9, "kind": "static",
  "static_proxies": [ { "ip":"1.2.3.4","port_http":8080,"port_socks":1080,"login":"u","password":"p" } ] }

// rotating
{ "subscription_id": 9, "kind": "rotating",
  "upstream_login":"u","upstream_endpoint":"gw.example:7000","upstream_password":"p" }
Credentials return with Cache-Control: no-store — do not cache or log them.

Buy & renew (money)

Require API_MONEY_ENABLED, scope proxy:buy, an Idempotency-Key header, and (if enabled) an X-Signature.

Buy static proxies

POST /proxy/static · scope proxy:buy · money
FieldTypeDescription
categorystringisp or datacenter
country_namestring (1–64)Country (name or ISO code)
quantitynumber 1–500IP count
auto_renewboolAuto-renew (default false)
user_idnumberRequired for an operator key
curl -X POST "https://panel.scamprojecttest.xyz/proxy/api/v1/proxy/static" \
  -H "Authorization: Bearer $KEY" \
  -H "Idempotency-Key: prx-2026-06-09-001" \
  -H "Content-Type: application/json" \
  -d '{"category":"isp","country_name":"United States","quantity":5}'
{ "status":"ok","subscription_id":9,"order_id":120,"price_usd":"12.50","quantity":5,"country":"US" }
status field: ok (delivered), provisioning (in progress), insufficient (402, low balance), provider_misconfig (503), bad_request (400).

Renew subscription

POST /proxy/subscriptions/{id}/renew · scope proxy:buy · money
{ "subscription_id":9,"status":"ok","price_usd":"12.50","new_expires_at":"2026-07-09T..." }

Management (write)

Auto-renew

POST /proxy/subscriptions/{id}/auto-renew · scope proxy:write · body { "auto_renew": true }. Returns the updated subscription card.

Deposits (money)

POST /deposits · scope deposits:write · money201. Body and behaviour as in domains. Status: GET /deposits/{provider}/{external_id}.

Operator endpoints

Operator only (admin:*): /admin/users/{id}/balance, /admin/users/{id}/ban, /admin/deposits/{tx}/mark-completed, /admin/deposits/{tx}/mark-failed — see domains.