Introducción

La API de Pwnealo te permite realizar búsquedas de seguridad, generar reportes y gestionar alertas de forma programática. Esta documentación está disponible para usuarios con planes Pro e Investigador.

URL Base

https://tu-dominio.com/api

Autenticación

Todas las peticiones a la API requieren autenticación mediante cookies de sesión. Primero debes iniciar sesión en la aplicación web.

POST /auth/login.php

Iniciar sesión y obtener cookie de autenticación

Parámetros:

{ "email": "[email protected]", "password": "tu_contraseña" }

Respuesta exitosa:

{ "success": true, "message": "Login exitoso", "user": { "id": 1, "name": "Usuario", "email": "[email protected]", "plan": "pro" } }

GET /auth/check.php

Verificar estado de autenticación

Respuesta exitosa:

{ "success": true, "user": { "id": 1, "name": "Usuario", "email": "[email protected]", "plan": "investigator" }, "plan": "investigator", "dailySearches": 25 }

Búsquedas

POST /search.php

Realizar búsquedas de seguridad

Tipos de búsqueda disponibles:

Email

Todos los planes

Dominio

Pro e Investigador

Teléfono

Solo Investigador

Usuario

Solo Investigador

Parámetros:

{ "searchTerm": "[email protected]", "searchType": "email" }

Ejemplo búsqueda por teléfono:

{ "searchTerm": "+34612345678", "searchType": "phone" }

Respuesta exitosa:

{ "success": true, "results": { "breach1": [ { "email": "[email protected]", "password": "hash_contraseña", "source": "Base de datos filtrada", "date": "2023-01-15" } ] }, "total_results": 1, "search_id": 123 }

Reportes Avanzados

Disponible solo para planes Pro e Investigador

GET /reports.php

Generar reportes detallados de actividad

Parámetros de consulta:

  • type: summary, trends, detailed, security
  • period: número de días (por defecto: 30)

Ejemplo:

GET /reports.php?type=summary&period=7

Respuesta exitosa:

{ "success": true, "report_type": "summary", "period_days": "7", "generated_at": "2024-01-15 10:30:00", "data": { "overview": { "total_searches": 45, "total_results": 123, "unique_terms": 32, "avg_results_per_search": 2.73 }, "by_type": [ {"search_type": "email", "count": 30}, {"search_type": "domain", "count": 15} ] } }

Estadísticas

GET /stats.php

Obtener estadísticas básicas del usuario

Respuesta exitosa:

{ "success": true, "stats": { "total_searches": 156, "total_results": 423, "today_searches": 5, "week_searches": 23, "month_searches": 89 }, "recent_searches": [ { "id": 123, "search_term": "[email protected]", "search_type": "email", "results_count": 3, "created_at": "2024-01-15 09:30:00" } ], "plan_limits": { "daily_searches": -1, "search_types": ["email", "domain", "phone", "username"] } }

Alertas en Tiempo Real

Disponible solo para plan Investigador

GET /alerts.php

Configurar y gestionar alertas automáticas

Respuesta exitosa:

{ "success": true, "alerts": [ { "id": 1, "search_term": "miempresa.com", "search_type": "domain", "frequency": "daily", "active": true, "last_check": "2024-01-15 08:00:00" } ] }

Códigos de Error

401 - No Autorizado

Sesión expirada o no válida

{"error": "Sesión expirada"}

403 - Prohibido

Plan insuficiente para la operación

{"error": "Función solo disponible para Plan Pro e Investigador"}

400 - Solicitud Incorrecta

Parámetros inválidos o faltantes

{"error": "Tipo de búsqueda no válido"}

429 - Demasiadas Solicitudes

Límite diario de búsquedas alcanzado (solo plan gratuito)

{"error": "Límite diario de búsquedas alcanzado"}

Ejemplos de Uso

JavaScript (Fetch API)

// Realizar búsqueda const response = await fetch('/api/search.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, credentials: 'include', body: JSON.stringify({ searchTerm: '[email protected]', searchType: 'email' }) }); const data = await response.json(); console.log(data.results);

Python (requests)

import requests # Configurar sesión session = requests.Session() # Login login_data = { 'email': '[email protected]', 'password': 'contraseña' } login_response = session.post('https://tu-dominio.com/api/auth/login.php', json=login_data) # Realizar búsqueda search_data = { 'searchTerm': '+34612345678', 'searchType': 'phone' } response = session.post('https://tu-dominio.com/api/search.php', json=search_data) results = response.json()