Skip to content

api

API REST

Acceso programático a su cuenta de Restore Hub, servidores, miembros, copias de seguridad, extracciones, cortafuegos, lista blanca, lista negra, análisis, mercado y mucho más. Referencia completa del punto final con ejemplos de solicitud/respuesta.

Visión general

La API REST de Restore Hub le ofrece acceso programático a todas las funciones de la plataforma. Utilícela para crear cuadros de mando personalizados, integrarse con otras herramientas, automatizar flujos de trabajo o crear su propio frontend.

La URL base de la API es https://restorehub.net/api/v1. Todos los puntos finales requieren autenticación y tienen una tarifa limitada por plan.

Autenticación

Todas las solicitudes de API deben incluir su clave de API en el encabezado de autorización como token de portador. Su clave de API es un UUID generado al crear su cuenta. Puede encontrarla en el panel de control, en Configuración → Clave de API.

Autorización: Portador rh_your_api_key_here

Consejo: Su clave API tiene los mismos permisos que su cuenta. Cualquiera que tenga su clave API puede realizar cualquier acción que usted pueda. Mantenla en secreto y nunca la expongas en código del lado del cliente ni en repositorios públicos.

Límites de tarifa

Las solicitudes a la API tienen un límite de velocidad por ventana de 10 segundos. El límite depende de su plan. Cuando se supera el límite, la API devuelve HTTP 429 Demasiadas solicitudes.

La información sobre el límite de velocidad se incluye en cada respuesta a través de las cabeceras:

| Plan | Peticiones por 10 segundos |
|---|---|
| Gratis 20
| Premium 50
| Business 100
| Enterprise 200
X-RateLimit-Límite: 50
X-RateLimit-Remanente: 47
X-RateLimit-Reset: 1680000010

Formato de la respuesta

Todas las respuestas correctas son JSON con un campo de datos. Los puntos finales paginados también incluyen un objeto de paginación. Las respuestas de error incluyen una cadena de error y, opcionalmente, un objeto de detalles para los errores de validación.

// Éxito
{
  "datos": { ... },
  "paginación": {
    "página": 1,
    "límite": 25,
    "total": 142
    "totalPáginas": 6
  }
}

// Error
{
  "error": "Servidor no encontrado"
}

// Error de validación
{
  "error": "Validación fallida",
  "detalles": {
    "fieldErrors": {"roleId": ["Invalid Discord snowflake"] },
    "formErrors": []
  }
}

Cuenta

Recupera la información de tu cuenta, los detalles del plan, el estado de la suscripción y los límites actuales.

GET /api/v1/cuenta

Respuesta:
{
  "data": {
    "id": "uuid",
    "discordId": "123456789012345678",
    "username": "johndoe",
    "displayName": "John Doe",
    "avatar": "https://cdn.discordapp.com/...",
    "plan": "PREMIUM",
    "mfaEnabled": true,
    "createdAt": "2024-01-15T00:00:00Z",
    "_count": {
      "servidores": 3,
      "customBots": 2,
      "equipos": 1
    },
    "subscription": {
      "plan": "PREMIUM",
      "status": "ACTIVE",
      "currentPeriodEnd": "2025-02-15T00:00:00Z",
      "isTrial": falso,
      "trialEndsAt": null,
      "cancelledAt": null
    },
    "limits": {
      "maxServers": 10,
      "maxBots": 5,
      "maxBackups": 10,
      "maxStorageBytes": 5368709120,
      "pullCooldownMs": 3600000,
      "marketplaceFeePercent": 12,
      "apiRatePerTenSeconds": 50,
      "hasVpnDetection": true,
      "hasAltDetection": true,
      "hasFirewall": true
    }
  }
}

Bots personalizados

Enumera tus bots personalizados o crea uno nuevo. Los tokens de bot y los secretos de cliente se cifran en reposo y nunca se devuelven en las respuestas de la API.

GET /api/v1/bots

Respuesta:
{
  "datos": [
    {
      "id": "uuid",
      "clientId": "123456789012345678",
      "name": "Mi bot de verificación",
      "avatar": "https://cdn.discordapp.com/...",
      "status": "ONLINE",
      "activityType": "VIGILANDO",
      "activityText": "restorehub.net",
      "isActive": true
      "createdAt": "2024-01-15T00:00:00Z",
      "updatedAt": "2024-06-01T00:00:00Z"
    }
  ]
}

---

POST /api/v1/bots

Cuerpo de la petición:
{
  "botToken": "MTIz",
  "clientId": "123456789012345678",
  "clientSecret": "abc123...",
  "publicKey": "def456...",
  "redirectUri": "https://restorehub.net/api/callback",
  "name": "My Verify Bot"
}

Respuesta (201):
{
  "data": {
    "id": "uuid",
    "clientId": "123456789012345678",
    "name": "My Verify Bot",
    "isActive": true,
    "createdAt": "2024-01-15T00:00:00Z"
  }
}

Servidores - Listar y crear

Listar todos los servidores de su cuenta (paginados) o crear un nuevo servidor.

GET /api/v1/servidores?page=1&limit=25

Respuesta:
{
  "data": [
    {
      "id": "uuid",
      "discordGuildId": "123456789012345678",
      "name": "Mi Comunidad",
      "icon": "https://cdn.discordapp.com/...",
      "memberCount": 5420,
      "verifiedRoleId": "987654321098765432",
      "logChannelId": "111222333444555666",
      "captchaType": "TURNSTILE",
      "vpnBlockEnabled": true,
      "altDetectEnabled": true,
      "firewallEnabled": true,
      "antiNukeEnabled": false,
      "antiRaidEnabled": false,
      "createdAt": "2024-01-15T00:00:00Z",
      "updatedAt": "2024-06-01T00:00:00Z"
    }
  ],
  "pagination": { "page": 1, "limit": 25, "total": 3, "totalPages": 1 }
}

---

POST /api/v1/servidores

Cuerpo de la petición:
{
  "discordGuildId": "123456789012345678",
  "customBotId": "uuid-de-tu-bot",
  "name": "Mi Comunidad",
  "verifiedRoleId": "987654321098765432",
  "logChannelId": "111222333444555666"
}

Respuesta (201):
{
  "data": { "id": "uuid", ... }
}

Detalle del servidor - Obtener, Actualizar, Eliminar

GET /api/v1/servidores/:id
PUT /api/v1/servidores/:id
DELETE /api/v1/servidores/:id

Advertencia: La eliminación de un servidor es permanente. Todos los miembros verificados, copias de seguridad, reglas de firewall y datos analíticos de ese servidor se eliminan de forma permanente.

Miembros verificados

Lista de miembros verificados de un servidor con paginación, búsqueda y filtro extraíble.

GET /api/v1/servers/:id/members?page=1&limit=25&search=john&pullable=true

Copias de seguridad - Lista y creación

GET /api/v1/servidores/:id/backups?page=1&limit=25
POST /api/v1/servidores/:id/copias de seguridad

Consejo: La creación de la copia de seguridad es asíncrona. El POST devuelve inmediatamente el estado "en cola". Sondee el punto final GET para comprobar cuándo está lista la copia de seguridad.

Restaurar una copia de seguridad

POST /api/v1/servidores/:id/backups/:backupId/restore

Advertencia: La restauración de canales borra todos los canales existentes en el servidor de destino. Esto es irreversible.

Tirada de miembros

POST /api/v1/servidores/:id/pull
GET /api/v1/pulls/:id

Reglas del cortafuegos

GET /api/v1/servidores/:id/firewall
POST /api/v1/servidores/:id/firewall
DELETE /api/v1/servidores/:id/firewall?ruleId=uuid

Consejo: Tipos de reglas: IP, COUNTRY, ASN, FINGERPRINT, USER_ID, SERVER_ID, REGION. Las reglas duplicadas (mismo tipo + valor) devuelven HTTP 409.

Reglas de lista blanca

GET /api/v1/servidores/:id/lista blanca
POST /api/v1/servidores/:id/listablanca
DELETE /api/v1/servidores/:id/listablanca?ruleId=uuid

Lista negra

POST /api/v1/servidores/:id/lista negra

Las listas negras son por usuario (no por servidor). Cuando pones a un usuario de Discord en una lista negra, se le bloquea la verificación en TODOS tus servidores.

Analítica

GET /api/v1/servidores/:id/analytics?period=30d

El objeto embudo muestra cuántos intentos de verificación han alcanzado cada etapa. Utilícelo para identificar dónde están cayendo los miembros.

Listas de mercado

GET /api/v1/marketplace/listings?category=GAMING&sort=rating&page=1&limit=25
POST /api/v1/mercado/pedidos
GET /api/v1/mercado/pedidos/:id

Referencia completa del punto final

| Método | Punto final | Descripción |
|---|---|---|
| GET /api/v1/account Obtiene la información de la cuenta del usuario autenticado, plan, límites
| GET /api/v1/bots Lista de bots personalizados
| POST /api/v1/bots Crear un nuevo bot personalizado
| GET /api/v1/servers Lista de servidores (paginada)
| POST /api/v1/servers Crear un nuevo servidor
| GET /api/v1/servers/:id Obtener detalles del servidor con recuentos
| PUT /api/v1/servers/:id / Actualizar la configuración del servidor (parcial)
| DELETE /api/v1/servers/:id Eliminar un servidor y todos sus datos
| GET /api/v1/servers/:id/members Lista de miembros verificados (paginada, con posibilidad de búsqueda y filtrado)
| GET /api/v1/servers/:id/backups Lista de copias de seguridad de un servidor (paginada)
| POST /api/v1/servers/:id/backups Crear una nueva copia de seguridad (asíncrono)
| POST /api/v1/servidores/:id/backups/:backupId/restore Restaura una copia de seguridad (asíncrono)
| POST /api/v1/servers/:id/pull Iniciar un trabajo de extracción de miembros (asíncrono)
| GET /api/v1/pulls/:id Obtener el estado y el progreso del trabajo pull
| GET /api/v1/servers/:id/firewall Lista de reglas de cortafuegos
| POST /api/v1/servers/:id/firewall Añadir una regla de cortafuegos
| DELETE /api/v1/servers/:id/firewall?ruleId=x Eliminar una regla de cortafuegos
| GET /api/v1/servers/:id/whitelist Lista de reglas de la lista blanca
| POST /api/v1/servers/:id/whitelist Añadir una regla de la lista blanca
| DELETE /api/v1/servers/:id/whitelist?ruleId=x Eliminar una regla de la lista blanca
| POST /api/v1/servers/:id/blacklist Poner en lista negra a un usuario de Discord
| GET /api/v1/servers/:id/analytics Obtener análisis del servidor y embudo de verificación
| GET /api/v1/marketplace/listings Examinar los listados del mercado (paginados, filtrables)
| POST /api/v1/marketplace/orders Crear un pedido de mercado
| GET /api/v1/marketplace/orders/:id Obtener el estado del pedido y el progreso de la entrega

Códigos de estado HTTP

| Código | Significado |
|---|---|
| 200 | Éxito - recurso devuelto |
| 201 Creado - recurso creado con éxito
| 202 Aceptado: trabajo asíncrono en cola (copia de seguridad, restauración, extracción)
| 400 - Solicitud incorrecta: entrada no válida o error de validación
| 401 - No autorizado - falta la clave API o no es válida
| 403 Prohibido: el plan no incluye esta función o se ha superado el límite
| 404 No encontrado: el recurso no existe o no es de su propiedad
| 409 | Conflicto: recurso duplicado (por ejemplo, la regla del cortafuegos ya existe) | | 429 | Tasa limitada: el plan no incluye esta función o se ha superado el límite
| 429 | Tasa Limitada - demasiadas peticiones o el tiempo de espera pull no ha transcurrido | 500 | Error Interno de Servidor
| 500 | Error interno del servidor - fallo inesperado | 500 | Error interno del servidor - fallo inesperado | 500 | Error interno del servidor - fallo inesperado
API REST — Restore Hub Docs | Restore Hub