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_hereConsejo: 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 200X-RateLimit-Límite: 50
X-RateLimit-Remanente: 47
X-RateLimit-Reset: 1680000010Formato 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/:idAdvertencia: 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=trueCopias de seguridad - Lista y creación
GET /api/v1/servidores/:id/backups?page=1&limit=25
POST /api/v1/servidores/:id/copias de seguridadConsejo: 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/restoreAdvertencia: 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/:idReglas del cortafuegos
GET /api/v1/servidores/:id/firewall
POST /api/v1/servidores/:id/firewall
DELETE /api/v1/servidores/:id/firewall?ruleId=uuidConsejo: 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=uuidLista negra
POST /api/v1/servidores/:id/lista negraLas 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=30dEl 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/:idReferencia 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 entregaCó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