VDS Host
Revendedor Servidores VPS Configurador VPS Dedicados API Nosotros Blog Contacto Acceder
codeReseller API v1

Documentación API

Gestiona cada operación VDS desde el panel de forma programática. Ruta base /api/reseller/v1 — todas las solicitudes se firman con HMAC.

Resumen

La Reseller API expone la creación de servidores, gestión de energía, acceso a consola, instalación de SO, formateo, firewall, copias y operaciones de IP extra por REST. Todas las respuestas están en JSON.

# Taban yol
BASE https://api.vdshost.com/api/reseller/v1

# Tüm istekler şu başlıkları taşır
X-Api-Key: rk_live_xxxxxxxx
X-Timestamp: 1719230400
X-Signature: hmac_sha256(...)

Autenticación (HMAC)

Cada solicitud se firma con el par api_key y api_secret. La firma se genera en el cliente; el middleware reseller.api del servidor verifica la firma HMAC, la lista blanca de IP y el límite de tasa. La marca de tiempo protege contra ataques de repetición.

# İmza şeması (istemci tarafı)
payload = method + "\n" + path + "\n" + timestamp + "\n" + body
signature = hmac_sha256(api_secret, payload)

# Örnek (curl)
curl -X POST https://api.vdshost.com/api/reseller/v1/vm \
  -H "X-Api-Key: KEY" \
  -H "X-Timestamp: TS" \
  -H "X-Signature: SIG" \
  -d '{"product_id":42,"os":"ubuntu-22.04"}'
info Lista blanca de IP: tu clave API solo acepta llamadas desde las IP que definas en el panel. Las claves se gestionan en la tabla reseller_api_keys y todas las llamadas se registran en reseller_api_logs.

Códigos de Error

CódigoSignificado
200 / 201 / 202Éxito / creado / en cola
400Cuerpo de solicitud inválido
401Firma inválida o ausente
403IP no en lista blanca / sin autorización
409Repetición detectada (reuso de timestamp)
429Límite de tasa superado

Cuenta & Productos

GET/api/reseller/v1/account

Devuelve el saldo activo, el nivel de descuento actual (TIER) y el estado de la cuenta.

# Yanıt
{
  "balance": 3250.00,
  "tier": "Gold",
  "discount": 28,
  "currency": "USD"
}
GET/api/reseller/v1/products

Lista los productos VDS listos a la venta y los precios unitarios de configuraciones personalizadas.

# Yanıt
[
  { "id": 42, "name": "VDS M", "cpu": 4, "ram": 8, "disk": 100, "price": 14.00 }
]

Ciclo de Vida del Servidor

GET/api/reseller/v1/vm

Lista todas las instancias VDS de la cuenta con su estado.

[
  { "id": "vm_8f3a21", "status": "running", "ip": "185.x.x.x" }
]
GET/api/reseller/v1/vm/{id}

Devuelve los recursos, red, estado y estadísticas de recursos de un servidor.

{
  "id": "vm_8f3a21",
  "status": "running",
  "cpu": 4, "ram": 8, "disk": 100,
  "usage": { "cpu": 12.4, "bw": 820.5 }
}
POST/api/reseller/v1/vm

Aprovisiona un nuevo VDS. Envía product_id para un producto listo, o cpu/ram/disk para una configuración personalizada. El precio se calcula con el descuento por saldo.

# İstek
{
  "cpu": 4, "ram": 8, "disk": 160,
  "os": "ubuntu-22.04", "hostname": "web-01"
}

# Yanıt 201
{ "id": "vm_8f3a21", "status": "provisioning" }
POST/api/reseller/v1/vm/{id}/resize

Actualiza los recursos de CPU, RAM o disco de un servidor existente.

# İstek
{ "cpu": 8, "ram": 16 }
# → 202 Accepted
POST/api/reseller/v1/vm/{id}/reinstall

Formatea y reinstala el servidor con el sistema operativo seleccionado.

# İstek
{ "os": "debian-12" }
# → 202 Accepted
POST/api/reseller/v1/vm/{id}/terminate

Cancela permanentemente el servidor y libera sus recursos.

# → 200 OK
{ "id": "vm_8f3a21", "status": "terminated" }

Energía & Acceso

POST/api/reseller/v1/vm/{id}/power

Iniciar, detener, reiniciar o apagar forzado. action: start · stop · reboot · force_stop.

# İstek
{ "action": "reboot" }
# → 200 OK
GET/api/reseller/v1/vm/{id}/credentials

Devuelve de forma segura el usuario y la contraseña inicial del servidor.

{ "username": "root", "password": "••••••••" }
POST/api/reseller/v1/vm/{id}/password

Restablece la contraseña root/administrador del servidor.

# → 200 OK
{ "password": "yeni-parola" }
POST/api/reseller/v1/vm/{id}/console

Genera un enlace de consola NoVNC/KVM de un solo uso accesible desde el navegador.

# → 200 OK
{ "console_url": "https://console.vdshost.com/...", "expires_in": 120 }

Copia & Seguridad

Copias

GET/api/reseller/v1/vm/{id}/backups

Lista las copias existentes del servidor.

[ { "backup_id": "bk_19c", "created_at": "2026-06-24T10:00:00Z" } ]
POST/api/reseller/v1/vm/{id}/backups

Toma una copia instantánea.

# → 201 Created
{ "backup_id": "bk_19c" }
POST/api/reseller/v1/vm/{id}/backups/restore

Restaura la copia especificada.

# İstek
{ "backup_id": "bk_19c" }
# → 202 Accepted
DELETE/api/reseller/v1/vm/{id}/backups

Elimina la copia especificada.

# İstek
{ "backup_id": "bk_19c" }
# → 200 OK

Firewall

GET/api/reseller/v1/vm/{id}/firewall

Devuelve las reglas de firewall definidas en el servidor.

[ { "id": 1, "port": 22, "proto": "tcp", "action": "allow" } ]
POST/api/reseller/v1/vm/{id}/firewall

Añade una nueva regla de firewall.

# İstek
{ "port": 443, "proto": "tcp", "action": "allow" }
DELETE/api/reseller/v1/vm/{id}/firewall/{rule}

Elimina la regla de firewall especificada.

# → 200 OK

Integraciones

extensionWHMCS ModülüGratis

Se instala como módulo de servidor. En el panel de administración añades un servidor upstream y defines el mapeo ServerConnection: hostname = dominio de VDS Host, username = api_key (enmascarado), password = api_secret (enmascarado). Tu producto se mapea con upstream_product_id y los sistemas operativos con os_map. Pedido, aprovisionamiento, energía, formateo y cancelación fluyen automáticamente de extremo a extremo.

# ServerConnection eşlemesi
hostname = api.vdshost.com
username = {api_key}  # maskeli
password = {api_secret} # maskeli
module_config = { "upstream_product_id": 42, "os_map": {...} }
extensionWiseCP ModülüÜcretsiz

El módulo de servidor de WiseCP usa la misma lógica upstream que WHMCS. Con UpstreamServerModule + UpstreamApiClient llama a la ruta base /api/reseller/v1. El mapeo de producto y SO se define en la configuración del módulo; todo el ciclo de vida del VDS se gestiona desde la interfaz de WiseCP.

# UpstreamApiClient çağrıları
client.post('vm', body)     # oluştur
client.post('vm/{id}/power'# güç
client.post('vm/{id}/reinstall')
client.get('vm/{id}/backups')