No KYC — no ID, no selfie, no documents. Pay in crypto: BTC, USDT, USDC, ETH, SOL, LTC · Top up from $25
Buy proxies

Developers

StatesideIP API documentation

Everything you do in your account can be scripted: check the balance, top up in crypto, buy a plan, create proxy credentials, rotate a mobile IP. JSON over HTTPS, one API key, examples in curl, Python and Node.js.

Last updated: · 4 min read

Quick answer

How do I use the StatesideIP API?

Send HTTPS requests to https://statesideip.com/api/v1 with your API key in the header Authorization: Bearer API_KEY. Create the key on the API & IP whitelist page of your account (or with POST /v1/api-keys) and give it only the scopes it needs. Requests and responses are JSON; errors always come back as { "error": { "code", "message" } }.

At a glance

Base URLhttps://statesideip.com/api/v1
FormatJSON over HTTPS, UTF-8
AuthenticationAPI key: Authorization: Bearer API_KEY
API key scopesread, proxies, billing
MoneyUSD as a string with 2 decimals ("29.00")
Crypto amountsDecimal strings, never floats ("0.00045210")
TrafficBytes (1 GB = 1,000,000,000 bytes)
DatesISO 8601 in UTC (2026-10-05T14:03:11Z)
Version/v1 in every path

Authentication

Every request except the public catalogue carries an API key: Authorization: Bearer API_KEY. A key is shown in full once, when you create it: store it like a password. Revoke a key at any time; requests made with it then return 401 unauthorized.

Scopes

Give each key only what your script needs. A key without the required scope gets 403 forbidden.

ScopeWhat it allows
readread everything (account, balance, services, usage).
proxiesmanage sub-users, whitelist, rotate/relocate mobile ports (includes the rotation link).
billingcreate orders and top-ups, pay from the balance.

The only exception is the mobile rotation link, made to be called from a browser bookmark or a plain curl: GET https://statesideip.com/api/v1/mobile/PORT_ID/rotate?key=API_KEY (key with the proxies scope). See Mobile ports and IP rotation.

Check your balance
curl -s "https://statesideip.com/api/v1/balance" \
  -H "Authorization: Bearer $API_KEY"

Requests and responses

  • JSON in, JSON out: send Content-Type: application/json with a body.
  • Lists that can grow are paginated with page (from 1) and perPage (1–100, default 20) and return { "data": [...], "pagination": { "page", "perPage", "total", "totalPages" } }. Short lists return { "data": [...] }.
  • IDs are opaque strings with a type prefix: ord_ (order), top_ (top-up), txn_ (balance movement), res_ (traffic subscription), mob_ (mobile port), key_ (API key), ipw_ (whitelisted IP).
  • Safe retries: POST /v1/orders and POST /v1/topups accept an Idempotency-Key header (any unique string, kept 24 h). Replaying the same key returns the first response instead of buying or topping up twice.
  • Examples show the shape of each answer: the IDs, IPs, amounts and dates in them are illustrative, the plan ids and prices are the real ones.

Errors

Every error has the same body. code is stable and meant for your code; message is an English sentence that may change. Validation errors list each invalid field in fields. New codes may be added: handle unknown codes as a generic failure.

422 validation_failed
{
  "error": {
    "code": "validation_failed",
    "message": "Some fields are invalid.",
    "fields": [
      {
        "field": "amountUsd",
        "code": "too_small",
        "message": "The minimum top-up is 25.00 USD."
      }
    ],
    "requestId": "req_2b7c0f"
  }
}

Status codes

StatusMeaning
422validation_failed: one or more fields are invalid.
401unauthorized: missing, invalid or expired token.
402insufficient_balance: the balance does not cover the order. details = InsufficientBalanceDetails.
403forbidden: the API key lacks the required scope, or the account is suspended.
404not_found: the resource does not exist or belongs to another account.
409conflict (or a more specific code): the action is not possible in the current state.
429rate_limited or rotation_too_soon.

Rate limits

Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset. Above the limit the API answers 429 rate_limited with a Retry-After header (seconds): wait that long, then retry. Changing the IP of a mobile port is limited separately: one rotation every 30 seconds per port by default (429 rotation_too_soon).

API reference

From $0.52/GB · no KYC

Buy proxies