Home / API Docs

Automate
everything.

Resell our infrastructure under your brand. Plug-and-play billing platform integrations, plus complete REST API references for VPS and proxy provisioning.

Authentication

All API requests require authentication via the X-Reseller-Key header. Same key as the server APIs.

X-Reseller-Key: your_api_key_here

Base URL

https://servury.com/api/proxy.php

Response Format

All endpoints return JSON. Successful responses:

{"success": true, "data": {...}}

Error responses:

{"success": false, "error": "message"}

Parameters may be sent as a JSON body, as form fields, or in the query string. If the same parameter appears in more than one place, the JSON body wins, then the form field, then the query string.

Proxy Types

TypeDescriptionBilling
datacenterStatic IPv4/IPv6 proxies in US, CA, FR, UK, NL. HTTP + SOCKS5.Per proxy, per day (3-365 days)
residentialRotating residential IPs. Bandwidth-based, no expiration.Per GB of bandwidth
rotatingRotating IPv6 proxies in Canada. Configurable thread count.Per duration + thread count
GET

?action=account

Get reseller account info (balance, discount, payment method).

Example Response

{
    "success": true,
    "data": {
        "balance": 42.50,
        "discount_percent": 33.3,
        "payment_method": "account_balance",
        "has_saved_card": false
    }
}
GET

?action=stock

Get datacenter proxy stock by country and IP type. Check this before ordering.

Example Response

{
    "success": true,
    "data": {
        "stock": {
            "ipv4": {"us": 150, "ca": 80, "fr": 45, "uk": 60, "nl": 30},
            "ipv6": {"us": 500, "ca": 200}
        }
    }
}
GET

?action=price

Calculate price for any proxy type before ordering. Returns your reseller price.

ParameterTypeDescription
type *stringdatacenter, residential, or rotating
daysintegerDuration (datacenter: 3-365, rotating: 7/14/30/60/90)
quantityintegerNumber of proxies (datacenter only, 1-100)
bandwidthintegerGB of bandwidth (residential only, 1-1000)
threadsintegerThread count (rotating only, 100-5000)
GET

?action=proxies

List all proxies (datacenter, residential, and rotating) with credentials.

GET

?action=proxy&id={proxy_id}

Get detailed info for a single proxy including credentials and whitelisted IPs.

ParameterTypeDescription
id *string8-character proxy ID

Residential proxies report bandwidth both in MB and in GB (bandwidth_used_gb, bandwidth_total_gb, bandwidth_remaining_gb). 1 GB is 1000 MB and the GB values are rounded to two decimals, matching the panel; whole numbers are sent without a fractional part (10, not 10.0). The same GB fields appear on residential entries of ?action=proxies.

Example Response (residential)

{
    "success": true,
    "data": {
        "proxy": {
            "id": "abc12345",
            "type": "residential",
            "username": "user123",
            "password": "pass456",
            "bandwidth_total_mb": 10000,
            "bandwidth_remaining_mb": 7350,
            "bandwidth_used_gb": 2.65,
            "bandwidth_total_gb": 10,
            "bandwidth_remaining_gb": 7.35,
            "status": "active",
            "created_at": 1714000000
        }
    }
}
GET

?action=usage&id={proxy_id}

Bandwidth usage time series for a residential proxy, the same data the residential panel graph is drawn from. Remaining bandwidth is snapshotted hourly; each point is the drop in remaining bandwidth since the previous snapshot, floored at zero, so a top-up never shows as negative usage. Only residential proxies have usage data; other types return a 400 error.

ParameterTypeDescription
id *string8-character proxy ID (residential only)
timeframestring24hr or 7d (default: 24hr)

unit is always mb. interval_seconds is the typical spacing between points. total_mb is the sum of all points in the window and bandwidth_remaining_mb is the current remaining balance. used_mb and total_mb are numbers rounded to two decimals; whole numbers are sent without a fractional part. time values are Unix seconds, UTC. points is empty until at least two snapshots exist in the window.

Example Request

curl -H "X-Reseller-Key: your_api_key_here" \
  "https://servury.com/api/proxy.php?action=usage&id=abc12345&timeframe=24hr"

Example Response

{
    "success": true,
    "data": {
        "proxy_id": "abc12345",
        "timeframe": "24hr",
        "unit": "mb",
        "interval_seconds": 3600,
        "points": [
            {"time": 1714000000, "used_mb": 120},
            {"time": 1714003600, "used_mb": 0},
            {"time": 1714007200, "used_mb": 85}
        ],
        "total_mb": 205,
        "bandwidth_remaining_mb": 7350
    }
}
POST

?action=create_datacenter

Order datacenter proxies. Returns proxy credentials immediately.

ParameterTypeDescription
country *stringUS, CA, FR, UK, or NL
daysinteger3-365 (default: 30)
quantityinteger1-100 (default: 1)
ip_typestringipv4 or ipv6 (default: ipv4)

Example Response

{
    "success": true,
    "data": {
        "message": "1 datacenter proxy created.",
        "proxies": [{
            "id": "abc12345",
            "ip": "185.123.45.67",
            "port_http": 8080,
            "port_socks5": 1080,
            "username": "user123",
            "password": "pass456",
            "expiration_date": 1714000000
        }],
        "amount_charged": 2.50
    }
}
POST

?action=create_residential

Order a residential proxy subscription with bandwidth.

ParameterTypeDescription
bandwidth *integerBandwidth in GB (1-1000)
POST

?action=create_rotating

Order a rotating IPv6 proxy.

ParameterTypeDescription
countrystringCurrently only CA (default)
daysinteger7, 14, 30, 60, or 90 (default: 30)
threadsinteger100-5000 (default: 100)
protocolstringCurrently only ipv6 (default)
POST

?action=renew&id={proxy_id}

Renew a datacenter or rotating proxy. Not applicable to residential (use topup instead).

ParameterTypeDescription
id *string8-character proxy ID
days *integerDatacenter: 3-365. Rotating: 7/14/30/60/90.
POST

?action=topup&id={proxy_id}

Add bandwidth to a residential proxy.

ParameterTypeDescription
id *string8-character proxy ID
bandwidth *integerGB to add (1-1000)
POST

?action=reset_credentials&id={proxy_id}

Reset proxy username/password. Works for all proxy types. Returns new credentials.

ParameterTypeDescription
id *string8-character proxy ID
POST

?action=add_ip&id={proxy_id}

Add an IP to the proxy whitelist (datacenter and rotating only).

ParameterTypeDescription
id *string8-character proxy ID
ip *stringIP address to whitelist
POST

?action=remove_ip&id={proxy_id}

Remove an IP from the proxy whitelist.

ParameterTypeDescription
id *string8-character proxy ID
ip *stringIP address to remove
POST

?action=terminate&id={proxy_id}

Permanently delete a proxy (no refund).

ParameterTypeDescription
id *string8-character proxy ID

Error Responses

All errors return JSON with success: false and an error message.

401 Unauthorized

{"success": false, "error": "Invalid or inactive API key."}

404 Not Found

{"success": false, "error": "Proxy not found."}

400 Bad Request

{"success": false, "error": "Out of stock for US (IPv4)"}

PHP Example

<?php
$apiKey = "your_api_key_here";
$baseUrl = "https://servury.com/api/proxy.php";

function apiRequest($endpoint, $apiKey, $method = 'GET', $data = null) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $endpoint);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "X-Reseller-Key: $apiKey",
        "Content-Type: application/json"
    ]);

    if ($method === 'POST') {
        curl_setopt($ch, CURLOPT_POST, true);
        if ($data) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        }
    }

    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true);
}

// Check stock before ordering
$stock = apiRequest("$baseUrl?action=stock", $apiKey);

// Get price quote
$price = apiRequest("$baseUrl?action=price&type=datacenter&days=30&quantity=5", $apiKey);
echo "5 proxies for 30 days: $" . $price['data']['total'];

// Order 5 datacenter proxies
$order = apiRequest("$baseUrl?action=create_datacenter", $apiKey, 'POST', [
    'country' => 'US',
    'days' => 30,
    'quantity' => 5,
    'ip_type' => 'ipv4'
]);

// List all proxies with credentials
$proxies = apiRequest("$baseUrl?action=proxies", $apiKey);
foreach ($proxies['data']['proxies'] as $p) {
    echo "{$p['ip']}:{$p['port_http']} ({$p['type']})\n";
}

// Renew a datacenter proxy
$result = apiRequest("$baseUrl?action=renew&id=abc12345", $apiKey, 'POST', [
    'days' => 30
]);

// Top up residential bandwidth
$result = apiRequest("$baseUrl?action=topup&id=xyz98765", $apiKey, 'POST', [
    'bandwidth' => 10
]);