Guides and reference

ProxyBox documentation

Set up a box, connect an app, understand Private Wi-Fi, and find the right recovery step without guessing.

Quick Start

Go from unboxing to your first proxied request in five steps. Most setups take a few minutes; first boot can take up to 90 seconds.

1

Plug it in

Connect the included USB-C power cable. The front LED pulses blue during boot, then turns solid green when ready (about 90 seconds on first boot).

2

Pick a pairing path

Use ProxyBox Connect for iPhone when installed, Web Bluetooth at proxybox.us/pair from a Mac/Windows/Linux desktop, or the captive Wi-Fi portal (join ProxyBox-Setup-XXXX from any phone or laptop). All three paths end at the same Wi-Fi credential prompt.

3

Hand over Wi-Fi and pair

Pick your home Wi-Fi network and enter the password. The box joins your network, registers with the service, establishes its secure connection, and starts the proxy service automatically.

4

Get your credentials

The app displays your proxy credentials (host, port, username, password). The same credentials and live connection status are also available in the web dashboard.

5

Send your first request

Use your proxy credentials with any HTTP or HTTPS client. Your traffic now routes through your home residential IP.

Terminal
curl -x http://user:pass@proxy.proxybox.us:8080 https://httpbin.org/ip

Prerequisites

  • A ProxyBox device (order at proxybox.us/pricing)
  • A home Wi-Fi network with the password handy (the standard ProxyBox joins 2.4 GHz; ProxyBox Pro supports 5 GHz and can plug straight into your router over built-in Ethernet instead)
  • For pairing: an iPhone (iOS 16+) with Bluetooth, OR a desktop browser with Web Bluetooth (Chrome / Edge / Opera), OR any device that can join a Wi-Fi network for the captive portal
  • A ProxyBox account (free or premium)

Proxy Setup

ProxyBox provides a standard HTTP/HTTPS proxy. Your credentials and your device's proxy host and port are available in the dashboard under Devices → Proxy Credentials.

cURL

The simplest way to test your proxy connection.

HTTP Proxy
# HTTP proxy (use the host and port shown in your dashboard)
curl -x http://USERNAME:PASSWORD@HOST:PORT https://httpbin.org/ip

# Verify your residential IP is returned
# Response: {"origin": "73.162.xxx.xxx"}

Python

Works with the requests library and any library that supports standard proxy configuration.

Python · requests
import requests

proxies = {
    "http":  "http://USERNAME:PASSWORD@proxy.proxybox.us:8080",
    "https": "http://USERNAME:PASSWORD@proxy.proxybox.us:8080",
}

response = requests.get("https://httpbin.org/ip", proxies=proxies)
print(response.json())
# {'origin': '73.162.xxx.xxx'}
Python · aiohttp (async)
import aiohttp
import asyncio

async def fetch():
    proxy = "http://USERNAME:PASSWORD@proxy.proxybox.us:8080"
    async with aiohttp.ClientSession() as session:
        async with session.get("https://httpbin.org/ip", proxy=proxy) as resp:
            print(await resp.json())

asyncio.run(fetch())

Node.js

Node.js · node-fetch + https-proxy-agent
import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';

const agent = new HttpsProxyAgent(
  'http://USERNAME:PASSWORD@proxy.proxybox.us:8080'
);

const res = await fetch('https://httpbin.org/ip', { agent });
console.log(await res.json());
// { origin: '73.162.xxx.xxx' }
Node.js · axios
import axios from 'axios';

const { data } = await axios.get('https://httpbin.org/ip', {
  proxy: {
    host: 'proxy.proxybox.us',
    port: 8080,
    auth: { username: 'USERNAME', password: 'PASSWORD' }
  }
});
console.log(data);

Browser Extensions

Configure any browser proxy extension (FoxyProxy, SwitchyOmega, etc.) with these settings:

ProtocolHTTP / HTTPS
HostYour device's proxy host from dashboard
PortYour device's proxy port from dashboard (default 8080)
UsernameYour proxy username from dashboard
PasswordYour proxy password from dashboard

Selenium / Playwright

Python · Selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--proxy-server=http://USERNAME:PASSWORD@proxy.proxybox.us:8080')

driver = webdriver.Chrome(options=options)
driver.get('https://httpbin.org/ip')
print(driver.page_source)
driver.quit()
Python · Playwright
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://proxy.proxybox.us:8080",
        "username": "USERNAME",
        "password": "PASSWORD",
    })
    page = browser.new_page()
    page.goto("https://httpbin.org/ip")
    print(page.content())
    browser.close()
JavaScript · Playwright
import { chromium } from 'playwright';

const browser = await chromium.launch({
  proxy: {
    server: 'http://proxy.proxybox.us:8080',
    username: 'USERNAME',
    password: 'PASSWORD',
  }
});

const page = await browser.newPage();
await page.goto('https://httpbin.org/ip');
console.log(await page.textContent('body'));
await browser.close();

API Reference

The ProxyBox API is available at https://proxybox.us/api. All requests require a Bearer token obtained from the login endpoint.

Authentication

POST /api/auth/login
# Request
curl -X POST https://proxybox.us/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "your-password"}'

# Response
{
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": {
    "id": "usr_abc123",
    "email": "user@example.com",
    "plan": "premium"
  }
}

Include the token in all subsequent requests as Authorization: Bearer <token>.

Devices

GET /api/devices
# List all your devices
curl https://proxybox.us/api/devices \
  -H "Authorization: Bearer YOUR_TOKEN"

# Response
{
  "devices": [
    {
      "id": "dev_xyz789",
      "name": "Home Office",
      "status": "online",
      "public_ip": "73.162.xxx.xxx",
      "firmware_version": "1.2.0",
      "last_seen": "2026-04-05T14:23:00Z"
    }
  ]
}

Proxy Credentials

Each device has a single active proxy credential pair. Fetch the current credentials below. To rotate, use the dashboard or app, which generates a new pair and invalidates the old one. The host returned is the relay assigned to your device, so the proxy address is a per-device host:port (not a single shared hostname).

GET /api/user/devices/:id/proxy-creds
# Get the current proxy credentials for a device
curl https://proxybox.us/api/user/devices/dev_xyz789/proxy-creds \
  -H "Authorization: Bearer YOUR_TOKEN"

# Response
{
  "host": "relay-xx.proxybox.us",
  "port": 8080,
  "username": "px_abc456",
  "password": "sk_live_...",
  "http_proxy": "http://px_abc456:sk_live_...@relay-xx.proxybox.us:8080"
}

Troubleshooting

Device shows as offline

  • • Confirm your home Wi-Fi network is up and the password has not changed since pairing.
  • • Check that the LED is solid green. If it is blinking red, the device cannot reach the internet.
  • • Ensure your router has DHCP enabled and is assigning an IP to the device.
  • • Try power-cycling the device by unplugging the USB-C cable for 10 seconds.
  • • If the device is behind a restrictive firewall, try setup from a standard home or mobile-hotspot connection.

Proxy connection refused or times out

  • • Double-check your credentials in the dashboard. Credentials are case-sensitive.
  • • Verify the device is online in the dashboard before attempting to connect.
  • • Test with curl -v -x http://user:pass@proxy.proxybox.us:8080 https://httpbin.org/ip to see detailed connection errors.
  • • If you are on a corporate network, it may block outbound proxy connections. Try from another permitted network.

Bluetooth pairing fails

  • • Make sure Bluetooth is enabled on your phone and the ProxyBox app has Bluetooth permissions.
  • • Move your phone within 3 feet of the ProxyBox device.
  • • If the device LED is not green, wait for it to finish booting before attempting to pair.
  • • Try force-closing and reopening the ProxyBox app.

Security

Security is foundational to ProxyBox. Here is how we protect your data at every layer.

Encryption

With proxy access, HTTPS destinations keep their normal browser-to-destination TLS through the HTTP CONNECT tunnel; plain HTTP is not end-to-end encrypted and should not be used for sensitive traffic. Device management uses HTTPS plus per-device request signatures.

HMAC Authentication

Every device-to-API communication is signed with HMAC-SHA256 using a per-device secret key. This prevents request tampering and replay attacks. The raw request body is signed (not the parsed JSON) to prevent serialization-related bypasses.

Firmware Updates

Firmware releases are staged in canary batches. The device checks package integrity before applying a release, while the dashboard records the version and rollout state. During early access, delivery may be over the air or through a prepared card, and not every release has automatic rollback; keep the last known-good card until a new version is boot-proven.

Zero-Logs Policy

ProxyBox does not log, store, or inspect the content of your proxy traffic. We store only the minimum metadata required for device management: device status, firmware version, and connection timestamps. We never store DNS queries, browsing history, request URLs, or response bodies.

Account Security

All passwords are hashed with bcrypt (cost factor 12). Two-factor authentication is on our roadmap and coming soon. Sessions expire after 7 days of inactivity. API tokens can be rotated or revoked at any time from the dashboard.