x402 · USDC on Base · non-custodial
The proxy built for AI agents.
One x402 payment gets your agent a residential IP with a guaranteed 30–60 minute sticky session — as a single fetch, or as standard proxy credentials Playwright can use. Pay per request in USDC.No signup. No API keys. No subscription.
# 1 — ask without paying: the 402 response tells you the price
$ curl -i -X POST https://proxy.aproxpay.com/v1/proxy \
-H 'Content-Type: application/json' \
-d '{"url": "https://example.com", "sticky": true, "region": "us"}'
HTTP/1.1 402 Payment Required
payment-required: <base64> # decodes to:
{
"accepts": [{
"scheme": "exact",
"network": "eip155:8453",
"amount": "3000", # $0.003 USDC
"payTo": "0x…"
}]
}
# 2 — retry with a signed USDC transfer (x402 SDKs automate this loop)
$ curl -X POST https://proxy.aproxpay.com/v1/proxy \
-H 'X-PAYMENT: <base64 signed payment>' \
-H 'Content-Type: application/json' \
-d '{"url": "https://example.com", "sticky": true, "region": "us"}'
HTTP/1.1 200 OK
x-target-status: 200 # origin status; body is the fetched page via a residential IPx402 in 3 steps
How it works
- 1
Request
Call any endpoint with plain HTTP. No account, no key, no SDK required — your wallet is your identity.
- 2
402 challenge
The API answers 402 Payment Required with the exact price in USDC. Nothing has been charged yet — the price is part of the protocol, not a pricing page.
- 3
Pay & go
Sign a USDC transfer (EIP-3009), retry with the X-PAYMENT header, get your response. Settlement is non-custodial: funds move directly from your wallet to ours. Failed requests are never charged.
The whole API
Endpoints
Base URL: https://proxy.aproxpay.com. Paid routes respond 402 until an X-PAYMENT header carries a valid USDC payment. Sessions tunnel through https://gw.aproxpay.com:443 (TLS CONNECT — not plain HTTP; :8443 is a TLS fallback).
| Endpoint | Price | Description |
|---|---|---|
| GET/health | free | Liveness check. Returns { status, timestamp }. |
| GET/v1/countries | free | List of exit countries available for POST /v1/proxy and session passes (ISO 3166-1 alpha-2). Pass one as { region } on fetch or when creating a session. |
| POST/v1/proxy | $0.003 | Fetch a URL through a residential IP and get the response back. Returns HTTP 200 with the target body; origin status in the X-Target-Status header. Body: { url, sticky?, sticky_duration?, region? }. Response capped at 2MB. |
| POST/v1/proxy/large | $0.015 | Same as /v1/proxy with a 5MB response cap — for heavier pages and files. Returns HTTP 200 with the target body; origin status in the X-Target-Status header. Body also accepts region?. |
| POST/v1/session | $0.05 | Mint ephemeral TLS CONNECT credentials: { scheme: "https", host, port, username, password, expiresAt, byteCap }. Use https://user:pass@host:port (curl --proxy https://…). Plain http:// is not supported. Prefer returned port (usually 443); :8443 is a TLS fallback. 30 min + 15MB, sticky exit IP. Body: { region? }. |
| POST/v1/session/heavy | $0.50 | Heavy session pass — same CONNECT credentials with 60 min + 200MB for longer multi-step workflows. |
| POST/v1/session/gb | $2.50 | GB pass on a dedicated sub-user: up to 120 min + 1GB for sustained volume. Not extendable — buy a new pass instead. |
| POST/v1/session/:id/extend | $0.15 | Top up a live pooled session with +30 min and +50MB — same exit IP, paid with another x402 payment. GB passes are not extendable. |
| POST/v1/session/:id/close | free | Revoke a session early. Authenticated with the session's own credentials (Basic auth). |
Pay per use
Pricing
Fetch
$0.003per request
- Residential exit IP
- Up to 2MB response
- Sticky IP 30–60 min
- Pick an exit country for free
- One HTTP call — pay, fetch, done
Fetch Large
$0.015per request
- Residential exit IP
- Up to 5MB response
- Sticky IP 30–60 min
- Pick an exit country for free
- For heavy pages and files
Session
$0.05per 30 min
- Standard CONNECT proxy credentials
- 15MB included
- Same exit IP for the whole session
- Playwright / browser-use ready
- Pick an exit country for free
Session Heavy
$0.50per 60 min
- Standard CONNECT proxy credentials
- 200MB included
- Same exit IP for the whole session
- For longer multi-step workflows
Session GB
$2.50per pass
- Dedicated sub-user, not the shared pool
- 1GB included, up to 120 min
- For sustained scraping volume
- Not extendable — buy another pass
Extend
$0.15per top-up
- +30 min and +50MB
- Same exit IP — no rotation
- Applies to pooled sessions
- Pay as many times as you need
Current published pricing. Paid in USDC on Base; the exact amount is always stated in the 402 response.
The difference
Why AproxPay
| AproxPay | Other x402 proxies | Legacy providers | |
|---|---|---|---|
| x402 native — pay per request in USDC | ✓ | ✓ | — |
| Guaranteed 30–60 min sticky sessions | ✓ | — | ✓ |
| Standard CONNECT proxy for one payment (Playwright-ready) | ✓ | — | — |
| No signup, no API key | ✓ | ✓ | — |
| No subscription or minimum commit | ✓ | ✓ | — |
| Residential IP pool | ✓ | — | ✓ |
Most x402 proxies rotate your IP every few minutes — fatal for multi-step agent workflows like logins, checkouts, or form flows. Legacy providers keep the IP but want a subscription, KYC, and an API key before your agent makes its first request.
Integrations
Works with your stack
Any x402 client
available nowThe API is plain HTTP + x402. x402-fetch, x402-axios, x402-requests or your own 402→sign→retry loop all work today.
MCP server
available nownpx -y aproxproxy-mcplist_countries, proxy_get, create_session, extend_session and close_session as MCP tools for Claude and other MCP clients.
LangChain & CrewAI
coming soonDrop-in Tool classes for Python and JS agents — point your agent at the proxy without writing payment code.
x402 Bazaar
available nowListed in the x402 discovery index, so agents can find and pay for the service autonomously.
Questions
FAQ
- What is x402?
- x402 is an open payment protocol built on the HTTP 402 status code. When your agent calls a paid endpoint without payment, the API answers 402 with the exact price in USDC. The agent signs a USDC transfer, retries the request with an X-PAYMENT header, and gets the result. No accounts, no invoices — every request pays for itself.
- Do I need an account or an API key?
- No. Your wallet is your identity. Any agent holding USDC on Base can start making requests immediately — there is no signup form, no dashboard, and no key to provision or leak.
- Which network and token do you accept?
- USDC on Base (network eip155:8453), using the x402 exact-payment scheme (EIP-3009 signed transfers). Payments settle on-chain directly from your wallet to ours — we never hold your funds.
- Am I charged if a request fails?
- You pay for a successful residential forward, not for a 2xx from the origin. Target 4xx/5xx still settle: the proxy returns HTTP 200 with the origin body and puts the real origin code in the X-Target-Status header. You are not charged only when our infrastructure fails — byte-cap 413, upstream 502/503, or blocklist/OFAC 403 — those responses stay HTTP >=400 and cancel the payment.
- How do sticky sessions work?
- POST /v1/session returns TLS CONNECT credentials (scheme, host, port, username, password) bound to one residential exit IP. Build https://user:pass@host:port — never plain http:// (TLS edge; http:// to :443 hits the web front). Production prefers gw.aproxpay.com:443; :8443 remains a TLS fallback with the same credentials. The entry pass gives you 30 minutes + 15MB, the heavy pass 60 minutes + 200MB, and the GB pass up to 120 minutes + 1GB on a dedicated sub-user. Pooled passes are extendable (+30 min, +50MB) without changing the IP. Works with Playwright, browser-use, curl, or any HTTPS-proxy client — no SDK required. You can also pick an exit country for free on POST /v1/proxy and when creating a session (see GET /v1/countries).
- What happens when I hit the byte cap?
- Every payment carries a hard byte cap (2MB or 5MB per request; 15MB, 200MB, or 1GB per session). When a session reaches its cap, traffic stops until you extend it — same exit IP. Per-request fetches over the cap are rejected rather than silently billed.