Home / API Docs
API Documentation
Complete REST API reference for managing VPS servers and proxies programmatically. We offer separate APIs for each product type.
Three APIs, Three Products
Owned API
Servers running on hardware we own and operate in our own colocation facility. Full control, more OS options, FDE support, SSH key auth, IPv4/IPv6 dual-stack.
Proxy API
Datacenter, residential, and rotating proxies. Order proxies, manage credentials, whitelist IPs, renew/top-up, and terminate via API.
Legacy API
Servers on leased third-party hardware. We do not own these machines. Limited OS selection, no FDE, no SSH key support, password auth only.
Authentication
All API requests require authentication via the X-Reseller-Key header.
Keep your API key secret. Never expose it in client-side code.
Base URL
Response Format
All endpoints return JSON. Successful responses:
Error responses:
?action=plans
List available owned infrastructure plans with your reseller pricing.
?action=locations
List available server locations for owned infrastructure.
?action=os
List available operating systems.
Owned infrastructure supports more OS options than Legacy, including FreeBSD, OpenBSD, and Debian 12 with full disk encryption.
?action=account
Get reseller account information including balance, discount, and payment method.
Example Response
?action=servers
List all owned servers belonging to the reseller.
?action=server&id={server_id}
Get detailed information for a specific server.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
Example Response
?action=console&id={server_id}
Get console access URL and ticket for a server.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
?action=create
$ PaidProvision a new server on owned infrastructure. Either password or ssh_key is required.
| Parameter | Type | Description |
|---|---|---|
plan_id * | integer | Plan ID from /plans endpoint |
hostname * | string | 3-63 alphanumeric characters |
os * | string | debian12, debian13, ubuntu24, rocky9, freebsd14, openbsd78, winserv25 |
days | integer | 1-365 (default: 31) |
password | string | Root password, min 8 characters. Required if no ssh_key. |
ssh_key | string | SSH public key for root login. Required if no password. |
ipv4 | boolean | Allocate an IPv4 address (default: false). Adds $2.99/mo surcharge. |
fde | boolean | Enable full disk encryption (default: false). Requires ssh_key. Debian 12 only. |
?action=renew&id={server_id}
$ PaidRenew/extend a server subscription.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
days * | integer | 1-365 |
?action=upgrade&id={server_id}
$ PaidUpgrade server to a higher plan. You are charged the prorated price difference for remaining days. The server will be restarted with the new specs and disk expanded.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
plan_id * | integer | Target plan ID (must be higher price than current) |
?action=terminate&id={server_id}
Permanently delete a server (no refund).
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
?action=power&id={server_id}
Execute power actions on a server.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
action * | string | start, stop, or restart |
?action=reinstall&id={server_id}
Reinstall the operating system (wipes all data).
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
os * | string | debian12, debian13, ubuntu24, rocky9, freebsd14, openbsd78, winserv25 |
password | string | New root password (min 8 characters) |
ssh_key | string | SSH public key for root login |
?action=hostname&id={server_id}
Update server hostname.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
hostname * | string | New hostname (alphanumeric and hyphens, max 100 chars) |
Error Responses
All errors return JSON with success: false and an error message.
401 Unauthorized
404 Not Found
400 Bad Request
PHP Example
<?php
$apiKey = "your_api_key_here";
$baseUrl = "https://servury.com/api/reseller.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 balance
$account = apiRequest("$baseUrl?action=account", $apiKey);
echo "Balance: $" . $account['data']['balance'];
// Create a server with SSH key
$newServer = apiRequest("$baseUrl?action=create", $apiKey, 'POST', [
'plan_id' => 101,
'hostname' => 'myserver',
'os' => 'debian12',
'days' => 31,
'ssh_key' => 'ssh-ed25519 AAAA...',
'ipv4' => true
]);
// Power cycle a server
$result = apiRequest("$baseUrl?action=power&id=abc12345", $apiKey, 'POST', [
'action' => 'restart'
]);Authentication
All API requests require authentication via the X-Reseller-Key header. Same key as the server APIs.
Base URL
Response Format
All endpoints return JSON. Successful responses:
Error responses:
Proxy Types
| Type | Description | Billing |
|---|---|---|
datacenter | Static IPv4/IPv6 proxies in US, CA, FR, UK, NL. HTTP + SOCKS5. | Per proxy, per day (3-365 days) |
residential | Rotating residential IPs. Bandwidth-based, no expiration. | Per GB of bandwidth |
rotating | Rotating IPv6 proxies in Canada. Configurable thread count. | Per duration + thread count |
?action=account
Get reseller account info (balance, discount, payment method).
Example Response
?action=stock
Get datacenter proxy stock by country and IP type. Check this before ordering.
Example Response
?action=price
Calculate price for any proxy type before ordering. Returns your reseller price.
| Parameter | Type | Description |
|---|---|---|
type * | string | datacenter, residential, or rotating |
days | integer | Duration (datacenter: 3-365, rotating: 7/14/30/60/90) |
quantity | integer | Number of proxies (datacenter only, 1-100) |
bandwidth | integer | GB of bandwidth (residential only, 1-1000) |
threads | integer | Thread count (rotating only, 100-5000) |
?action=proxies
List all proxies (datacenter, residential, and rotating) with credentials.
?action=proxy&id={proxy_id}
Get detailed info for a single proxy including credentials and whitelisted IPs.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character proxy ID |
?action=create_datacenter
$ PaidOrder datacenter proxies. Returns proxy credentials immediately.
| Parameter | Type | Description |
|---|---|---|
country * | string | US, CA, FR, UK, or NL |
days | integer | 3-365 (default: 30) |
quantity | integer | 1-100 (default: 1) |
ip_type | string | ipv4 or ipv6 (default: ipv4) |
Example Response
?action=create_residential
$ PaidOrder a residential proxy subscription with bandwidth.
| Parameter | Type | Description |
|---|---|---|
bandwidth * | integer | Bandwidth in GB (1-1000) |
?action=create_rotating
$ PaidOrder a rotating IPv6 proxy.
| Parameter | Type | Description |
|---|---|---|
country | string | Currently only CA (default) |
days | integer | 7, 14, 30, 60, or 90 (default: 30) |
threads | integer | 100-5000 (default: 100) |
protocol | string | Currently only ipv6 (default) |
?action=renew&id={proxy_id}
$ PaidRenew a datacenter or rotating proxy. Not applicable to residential (use topup instead).
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character proxy ID |
days * | integer | Datacenter: 3-365. Rotating: 7/14/30/60/90. |
?action=topup&id={proxy_id}
$ PaidAdd bandwidth to a residential proxy.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character proxy ID |
bandwidth * | integer | GB to add (1-1000) |
?action=reset_credentials&id={proxy_id}
Reset proxy username/password. Works for all proxy types. Returns new credentials.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character proxy ID |
?action=add_ip&id={proxy_id}
Add an IP to the proxy whitelist (datacenter and rotating only).
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character proxy ID |
ip * | string | IP address to whitelist |
?action=remove_ip&id={proxy_id}
Remove an IP from the proxy whitelist.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character proxy ID |
ip * | string | IP address to remove |
?action=terminate&id={proxy_id}
Permanently delete a proxy (no refund).
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character proxy ID |
Error Responses
All errors return JSON with success: false and an error message.
401 Unauthorized
404 Not Found
400 Bad Request
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
]);Authentication
All API requests require authentication via the X-Reseller-Key header.
Keep your API key secret. Never expose it in client-side code.
Base URL
Response Format
All endpoints return JSON. Successful responses:
Error responses:
?action=plans
List available VPS plans with your reseller pricing.
?action=locations
List available server locations.
?action=os
List available operating systems. Legacy infrastructure supports: Debian 12, Debian 13, Ubuntu 24, Rocky Linux 9, CentOS 10, and Windows Server 2025.
?action=account
Get reseller account information including balance, discount, and payment method.
Example Response
?action=servers
List all servers belonging to the reseller.
?action=server&id={server_id}
Get detailed information for a specific server including password.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
Example Response
?action=console&id={server_id}
Get noVNC console URL for a server.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
?action=create
$ PaidProvision a new server on leased infrastructure. Password is auto-generated by the provider.
| Parameter | Type | Description |
|---|---|---|
plan_id * | integer | Plan ID from /plans endpoint |
hostname * | string | 3-63 alphanumeric characters |
os * | string | debian12, debian13, ubuntu24, rocky9, centos10, winserv25 |
days | integer | 1-365 (default: 31) |
?action=renew&id={server_id}
$ PaidRenew/extend a server subscription.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
days * | integer | 1-365 |
?action=upgrade&id={server_id}
$ PaidUpgrade server to a higher plan. Prorated charge for remaining days.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
plan_id * | integer | Target plan ID (must be higher price than current) |
?action=terminate&id={server_id}
Permanently delete a server (no refund).
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
?action=power&id={server_id}
Execute power actions on a server.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
action * | string | start, stop, or restart |
?action=reinstall&id={server_id}
Reinstall the operating system (wipes all data).
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
os * | string | debian12, debian13, ubuntu24, rocky9, centos10, winserv25 |
?action=hostname&id={server_id}
Update server hostname.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
hostname * | string | New hostname (alphanumeric and hyphens) |
?action=ip&id={server_id}
$ PaidChange the server's IP address. This is a paid operation.
| Parameter | Type | Description |
|---|---|---|
id * | string | 8-character server ID |
Error Responses
All errors return JSON with success: false and an error message.
401 Unauthorized
404 Not Found
400 Bad Request
PHP Example
<?php
$apiKey = "your_api_key_here";
$baseUrl = "https://servury.com/api/legacy.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 balance
$account = apiRequest("$baseUrl?action=account", $apiKey);
echo "Balance: $" . $account['data']['balance'];
// Create a server
$newServer = apiRequest("$baseUrl?action=create", $apiKey, 'POST', [
'plan_id' => 5,
'hostname' => 'myserver',
'os' => 'debian12',
'days' => 31
]);
// Power cycle a server
$result = apiRequest("$baseUrl?action=power&id=abc12345", $apiKey, 'POST', [
'action' => 'restart'
]);