API de hostingTodo lo que hace el configurador, por HTTP.

Tokens bearer con los alcances que usted elija, idempotencia en cada escritura, paginación por cursor, y un endpoint de estado que no requiere clave alguna — porque el momento en que más necesita consultarlo es el momento en que su cuenta podría ser precisamente lo que está roto.

endpoints13

Inicio rápido

Sin SDK necesario · Sin sorpresas de versionado · Sin límite de tasa que vaya a encontrar

Inicio rápido

Un servidor, desde cero, en dos llamadas.

Cree una clave en el área de cliente, elija sus alcances, y se muestra una sola vez. No hay clave maestra en esta cuenta ni forma de ampliar una clave después de creada — en su lugar, cree una nueva.

1 — vea qué puede comprar

curl -s https://api.dediprivacy.com/v1/plans?family=vps \
  -H "Authorization: Bearer $DP_KEY"

2 — despliéguelo

curl -s -X POST https://api.dediprivacy.com/v1/servers \
  -H "Authorization: Bearer $DP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
        "plan":   "vps-4",
        "region": "ams",
        "image":  "debian-13",
        "cycle":  "12"
      }'

El aprovisionamiento se descuenta del saldo de la cuenta. Una llamada que lo dejaría en negativo falla con 402 y el faltante exacto en lugar de construir media máquina — no hay un estado parcialmente aprovisionado que limpiar, ni llega una factura después.

Convenciones

Las partes que son iguales en cada llamada, decididas una vez para que nunca tenga que buscarlas dos veces.

URL base
https://api.dediprivacy.com/v1 Solo TLS, HTTP/2, y ningún puerto sin cifrar desde el que redirigir. Una solicitud en texto plano se rechaza en lugar de actualizarse, porque una actualización implica que la solicitud ya cruzó la red una vez.
Autenticación
Token bearer, por clave Las claves se crean en el área de cliente con los alcances que usted elija, se muestran una sola vez y se almacenan como hash. No existe clave maestra ni autenticación por contraseña en esta API.
Tipo de contenido
application/json En solicitudes y respuestas. Las horas son RFC 3339 en UTC, el dinero es un número entero de centavos, y no hay ningún formato dependiente de la configuración regional en ningún sitio.
Idempotencia
Idempotency-Key en cada POST Una clave repetida devuelve la respuesta original en lugar de aprovisionar dos veces. Las claves se recuerdan durante 24 horas, más de lo que debería durar cualquier bucle de reintentos.
Límite de tasa
600 solicitudes por minuto Por clave, devuelto en X-RateLimit-Remaining. Las llamadas de aprovisionamiento están limitadas por separado a 60 por hora; consúltenos si eso realmente le supone un obstáculo.
Paginación
Cursor, no número de página Un next_cursor en cada respuesta de lista. La paginación por offset omite filas en silencio cuando el conjunto subyacente cambia, y preferimos no entregarle ese fallo.

Identificadores

Se lee del mismo catálogo con el que se construyen las listas de precios públicas y el configurador. Una región añadida al conjunto aparece aquí sin que nadie edite esta página.

región

  • kefReikiavik
  • otpBucarest
  • sofSofía
  • kivChisináu
  • zrhZúrich
  • amsÁmsterdam
  • ptyCiudad de Panamá
  • sinSingapur

familia

  • vpsVPS en la nube
  • rdpWindows RDP
  • dedicadoServidores dedicados
  • gpuCómputo GPU
  • nube-privadaNube privada
  • web-hostingAlojamiento web
  • almacenamientoAlmacenamiento de objetos y de bloques
  • colocaciónColocación
  • personalizadoCompilación personalizada

ciclo

  • 11 mes
  • 33 mess, −5 %
  • 1212 mess, −20 %
  • 2424 mess, −35 %

Endpoints

Catálogo

Todo lo que se puede pedir, con precios en vivo. No hace falta autenticación — son las mismas cifras con las que se construyen las listas de precios públicas.

GET /regions Ver regiones

Cada región con su identificador, ciudad, país y estado operativo actual.

Respuesta

{
  "data": [
    { "id": "ams", "city": "Amsterdam", "country": "Netherlands",
      "status": "operational", "uplink_gbit": 600 }
  ]
}
GET /plans Ver planes

Filtre por familia con ?family=vps. Los precios son mensuales en céntimos, antes de cualquier descuento por ciclo.

Respuesta

{
  "data": [
    { "id": "vps-4", "family": "vps", "cores": 4, "ram_gb": 8,
      "disk_gb": 160, "price_cents": 1100, "regions": ["ams","kef"] }
  ],
  "next_cursor": null
}
GET /images Ver imágenes

Imágenes de sistema operativo disponibles por familia, con la situación de licencia de cada una.

Respuesta

{
  "data": [
    { "id": "debian-13", "name": "Debian 13", "licence": "incluida" },
    { "id": "win-2025", "name": "Windows Server 2025", "licence": "incluida" }
  ]
}

Endpoints

Servidores

Cree, inspeccione y controle máquinas. El aprovisionamiento se descuenta del saldo de la cuenta; una solicitud que lo dejaría en negativo falla con 402 y el importe exacto que falta, en lugar de construir algo a medias.

POST /servers Desplegar un servidor

Devuelve de inmediato con estado «provisioning». Consulte el recurso mediante polling o reciba un webhook.

Solicitud

{
  "plan": "vps-4",
  "region": "ams",
  "image": "debian-13",
  "cycle": "12",
  "label": "edge-01",
  "ssh_keys": ["ssh-ed25519 AAAA..."]
}

Respuesta

{
  "id": "srv_8Kq2",
  "status": "provisioning",
  "region": "ams",
  "ipv4": null,
  "charged_cents": 10560,
  "renews_at": "2027-07-28T00:00:00Z"
}
GET /servers Ver servidores

Todo lo relativo a la cuenta, lo más reciente primero.

Respuesta

{
  "data": [
    { "id": "srv_8Kq2", "label": "edge-01", "status": "active",
      "region": "ams", "ipv4": "203.0.113.10",
      "ipv6": "2001:db8:1234:5678::2" }
  ],
  "next_cursor": null
}
GET /servers/{id} Recuperar un servidor

Todo el detalle: especificación, direcciones y la próxima renovación.

Respuesta

{
  "id": "srv_8Kq2",
  "status": "active",
  "plan": "vps-4",
  "image": "debian-13",
  "cycle": "12",
  "renews_at": "2027-07-28T00:00:00Z"
}
POST /servers/{id}/actions Actuar en un servidor

Un único endpoint, un campo de acción: reboot, shutdown, start, rebuild, resize, rdns.

Solicitud

{
  "action": "rebuild",
  "image": "ubuntu-26-04"
}

Respuesta

{
  "id": "act_3Xf9",
  "action": "rebuild",
  "status": "running"
}
DELETE /servers/{id} Cancelar un servidor

Corre hasta el final del período ya pagado. Añada ?immediate=true para destruirlo ahora y dejar de pagar desde hoy.

Respuesta

{
  "id": "srv_8Kq2",
  "status": "cancelled",
  "ends_at": "2027-07-28T00:00:00Z"
}

Endpoints

Facturación

Un solo saldo financia todo. No existe un objeto de factura porque no hay nada que perseguir — un servicio se descuenta del saldo en su fecha de renovación.

GET /balance Consultar el saldo

Saldo actual, lo comprometido en renovaciones, y cuánto dura eso al ritmo de gasto actual.

Respuesta

{
  "balance_cents": 48250,
  "committed_cents": 12400,
  "runway_days": 117
}
POST /topups Abrir una recarga

Devuelve una dirección de pago para el activo elegido. Cualquier bonificación se aplica en el momento en que el pago se confirma.

Solicitud

{
  "amount_cents": 100000,
  "asset": "XMR"
}

Respuesta

{
  "id": "top_5Wc1",
  "asset": "XMR",
  "address": "4A...",
  "amount": "3.417",
  "bonus_cents": 30000,
  "expires_at": "2026-07-28T18:00:00Z"
}
GET /ledger Listar asientos del libro mayor

Cada abono y cargo, con el servicio al que corresponde. Esto es todo lo que conservamos sobre sus pagos.

Respuesta

{
  "data": [
    { "at": "2026-07-28T16:04:00Z", "cents": -1100,
      "kind": "renewal", "ref": "srv_8Kq2" }
  ]
}

Endpoints

Estado

Pública y sin autenticación, para que pueda consultarla algo que no posee su clave — y para que siga respondiendo aunque lo que falle sea precisamente su cuenta.

GET /status Estado actual

Las mismas cifras que la página de estado, calculadas a partir del mismo registro de incidentes.

Respuesta

{
  "state": "operational",
  "open_incidents": 0,
  "uptime_90d": 99.9971,
  "regions": { "ams": "operational", "kef": "operational" }
}
GET /incidents Lista de incidentes

El registro en sí, filtrable por región y fecha.

Respuesta

{
  "data": [
    { "id": "inc_71", "region": "otp", "severity": "partial",
      "started_at": "2026-06-07T02:14:00Z",
      "unreachable_seconds": 1080 }
  ]
}

Errores

Cada fallo lleva un código y un mensaje escrito para una persona. Compare por el código; el mensaje puede mejorar.

400 invalid_request El cuerpo no se pudo interpretar, o un campo tiene el tipo incorrecto. El mensaje indica el campo.
401 sin autenticar Sin clave, con una clave mal formada, o con una clave revocada.
403 scope_missing La clave es válida pero no se creó con el alcance que necesita esta llamada. Los alcances se eligen por clave y no se pueden ampliar después.
402 insufficient_funds El saldo no lo cubriría. La respuesta lleva required_cents y balance_cents para que usted pueda actuar sin una segunda llamada.
404 not_found No existe ese recurso en esta cuenta. Deliberadamente idéntico a la respuesta para un recurso en la cuenta de otra persona.
409 conflicto El recurso está ocupado — normalmente una acción ya en curso en ese servidor.
422 no disponible Válido, pero no posible por ahora: el plan está agotado en esa región, o la imagen no se ofrece para esa familia.
429 rate_limited Retry-After está establecido, y es preciso, no una constante fija.
5xx server_error Nuestro. Puede reintentar con la misma Idempotency-Key sin riesgo: para eso existe.

A 404 para un recurso en la cuenta de otra persona es, byte por byte, idéntica a la de un recurso que nunca existió. Es deliberado: unas respuestas distinguibles convierten una API en un oráculo para enumerar la infraestructura de terceros.