REST API · No email required · USDC per request

Residential Proxy API
for AI Agents

Register with a wallet signature, fund with USDC, proxy through residential IPs. 5 API calls. Zero emails. Zero humans.

Base URL: https://api.rentatube.dev/api/v1
Auth: X-API-Key: rt_live_...
Payment: USDC on Base L2 (pre-deposited to escrow)

5 API calls from zero to proxying

No SDK required. Works with curl, httpx, fetch, or any HTTP client.

1 Register with wallet signature POST /auth/register
curl -X POST https://api.rentatube.dev/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
  "email": "[email protected]",
  "walletAddress": "0xYourAddress",
  "accountType": "agent",
  "walletSignature": "0xSignedMsg...",
  "signedMessage": "any message"
}'
Response: { data: { id, walletAddress, emailVerified: true } }
2 Login to get a JWT POST /auth/login
curl -X POST https://api.rentatube.dev/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
  "email": "[email protected]",
  "walletAddress": "0xYourAddress"
}'
Response: { data: { token: "eyJ..." } }
3 Get challenge and create API key GET + POST /auth/api-key
# Get challenge message
curl https://api.rentatube.dev/api/v1/auth/api-key/challenge

# Sign the challenge with your wallet, then:
curl -X POST https://api.rentatube.dev/api/v1/auth/api-key \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  -d '{
  "walletAddress": "0xYourAddress",
  "signature": "0xSignedChallenge...",
  "message": "RentaTube API Key Request: 1709500000000"
}'
Response: { data: { apiKey: "rt_live_abc123..." } }
4 Fund your escrow balance USDC on Base L2
# Deposit USDC to escrow contract on Base L2
# Or use the dev faucet (non-production only):
curl -X POST https://api.rentatube.dev/api/v1/dev/faucet \
  -H "Content-Type: application/json" \
  -d '{
  "accountId": "your-account-uuid",
  "amount": "10.00000000"
}'
Response: { data: { credited: "10", escrowBalance: "10", faucetRemaining: "90" } }
5 Make a proxy request POST /proxy
curl -X POST https://api.rentatube.dev/api/v1/proxy \
  -H "X-API-Key: rt_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
  "responseFormat": "text",
  "country": "US",
  "request": {
    "method": "GET",
    "url": "https://httpbin.org/ip",
    "timeout": 30000
  }
}'
Response:
{
  "data": {
    "response": {
      "statusCode": 200,
      "headers": {},
      "body": "{\"origin\":\"73.162.xxx.xxx\"}"
    },
    "meta": {
      "nodeId": "uuid",
      "nodeCountry": "US",
      "responseTimeMs": 142,
      "paymentAmount": "0.00100000",
      "remainingBalance": "9.99900000"
    }
  },
  "error": null
}

Proxy request schema

POST /api/v1/proxy — all fields documented.

nodeId
string (uuid)
Optional. Route through a specific node.
country
string (2 chars)
Optional. ISO 3166-1 alpha-2 country code.
minReputation
number (0-100)
Optional. Minimum node reputation score.
responseFormat
"base64" | "text"
Default: "base64". Use "text" for JSON/HTML.
request.method
string
GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.
request.url
string (URL)
Required. The target URL to proxy.
request.headers
Record<string, string>
Optional. Custom headers to forward.
request.body
string
Optional. Request body (for POST/PUT/PATCH).
request.timeout
number (ms)
Default: 30000. Range: 1000-120000.

Node discovery

GET /api/v1/discover — find available nodes.

Query parameters
country Filter by ISO 3166-1 alpha-2 country code
minReputation Minimum reputation score (0-100)
maxPrice Maximum price per request in USDC
page Page number (default: 1)
limit Results per page (default: 20, max: 100)
Example:
curl -H "X-API-Key: rt_live_..." \
"https://api.rentatube.dev/api/v1/discover?country=US&minReputation=50"

Error codes

All errors follow { data: null, error: { code, message } } format.

DOMAIN_BLOCKED Target domain is blocked by platform or host
INSUFFICIENT_BALANCE Not enough USDC in escrow
NO_NODES_AVAILABLE No nodes match your criteria
NODE_OFFLINE The specified node is not online
UPSTREAM_TIMEOUT Target server did not respond in time
UPSTREAM_ERROR Target server connection failed
INVALID_CREDENTIALS API key or JWT is invalid
RATE_LIMITED Too many requests
INVALID_WALLET_SIGNATURE Wallet signature does not match address

Simple pricing

You pay what the host charges plus a 10% platform fee.
Typical rate: $0.001-$0.003 per request.

See full pricing breakdown →

Common questions

What is RentaTube?
RentaTube is a peer-to-peer residential proxy marketplace. AI agents pay per HTTP request in USDC on Base L2. Hosts earn USDC by sharing their residential IP. The API routes your HTTP request through a real residential IP and returns the response.
How do I register as an AI agent?
POST to /api/v1/auth/register with an email, walletAddress, accountType "agent", and a walletSignature + signedMessage. The wallet signature proves you own the address and skips email verification. You get an account instantly.
How do I authenticate API requests?
Use the X-API-Key header with your API key (starts with rt_live_ or rt_test_). Get the key by: 1) login to get a JWT, 2) GET /api/v1/auth/api-key/challenge, 3) sign the challenge with your wallet, 4) POST /api/v1/auth/api-key.
What does a proxy request cost?
Each request costs what the host node charges (typically $0.001-$0.003) plus a 10% platform fee. The cost is returned in the response meta as paymentAmount. Your remaining balance is also returned.
Can I choose which country the request comes from?
Yes. Use GET /api/v1/discover?country=US to find nodes in a specific country (ISO 3166-1 alpha-2 code). Then pass the nodeId in your proxy request, or just use the country parameter and the system picks the best node.
What response formats are available?
Two formats: "base64" (default, safe for binary) and "text" (UTF-8, convenient for JSON/HTML). Set responseFormat in the proxy request body.
Is there a testnet or sandbox?
Yes. In non-production environments, POST /api/v1/dev/faucet with your accountId and amount to get free testnet USDC (up to 100 per account).
What are the rate limits?
Global rate limit applies to all /api/* endpoints. The proxy endpoint is additionally limited by your escrow balance. Specific endpoints like registration and faucet have per-IP rate limits.

Start proxying in 5 API calls

No SDK. No sales call. No enterprise contract. Just an Ethereum wallet and USDC.

Base URL: https://api.rentatube.dev/api/v1
Read the full API docs →