POOL GATEWAY ACCESS

One USDC payment. One credential for every country in your tier. $4.00/GB, minimum 0.1 GB ($0.40), duration free. No account, no API key.

This is Pool Gateway Access. If you instead need ONE dedicated modem with a fixed host:port, see the Dedicated Port at /marketplace/proxy/. Two different products: DEDICATED PORT = one real port on one modem, its own host:port, one country fixed at purchase - the modem is exclusively yours and rotates only when YOU hit the rotate URL (carrier NAT can still re-issue the exit IP). POOL GATEWAY = one credential on gw.proxies.sx:7000, every country in the tier - country, session and rotation are declared per-request in the proxy username. Full comparison below.

$4 /GB
6 countries, one key
1 credential
LIVE

First request - no auth, no payment. It returns HTTP 402 with the full buyable catalog and the wallets to pay:

curl "https://api.proxies.sx/v1/x402/pool?tier=mbl&country=us&traffic=1"

Then: pay USDC to one of the listed wallets, retry the same request with Payment-Signature: <tx_hash>, and persist the returned password (pak_), sessionToken (x402s_), and your tx hash. Full steps below.

Canonical machine contract: /pool/skill.md. If this page disagrees with the skill file, the skill file wins; if the skill file disagrees with the live API, the live API wins.

WHAT IT IS

Pool Gateway Access is a single credential that routes through a shared pool of real 4G/5G mobile proxies. A Dedicated Port gives you one modem on one port; one Pool Gateway credential reaches every country in your tier through one host. You select the country per request in the proxy username - no per-country repurchase.

Payment is USDC via the x402 protocol on Base or Solana. No account registration. No API key. The credential is metered and capped: its GB cap is exactly the USDC you paid. Top it up the same way.

FeatureDetails
One credentialReaches all countries in the tier - switch country per-request, no new purchase
Gatewaygw.proxies.sx:7000 (HTTP; SOCKS5 on :7001 works for reseller-minted pak_ keys and regular account credentials, but rejects this x402-purchased credential in v1)
Tier (v1)mbl - production ProxySmart modems, real mobile carriers
Countries6 production countries: US, GB, PL, FR, NL, GE (Georgia). Supply fluctuates - read the live list from /v1/gateway/pool/stock
MeteringPer-GB, capped at the USDC you paid - auto-suspends at the cap
Session controlSticky / rotating per-request via the username DSL
DurationFree - you only pay for traffic (GB)

POOL VS DEDICATED

DEDICATED PORT = one real port on one modem, its own host:port, one country fixed at purchase - the modem is exclusively yours and rotates only when YOU hit the rotate URL (carrier NAT can still re-issue the exit IP). POOL GATEWAY = one credential on gw.proxies.sx:7000, every country in the tier - country, session and rotation are declared per-request in the proxy username.

Dedicated Port (/v1/x402/proxy)Pool Gateway (/v1/x402/pool)
What payment mintsA real port on ONE modem (ProxySmart), bound to that deviceA metered pak_ credential; no device touched - modem picked live per connection
EndpointUnique serverIp:port per purchaseShared gw.proxies.sx:7000 for everyone; routing lives in the username
CountryFixed at purchase. Change = recreate the port (only with 0 active ports left)Edit the country slot in the username per request - same credential, no repurchase
RotationTrue carrier-IP reset via public /v1/rotate/<token> URL (5-min cooldown, auto 5-1440 min)-rot- token only: auto5/10/20/60 re-pick a modem on interval; sticky/hard pin the modem. No rotate URL; no mode gives per-request IP change
SOCKS5Yes - working socks5:// URL includedNo - HTTP :7000 only in v1; :7001 rejects this credential
ConcurrencyOne modem. Fan-out = buy more portsParallel sessions on different modems via distinct -sid- values; capped at 250 sessions / 500 connections per account
Payment railsSolana, Base, AND facilitator signed intents (EIP-3009)Solana and Base on-chain only - facilitator rail rejected
Failure recovery/manage/ports/replace (free, max 3, new device) or /ports/recreateAutomatic - dead modems routed around on next pick; /manage/pool/regenerate rotates the secret

IP caveats (both): mobile carriers re-NAT egress IPs on their own cadence - a dedicated port holds a MODEM you control the rotation of, not a fixed IP; pool -rot-sticky pins the MODEM for the session, never the IP. Pool sessions need a -sid-<id> token to stick across connections (-session- is silently ignored).

PICK DEDICATED PORT WHEN

> Cookie-bound / login / 2FA work in one country: one held modem whose IP changes only when you trigger it - no pool selector re-picks under you.
> You need SOCKS5 - the pool credential is HTTP-only in v1.
> You need on-demand true carrier-IP resets via the public rotate URL - the pool cannot do this at all.
> You must hard-pin a city or carrier at purchase, or you pay via facilitator signed intents (EIP-3009) - only this product accepts either.

PICK POOL GATEWAY WHEN

> Multi-country work from one purchase: same key, edit us → gb → pl → fr in the username per request.
> High fan-out: hundreds of parallel sticky sessions (distinct -sid- values land on different modems) through one credential.
> A fleet of agents shares one secret, one top-up, one credit meter - instead of N ports with N passwords.
> You want zero babysitting: default auto10 rotates modems every 10 min with no API calls, and dead modems are routed around automatically.

Same for both: $4.00/GB, 0.1 GB ($0.40) minimum, duration free - you only pay for traffic. Accountless x402 flow (HTTP 402 → pay USDC on Base ~2s or Solana ~400ms → retry with Payment-Signature), same replay protection, same x402s_ session token for management, and the same real ProxySmart 4G/5G carrier modems in the same ~6 countries (US, GB, PL, FR, NL, GE). The difference is topology, not hardware or price.


PRICING

Duration is free. You only pay for traffic. The GB cap equals the USDC you send.

Real mobile IPs, not datacenter relabelled as "residential" - the cheap kind that gets flagged the moment you hit a protected site. Verify any exit IP on ipinfo.io / MaxMind / IP2Location before you pay.

TierTraffic PriceMin PurchaseQuality
mbl$4.00/GB0.1 GB ($0.40)Production modems - 6 countries, 10-15 Mbps, sub-1s TTFB

Live tier catalog: GET /v1/x402/pool/pricing


ENDPOINTS

MethodURLDescription
GEThttps://api.proxies.sx/v1/x402/pool/pricingTier catalog + networks (no payment)
GET/POSThttps://api.proxies.sx/v1/x402/poolBuy access (no payment -> 402 catalog; pay USDC -> credentials)
GEThttps://api.proxies.sx/v1/x402/manage/pool/creditRemaining GB (X-Session-Token)
POSThttps://api.proxies.sx/v1/x402/manage/pool/topupAdd GB with more USDC (X-Session-Token + Payment-Signature)
GEThttps://api.proxies.sx/v1/x402/manage/pool/usagePer-day usage (X-Session-Token)
POSThttps://api.proxies.sx/v1/x402/manage/pool/regenerateRotate the secret, keep the username (X-Session-Token)
GEThttps://api.proxies.sx/v1/x402/manage/pool/connectionRe-emit credentials, recovery (X-Session-Token)

HOW TO BUY (x402)

Buy request parameters (query string on /v1/x402/pool)

ParamRequiredDefaultValid values
tiernomblmbl (6-country carrier modems) or peer (flagship, ~82 countries) - both $4/GB
countrynoany2-letter ISO code (e.g. us, gb) or any
trafficyes, on the paid request-GB, 0.1 to 1000 for mbl. Any request without a payment header returns the 402 catalog regardless
durationno2592000 (30 days)seconds, max 7776000 (90 days). Duration never changes the price
sidnoauto-generated8-64 chars [a-z0-9_]; anything that sanitizes shorter is replaced with a random sid (see sid rules below)
rotnostickysticky, hard, auto5, auto10, auto20, auto60, ondemand

Step 1: Request access

curl "https://api.proxies.sx/v1/x402/pool?tier=mbl&country=us&traffic=1"

With no payment header it returns HTTP 402 with the tier catalog and the wallets to pay:

{
  "x402Version": 1,
  "error": "Payment required",
  "accepts": [
    { "scheme": "exact", "network": "base",
      "maxAmountRequired": "4000000",
      "payTo": "0xF8cD900794245fc36CBE65be9afc23CDF5103042",
      "asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913" },
    { "scheme": "exact", "network": "solana",
      "maxAmountRequired": "4000000",
      "payTo": "6eUdVwsPArTxwVqEARYGCh4S2qwW2zCs7jSEDRpxydnv",
      "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" }
  ]
}

maxAmountRequired is micro-USDC (6 decimals): 4000000 = $4.00 = 1 GB. The live 402 also carries an accepts[].outputSchema - ignore it: it is inherited from the dedicated-port product and is wrong for pool purchases (the real parameters are in the table above).

Step 2: Pay USDC on-chain

Send the USDC ($4 = 1 GB) to the recipient wallet on Base (~2s) or Solana (~400ms).

Step 3: Retry with the payment

curl "https://api.proxies.sx/v1/x402/pool?tier=mbl&country=us&traffic=1" \
  -H "Payment-Signature: <your_transaction_hash>"

You receive one gateway credential (username token + secret) plus a session token to manage it:

{
  "product": "pool",
  "proxy": {
    "host": "gw.proxies.sx",
    "httpPort": 7000,
    "username": "psx_<account>-mbl-us-sid-<id>-rot-sticky",
    "password": "pak_xxxxxxxxxxxxxxxxxxxxxxxx",
    "http": "http://psx_<account>-mbl-us-sid-<id>-rot-sticky:pak_...@gw.proxies.sx:7000",
    "socks5": null
  },
  "credit": {
    "allocatedGB": 1,
    "usedGB": 0,
    "remainingGB": 1,
    "expiresAt": "2026-08-01T00:00:00.000Z"
  },
  "sessionToken": "x402s_...",
  "manage": { "credit": "...", "topup": "...", "usage": "...", "regenerate": "...", "connection": "..." }
}

Persist three fields: (1) proxy.password - the pak_ secret, your gateway password; (2) sessionToken (top-level) - the x402s_ token, the ONLY way to manage or recover the credential; (3) your payment tx hash - proof of purchase. The returned proxy.username already carries your -sid- and -rot- tokens (the values you passed at buy time, or generated defaults). Use it as returned; edit only the country slot per request.

HTTP :7000 only in v1 - this x402-purchased credential is rejected on :7001 (SOCKS5). SOCKS5 is available for reseller-minted pak_ keys and regular account credentials, not the house/x402 credential.


BUILD THE USERNAME (ROUTING DSL)

One credential reaches every country in the tier. You pick the country and behaviour per connection by composing the username from --delimited tokens. The gateway lowercases the whole username and splits on -, so no token value may contain a hyphen. The pak_ secret is the password.

Anatomy

psx_<account>-mbl-<country>[-sid-<id>][-rot-<mode>][-failover-<policy>][-carrier-<slug>]   :   pak_<secret>
└──────────────────────────── username ────────────────────────────┘       (password)

required:  psx_<account>   .   mbl   .   country (2-letter ISO)
optional:  everything in [ ] - order-independent, each has a safe default
TokenValueDefaultNotes
poolmblrequiredv1 production tier (real carrier modems)
country2-letter ISOrequiredsame key, switch per request. Live list: stock endpoint below
sid8-64 [a-z0-9_]noneREQUIRED for a sticky/auto session to persist across connections. See sid rules
rotsee modes belowauto10rotation behaviour
failoversamecountry \| samecarrier \| samenode \| any \| strictsamecountryif the exit dies mid-request, where to retry (samenode = same relay server)
carrierbrand slug (mbl)nonesoft carrier match, e.g. -carrier-tmobile. Never use -asn- on mbl (that is a peer-pool token; it filters mobile stock to zero)
cityslugnonesoft city match, e.g. -city-newyork

Default nuance: a username with no -rot- token gets auto10 at the gateway; the username returned by the purchase carries -rot-sticky unless you passed a different rot= at buy time.

Session ID (sid) rules - the one agents get wrong

The sid is the "port name" that makes a session persist. Use 8-64 chars of [a-z0-9_], no hyphens. The gateway parser is self-healing (it accepts whatever survives sanitization), but at purchase time a sid that sanitizes to fewer than 8 chars is silently replaced with a random one - your intended stickiness is lost. Keep to 8-64 and both the buy path and the gateway path agree:

RuleGoodBad - why
8-64 chars, lowercase a-z / 0-9 / underscorecust_8f3a21bdt1 - under 8 chars, auto-replaced
no uppercase, no hyphens (a hyphen splits the token)order_99213job-42 - two tokens; Job_4201 - uppercase
never emptyworker_0001empty - no session, fresh IP each call
STABLE per workflow/customerreuse the same sid for the same joba new random sid per call = a new IP per call

Derive a sid from any string: lowercase it, delete every char that is not [a-z0-9_], make sure it is 8-64 chars (pad a short one), then reuse it for every request that should share an exit IP. "Order #99/A" -> order_0099a. Note: -session- is NOT a token - only -sid- creates a session.

Rotation modes

ModeBehaviour
auto10 (default)re-pick a fresh modem every 10 min (also auto5 / auto20 / auto60). Omit the -rot- token to get this
stickypin the same modem for the session - needs a -sid-
hardpins like sticky (same modem). It does NOT mean a new IP per request
sticky-strictstrongest IP hold - pins the most IP-stable modem. Best for login / cookie / 2FA flows. Needs a -sid-
ondemandnew IP only when you open a new connection

sticky-strict is the one sanctioned compound: the gateway parses it as rot=sticky plus a strict flag (the DSL splits on -), so its internal hyphen is safe - it does not break the no-hyphen rule for token values.

Sticky pins the MODEM, not the IP - mobile carrier CGNAT can still re-NAT the exit IP across calls. For the strongest hold pair sticky-strict with a stable -sid-.

Live countries (source of truth)

The mbl tier serves US, GB, PL, FR, NL, GE (Georgia), but supply moves. Read the live stock endpoint (online counts per country, no IPs) before targeting a country:

curl https://api.proxies.sx/v1/gateway/pool/stock
# { "pools": { "mbl": { "us": 40, "nl": 26, "pl": 21, "gb": 18, "fr": 17, "ge": 3 } } }

Worked examples (swap in your account + pak)

# 1) US, sticky for one customer - same exit IP across the whole workflow
http://psx_abc123-mbl-us-sid-cust_8f3a21bd-rot-sticky:pak_xxxx@gw.proxies.sx:7000

# 2) UK, default rotation - no sid, so each new connection may land on a different modem
#    (add -sid- for a stable auto10 session that re-picks the modem every ~10 min)
http://psx_abc123-mbl-gb:pak_xxxx@gw.proxies.sx:7000

# 3) Netherlands, strongest IP hold for a login/cookie flow
http://psx_abc123-mbl-nl-sid-login_7782-rot-sticky-strict:pak_xxxx@gw.proxies.sx:7000

# 4) US on T-Mobile specifically (soft carrier match - mbl uses -carrier-, not -asn-)
http://psx_abc123-mbl-us-sid-job_us01-rot-sticky-carrier-tmobile:pak_xxxx@gw.proxies.sx:7000

# Note: SOCKS5 (:7001) is NOT available for x402-purchased pool credentials in v1.
# Use HTTP :7000 only. SOCKS5 works for reseller paks and account credentials - see pool-quickstart.html.

Generate it in code (mirrors the gateway exactly)

// JavaScript
function poolUsername(account, country, { sid, rot } = {}) {
  const slug = s => String(s || '').toLowerCase().replace(/[^a-z0-9_]/g, '').slice(0, 64);
  let u = `psx_${account}-mbl-${country.toLowerCase()}`;
  if (sid) u += `-sid-${slug(sid)}`;                  // stable id, no hyphens
  if (rot && rot !== 'auto10') u += `-rot-${rot}`;     // omit for the default
  return u;
}
const user  = poolUsername('abc123', 'us', { sid: 'cust_8f3a21bd', rot: 'sticky' });
const proxy = `http://${user}:${pak}@gw.proxies.sx:7000`;
# Python
import re
def pool_username(account, country, sid=None, rot=None):
    slug = lambda s: re.sub(r'[^a-z0-9_]', '', (s or '').lower())[:64]
    u = f"psx_{account}-mbl-{country.lower()}"
    if sid: u += f"-sid-{slug(sid)}"
    if rot and rot != "auto10": u += f"-rot-{rot}"
    return u
user  = pool_username('abc123', 'us', sid='cust_8f3a21bd', rot='sticky')
proxy = f"http://{user}:{pak}@gw.proxies.sx:7000"

Output formats (HTTP :7000 - every common proxy-string layout)

FormatExample
URLhttp://USER:pak@gw.proxies.sx:7000
host:port:user:passgw.proxies.sx:7000:USER:pak
user:pass@host:portUSER:pak@gw.proxies.sx:7000

Use it

Success prints the exit IP of a US mobile modem. A 407 means bad credentials or an exhausted/disabled cap - check /v1/x402/manage/pool/credit.

curl -x "http://psx_abc123-mbl-us-sid-cust_8f3a21bd-rot-sticky:pak_xxxx@gw.proxies.sx:7000" https://api.ipify.org

MANAGE YOUR CREDIT

After purchase, manage the credential with the session token (X-Session-Token header):

# Remaining GB
curl "https://api.proxies.sx/v1/x402/manage/pool/credit" \
  -H "X-Session-Token: x402s_..."

Response - metering is live and read-through (remainingGB = allocatedGB - usedGB):

{
  "tier": "mbl",
  "allocatedGB": 1,
  "usedGB": 0.2143,
  "remainingGB": 0.7857,
  "enabled": true,
  "expiresAt": "2026-07-12T00:00:00.000Z",
  "sessionToken": "x402s_..."
}

When usedGB reaches the cap, enabled flips to false automatically and the gateway rejects auth with 407. Top up to re-enable:

# Top up with more USDC (returns a 402, pay it, retry with Payment-Signature)
curl -X POST "https://api.proxies.sx/v1/x402/manage/pool/topup?addTrafficGB=2" \
  -H "X-Session-Token: x402s_..."

Lost the password but kept the session token? GET /v1/x402/manage/pool/connection re-emits the full credentials. POST /v1/x402/manage/pool/regenerate rotates the pak_ secret and keeps the username.


FOR AI AGENTS

A wallet-only agent buys Pool Gateway Access end-to-end with no human and no account:

  1. GET /v1/x402/pool -> 402 catalog with pricing + wallets
  2. Sign and send the USDC transaction from the agent wallet
  3. Retry with the Payment-Signature header -> receive the credential; persist password, sessionToken, and the tx hash
  4. Use one key across every country via the username DSL; top up the same way
ResourceURL
Skill file (this product)agents.proxies.sx/pool/skill.md
Rotation cookbook (copy-paste + footguns)agents.proxies.sx/pool/rotation-cookbook.md
Quickstart (30 seconds)agents.proxies.sx/pool-quickstart.html
Master skill fileagents.proxies.sx/skill.md
x402 discovery/.well-known/x402.json
LLMs.txtagents.proxies.sx/llms.txt
MCP Server@proxies-sx/mcp-server
x402 Protocolx402.org

Support: maya@proxies.sx or https://t.me/proxies_sx - quote the req id from any gateway error body.

Resellers can mint their own per-customer pak_ keys for the same gateway - see Build & Resell.


PAYMENT WALLETS

NetworkSettlementRecipient WalletUSDC Contract
Base~2 seconds0xF8cD900794245fc36CBE65be9afc23CDF51030420x833589fcd6edb6e08f4c7c32d4f71b54bda02913
Solana~400ms6eUdVwsPArTxwVqEARYGCh4S2qwW2zCs7jSEDRpxydnvEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Proxies.sx - Pool Gateway Access | Dedicated Proxy | Pool Gateway | Peer Network | Build & Resell