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.
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
| Field | Type |
|---|---|
| name | string — 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
| Field | Type |
|---|---|
| product_id | integer — Product ID from /products |
| pricing_id | integer — 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
| Param | Description |
|---|---|
| status | pending_payment | paid | provisioning | active | expired |
| limit | integer (default 50) |
| offset | integer (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
| Field | Type |
|---|---|
| location_id | string — 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
| Field | Type |
|---|---|
| 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
| Field | Type |
|---|---|
| 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
| Field | Type |
|---|---|
| url | string — HTTPS endpoint URL |
| events | string — 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
| Param | Description |
|---|---|
| limit | integer (default 50) |
| offset | integer (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
| Header | Description |
|---|---|
| X-ProxyVault-Event | The event type (e.g. proxy.provisioned) |
| X-ProxyVault-Signature | HMAC-SHA256 hex digest of the raw request body |
| Content-Type | application/json |