ProxyVault|API Documentation
OpenAPI / Swagger

Reseller API

Programmatically purchase, provision, and manage mobile proxies for your customers. Authenticate with an API key, pay from your balance, and receive real-time webhook notifications.

20 endpointsHMAC-SHA256 webhooks50 US locationsREST + JSON

Quick Start

All requests require a Bearer token with your rv_-prefixed API key:

curl https://proxy-vault.com/v1/reseller/balance \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Purchase a proxy in three steps:

# 1. Browse products
curl https://proxy-vault.com/v1/reseller/products -H "Authorization: Bearer rv_KEY"

# 2. Create an order
curl -X POST https://proxy-vault.com/v1/reseller/orders \
  -H "Authorization: Bearer rv_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product_id": 1, "pricing_id": 2}'

# 3. Pay with balance
curl -X POST https://proxy-vault.com/v1/reseller/orders/42/pay \
  -H "Authorization: Bearer rv_KEY"

Rate Limits

60 requests per minute per API key. Exceeding the limit returns 429 Too Many Requests.

Error Format

{
  "detail": "Insufficient balance"
}

API Keys

Manage your API keys. Each key is prefixed with rv_ and authenticated via Bearer token.

Create a new API key

Request Body

FieldType
namestring — Human-readable label for the key

Example Response

{
  "id": 1,
  "name": "production",
  "key": "rv_ImyAxUR2atlz58Wb1OxBmUzrw...",
  "created_at": "2026-05-25T12:00:00"
}

cURL

curl \
  -X POST \
  https://proxy-vault.com/v1/reseller/keys \
  -H "Authorization: Bearer rv_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"example"}'

List all active API keys

Example Response

{
  "keys": [
    { "id": 1, "name": "production", "last_used_at": "2026-05-25T12:00:00", "created_at": "..." }
  ]
}

cURL

curl \
  https://proxy-vault.com/v1/reseller/keys \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Revoke an API key permanently

Example Response

{ "detail": "API key revoked" }

cURL

curl \
  -X DELETE \
  https://proxy-vault.com/v1/reseller/keys/{key_id} \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Balance

Check your reseller account balance. Top up via the dashboard or crypto deposit.

Get current USD balance

Example Response

{ "balance": "150.00", "currency": "USD" }

cURL

curl \
  https://proxy-vault.com/v1/reseller/balance \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Products

Browse the proxy product catalog with pricing tiers.

List all available products with pricing

Example Response

{
  "products": [
    {
      "id": 1,
      "name": "Multi Hop Proxy",
      "description": "Premium multi-hop mobile proxy...",
      "pricing": [
        { "id": 1, "label": "1 Hour", "price": "10.00", "period_type": "hour", "period_duration": 1 },
        { "id": 2, "label": "24 Hour", "price": "20.00", "period_type": "day", "period_duration": 1 }
      ]
    }
  ]
}

cURL

curl \
  https://proxy-vault.com/v1/reseller/products \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Orders

Create and manage proxy orders. Pay with your reseller balance.

Create a new order

Request Body

FieldType
product_idinteger — Product ID from /products
pricing_idinteger — Pricing tier ID

Example Response

{
  "id": 42,
  "product_name": "Multi Hop Proxy",
  "pricing_label": "Monthly",
  "amount_usd": "225.00",
  "status": "pending_payment",
  "created_at": "2026-05-25T12:00:00"
}

cURL

curl \
  -X POST \
  https://proxy-vault.com/v1/reseller/orders \
  -H "Authorization: Bearer rv_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product_id":1,"pricing_id":1}'

Pay for an order using your balance

Example Response

{
  "order_id": 42,
  "status": "paid",
  "new_balance": "75.00"
}

cURL

curl \
  -X POST \
  https://proxy-vault.com/v1/reseller/orders/{order_id}/pay \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

List your orders with optional filters

Query Parameters

ParamDescription
statuspending_payment | paid | provisioning | active | expired
limitinteger (default 50)
offsetinteger (default 0)

Example Response

{
  "orders": [ ... ],
  "total": 12
}

cURL

curl \
  https://proxy-vault.com/v1/reseller/orders \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Get order details by ID

cURL

curl \
  https://proxy-vault.com/v1/reseller/orders/{order_id} \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Proxies

Manage active proxies — connect, disconnect, switch locations, reset IPs, and change fingerprints.

List all active proxies

Example Response

{
  "proxies": [
    {
      "id": 1,
      "name": "5E9F-2026-03-09",
      "ip": "199.188.89.209",
      "port": 8000,
      "username": "user123",
      "password": "pass456",
      "location_id": "LAX",
      "status": "active",
      "expires_at": "2026-06-25T12:00:00"
    }
  ]
}

cURL

curl \
  https://proxy-vault.com/v1/reseller/proxies \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Get proxy details including credentials

cURL

curl \
  https://proxy-vault.com/v1/reseller/proxies/{proxy_id} \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

List available locations for a proxy

Example Response

{
  "locations": [
    { "id": "LAX", "name": "Los Angeles", "is_5g": false },
    { "id": "NYC", "name": "New York", "is_5g": false },
    { "id": "MIA", "name": "Miami", "is_5g": false }
  ]
}

cURL

curl \
  https://proxy-vault.com/v1/reseller/proxies/{proxy_id}/locations \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Connect proxy to a location (returns new credentials)

Request Body

FieldType
location_idstring — Location ID from /locations

Example Response

{
  "ip": "45.32.100.55",
  "port": 8000,
  "username": "user123",
  "password": "pass456",
  "location_id": "NYC"
}

cURL

curl \
  -X POST \
  https://proxy-vault.com/v1/reseller/proxies/{proxy_id}/connect \
  -H "Authorization: Bearer rv_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"location_id":"example"}'

Disconnect proxy from current location

cURL

curl \
  -X POST \
  https://proxy-vault.com/v1/reseller/proxies/{proxy_id}/disconnect \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Reset the proxy IP address

Request Body

FieldType
mode"fast" or "hard" — Fast keeps session, hard fully resets

cURL

curl \
  -X POST \
  https://proxy-vault.com/v1/reseller/proxies/{proxy_id}/reset \
  -H "Authorization: Bearer rv_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"fast or hard — Fast keeps session, hard fully resets"}'

Change the browser fingerprint profile

Request Body

FieldType
fingerprint"none" | "linux" | "macos" | "windows"

cURL

curl \
  -X POST \
  https://proxy-vault.com/v1/reseller/proxies/{proxy_id}/fingerprint \
  -H "Authorization: Bearer rv_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fingerprint":"none | linux | macos | windows"}'

Webhooks

Receive real-time notifications when orders are provisioned, proxies change status, etc. Payloads are signed with HMAC-SHA256.

Register a webhook endpoint

Request Body

FieldType
urlstring — HTTPS endpoint URL
eventsstring — Comma-separated events or "*" for all. Events: order.paid, proxy.provisioned, proxy.expired

Example Response

{
  "id": 1,
  "url": "https://your-app.com/webhook",
  "secret": "whsec_a1b2c3d4...",
  "events": "*",
  "created_at": "2026-05-25T12:00:00"
}

cURL

curl \
  -X POST \
  https://proxy-vault.com/v1/reseller/webhooks \
  -H "Authorization: Bearer rv_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"example","events":"example"}'

List registered webhooks

cURL

curl \
  https://proxy-vault.com/v1/reseller/webhooks \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Remove a webhook endpoint

cURL

curl \
  -X DELETE \
  https://proxy-vault.com/v1/reseller/webhooks/{webhook_id} \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

View delivery history and response codes

Query Parameters

ParamDescription
limitinteger (default 50)
offsetinteger (default 0)

Example Response

{
  "deliveries": [
    {
      "id": 1,
      "event": "proxy.provisioned",
      "success": true,
      "response_status": 200,
      "attempted_at": "2026-05-25T12:05:00"
    }
  ],
  "total": 3
}

cURL

curl \
  https://proxy-vault.com/v1/reseller/webhooks/{webhook_id}/deliveries \
  -H "Authorization: Bearer rv_YOUR_API_KEY"

Webhook Verification

Verify incoming webhooks using the HMAC-SHA256 signature.

Every webhook delivery includes an X-ProxyVault-Signature header containing the HMAC-SHA256 hex digest of the request body, signed with your webhook secret. Always verify this signature before processing.

Python Example

import hmac, hashlib

def verify_signature(body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(
        secret.encode(), body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

Node.js Example

const crypto = require('crypto');

function verifySignature(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected), Buffer.from(signature)
  );
}

Webhook Headers

HeaderDescription
X-ProxyVault-EventThe event type (e.g. proxy.provisioned)
X-ProxyVault-SignatureHMAC-SHA256 hex digest of the raw request body
Content-Typeapplication/json