VPS.org API

Documentación de API REST

API de dominios

Busque nombres de dominio disponibles, registre y renueve dominios, y administre sus servidores de nombres y auto-renovación. Los dominios son identificados por su uuid.

Puntos finales 7
Ruta base /api/v1/domains
CONSEGUIR /api/v1/domains/

Listar todos los dominios

Devuelve los dominios registrados en su cuenta, 25 por página. La lista no tiene filtros.

Permiso requerido: domains:list

Ejemplo de solicitud

cURL
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/domains/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests

url = "https://admin.vps.org/api/v1/domains/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.get(url, headers=headers)
for domain in response.json()["results"]:
    print(domain["domain_name"], domain["status"], domain["expiration_date"])
const response = await fetch('https://admin.vps.org/api/v1/domains/', {
  headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data.results);

Ejemplo de respuesta

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "e4b7a2c9-1d3f-4e5a-8b6c-7d8e9f0a1b2c",
      "domain_name": "example.com",
      "status": "active",
      "registrar": "dynadot",
      "registration_date": "2026-01-15T10:30:00Z",
      "expiration_date": "2027-01-15T10:30:00Z",
      "days_until_expiration": 122,
      "is_expired": false,
      "needs_renewal_soon": false,
      "auto_renew": true,
      "renewal_period_years": 1,
      "registration_price": "12.64",
      "renewal_price": "12.64",
      "whois_privacy": true,
      "nameserver1": "ns1.vps.org",
      "nameserver2": "ns2.vps.org",
      "nameserver3": "ns3.vps.org",
      "nameserver4": null,
      "transfer_lock": true,
      "created_at": "2026-01-15T10:30:00Z",
      "updated_at": "2026-09-01T08:12:40Z"
    }
  ]
}

Campos de respuesta

Campo Tipo Descripción
uuid string Identificador de dominio utilizado en los otros extremos de dominio
status string active, pending, expired, cancelled, transferred
registrar string Registrador el dominio se mantiene en
registration_date, expiration_date datetime Cuando el dominio fue registrado y cuando expira. expire_date puede ser nulo.
days_until_expiration integer | null Días enteros hasta la fecha de vencimiento, negativo una vez expirado
is_expired, needs_renewal_soon boolean Si el dominio ha caducado y si expira en los próximos 30 días
auto_renew, renewal_period_years boolean, integer Si el dominio se renueva automáticamente y por cuántos años
registration_price, renewal_price string Precios en USD como cadenas decimales
whois_privacy, transfer_lock boolean Ajustes de bloqueo de privacidad y transferencia de registrador WHOIS
nameserver1 to nameserver4 string | null Los servidores de nombres del dominio
created_at, updated_at datetime Cuando se creó el registro y se cambió por última vez (ISO 8601, UTC)
CONSEGUIR /api/v1/domains/{uuid}/

Obtener detalles de dominio

Devuelve un objeto de dominio con los campos anteriores.

Permiso requerido: domains:list

curl -X GET "https://admin.vps.org/api/v1/domains/e4b7a2c9-1d3f-4e5a-8b6c-7d8e9f0a1b2c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Códigos de estado de respuesta

200 Éxito
404 No encontrado, o pertenece a otra cuenta
POST /api/v1/domains/search/

Disponibilidad de dominios de búsqueda

Comprueba si un nombre está disponible en unas 20 extensiones populares (com, net, org, io, dev, co, app, ai y más), además de la extensión que escribiste si no está entre ellas. Los resultados comienzan con la coincidencia exacta, luego los nombres disponibles, y luego los tomados.

Permiso requerido: domains:search

Parámetros del cuerpo de la solicitud

Parámetro Tipo Requerido Descripción
domain string Sí Un nombre con o sin extensión, por ejemplo mysite o mysite.com (2 a 63 caracteres)

Ejemplo de solicitud

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/domains/search/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain": "mysite.com"}'
import requests

url = "https://admin.vps.org/api/v1/domains/search/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.post(url, headers=headers, json={"domain": "mysite.com"})
for result in response.json()["results"]:
    if result["available"]:
        print(result["domain"], result["registration_price"], result["renewal_price"])

Ejemplo de respuesta

{
  "results": [
    {
      "domain": "mysite.com",
      "available": false,
      "price": null,
      "registration_price": null,
      "renewal_price": null,
      "tld": "com",
      "is_exact_match": true
    },
    {
      "domain": "mysite.dev",
      "available": true,
      "price": 17.24,
      "registration_price": 17.24,
      "renewal_price": 17.24,
      "tld": "dev",
      "is_exact_match": false
    }
  ],
  "base_domain": "mysite",
  "search_count": 20
}

Los precios son números en USD por un año y son nulos para los nombres que no están disponibles. Los precios mostrados son ilustrativos.

Códigos de estado de respuesta

200 Éxito
400 Dominio que falta, o contiene caracteres distintos de letras, dígitos y guiones
500 La búsqueda del registrador falló.
POST /api/v1/domains/register/

Registrar nuevo dominio

Registra un dominio y cobra su método de pago guardado. La disponibilidad y el precio se comprueban con el registrador de nuevo antes del cargo. Los datos de contacto del registrador se toman de su perfil de cuenta. Si el registrador rechaza el registro después del cargo, el pago se reembolsa.

Permiso requerido: domains:register (concedido por dominios:*)

Parámetros del cuerpo de la solicitud

Parámetro Tipo Requerido Descripción
domain string Sí El nombre de dominio completo incluyendo su extensión, por ejemplo.com
years integer No Periodo de registro, de 1 a 10 (por defecto 1). El precio es el precio anual multiplicado por los años. .ai requiere al menos 2 años; un valor menor devuelve 400.
curl -X POST "https://admin.vps.org/api/v1/domains/register/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain": "mysite.dev", "years": 1}'

Ejemplo de respuesta

{
  "success": true,
  "domain_uuid": "e4b7a2c9-1d3f-4e5a-8b6c-7d8e9f0a1b2c",
  "domain_name": "mysite.dev",
  "message": "mysite.dev registered successfully!"
}

Códigos de estado de respuesta

201 Dominio registrado
400 dominio no válido, dominio ya no disponible, el precio no se pudo verificar, método de pago obsoleto, o el pago falló
402 No hay ningún método de pago en el archivo, o facturas impagadas
500 El pago no pudo ser procesado, o el registrador rechazó el registro después del pago. En el segundo caso el mensaje de error dice si el reembolso pasó.
POST /api/v1/domains/{uuid}/renew/

Renovar un dominio

Renueva el dominio y cobra su renewal_price por cada año a su método de pago guardado.

Permiso requerido: domains:renew

Parámetros del cuerpo de la solicitud

Parámetro Tipo Requerido Descripción
years integer No Años que añadir, 1 a 10 (predeterminado 1)
curl -X POST "https://admin.vps.org/api/v1/domains/e4b7a2c9-1d3f-4e5a-8b6c-7d8e9f0a1b2c/renew/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"years": 1}'
{
  "success": true,
  "domain_uuid": "e4b7a2c9-1d3f-4e5a-8b6c-7d8e9f0a1b2c",
  "new_expiration": "2028-01-15T10:30:00+00:00",
  "message": "example.com renewed successfully for 1 year(s)!"
}

Códigos de estado de respuesta

200 Dominio renovado
400 Años inválidos, no hay precio de renovación para el dominio, no se utiliza el método de pago, o el pago falló
404 No encontrado, o pertenece a otra cuenta
500 El pago no pudo ser procesado, o el pago pasó pero la renovación del registrador falló.
PUT /api/v1/domains/{uuid}/nameservers/

Actualizar servidores de nombres

Establece los servidores de nombres del dominio en el registrador y devuelve el objeto de dominio actualizado. Para administrar DNS con la API de DNS, use ns1.vps.org, ns2.vps.org y ns3.vps.org y cree una zona para el dominio.

Permiso requerido: domains:update

Parámetros del cuerpo de la solicitud

Parámetro Tipo Requerido Descripción
nameserver1 string Sí Nombre principal servidor de hostname
nameserver2, nameserver3, nameserver4 string No Nombres de hosts de servidor adicionales
curl -X PUT "https://admin.vps.org/api/v1/domains/e4b7a2c9-1d3f-4e5a-8b6c-7d8e9f0a1b2c/nameservers/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"nameserver1": "ns1.vps.org", "nameserver2": "ns2.vps.org", "nameserver3": "ns3.vps.org"}'

Códigos de estado de respuesta

200 Se actualizan los servidores de nombres; el cuerpo es el objeto de dominio
400 nameserver1 falta
404 No encontrado, o pertenece a otra cuenta
500 La actualización falló; el cuerpo tiene campos de error y mensajes
PUT /api/v1/domains/{uuid}/auto-renew/

Activar o desactivar la renovación automática

Establece auto_renovar y devuelve el objeto de dominio actualizado. Enviar habilitado como booleano de JSON: cualquier cadena no vacía, incluida la falsa cadena, activa automáticamente la renovación.

Permiso requerido: domains:update

curl -X PUT "https://admin.vps.org/api/v1/domains/e4b7a2c9-1d3f-4e5a-8b6c-7d8e9f0a1b2c/auto-renew/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

Códigos de estado de respuesta

200 Configuración guardada; el cuerpo es el objeto de dominio
400 activada falta
404 No encontrado, o pertenece a otra cuenta

Notas