Documentación de la API de Drokio
Construí integraciones sobre Drokio: publicá telemetría desde tus sitios, dispará scans bajo demanda, consultá hallazgos de Brain IA, y conectá notificaciones con tus herramientas favoritas.
3 pasos para tu primera llamada
- 1
Obtené tu API key
Desde el dashboard → Configuración → API Keys. Generá una nueva con permisos de lectura/escritura. El formato es dk_live_… o dk_test_…
- 2
Probá la autenticación
Cualquier endpoint sirve para validar la key — abajo usamos /api/v1/auth/verify que responde con tu plan y uso actual.
- 3
Construí tu primer flujo
Con la key validada, podés empezar a publicar telemetría, consultar eventos o disparar scans desde tu app.
# 1. Verificá tu API key
curl -X POST https://drokio.com/api/v1/auth/verify \
-H "Authorization: Bearer YOUR_API_KEY"Bearer token en cada request
Todos los endpoints privados requieren el header Authorization: Bearer <api_key>. No usamos OAuth ni JWT — la API key es el único secreto que necesitás manejar. El único endpoint público (sin auth) es GET /api/v1/status.
Guardá la API key como variable de entorno (DROKIO_API_KEY). Nunca la hardcodees en el código ni la publiques en frontend.
Desde el dashboard podés revocar y generar una nueva key en cualquier momento — la vieja deja de funcionar al instante.
9 endpoints para tu integración
/api/v1/auth/verifyConfirma que la API key es válida, retorna el plan asociado y el uso actual (sitios_allowed / sitios_used). Útil para health-checks de tu integración al arrancar.
/api/v1/telemetryEndpoint que usa el plugin Drako para publicar eventos desde el sitio monitoreado — login fallidos, cambios de archivos, escaneos, etc. El body es un evento individual; para batch usá varias llamadas.
/api/v1/sitesLista todos los sitios monitoreados por la API key. Devuelve resumen: URL, plan, estado, última telemetría, contadores.
/api/v1/sites/{siteId}Retorna el estado completo de un sitio: versiones de WP/PHP, plugins y themes activos, stats (espacio, tráfico, amenazas), últimos 20 eventos.
/api/v1/eventsDevuelve eventos paginados para un sitio o toda la cuenta. Soporta filtros por severidad y rango temporal.
/api/v1/scanDispara un scan del sitio indicado. Endpoint de compatibilidad con plugins antiguos — preferí /api/v1/scanner para casos nuevos.
/api/v1/brain/analyzeEnvía un fragmento de código o un evento crudo para análisis con el modelo de IA de Drokio. Retorna veredicto (malicioso, sospechoso, benigno), score de confianza y razones.
/api/v1/connectCRUD del hub de integraciones: Slack, Discord, Telegram, PagerDuty, Teams, Email, Webhook. GET lista (secretos enmascarados), POST upsert (crea si no trae id, actualiza si sí), DELETE elimina por ?id=.
/api/v1/statusEndpoint público (sin autenticación). Retorna estado operativo de la API, latencia del procesamiento y versión.
Bibliotecas oficiales por lenguaje
SDKs con tipado, retries, manejo de rate limits y helpers idiomáticos. Si tu lenguaje no está, usá los snippets de cURL/fetch directamente — la API sigue convenciones REST estándar.
100 requests por minuto por API key
Los límites se aplican por API key, no por IP. Si excedés el límite, la API responde 429 con un header Retry-After indicando los segundos para reintentar.
- X-Drokio-Version: 1.0.0
- X-RateLimit-Remaining: 92
Códigos y cómo manejarlos
Los errores siguen el envelope estándar: { success: false, error: { code, message } }. Usá el code (stable) para branching en tu lógica; el message puede cambiar y está pensado para logs humanos.
| Código | HTTP | Cuándo ocurre |
|---|---|---|
| UNAUTHORIZED | 401 | El header Authorization falta o no tiene formato Bearer. |
| INVALID_KEY | 401 | La API key no existe o fue revocada. |
| EXPIRED | 403 | La API key expiró — renovala desde el dashboard. |
| RATE_LIMITED | 429 | Excediste el límite de 100 requests/minuto. Incluye header Retry-After. |
| INVALID_PAYLOAD | 400 | El cuerpo del request no pasó la validación. |
| SITE_NOT_FOUND | 404 | El sitio solicitado no existe en esta cuenta. |
| INTEGRATION_NOT_FOUND | 404 | La integración no existe o ya fue eliminada. |
| PLAN_UPGRADE_REQUIRED | 403 | La operación requiere un plan superior al actual. |
| INTERNAL_ERROR | 500 | Error inesperado del servidor. Si persiste, reportalo con el request_id del response. |