La API de athorion es una API REST JSON, operada desde Alemania con escaneos desde nuestra propia red en Darmstadt (AS62023). Hace tres cosas: buscar en el índice no intrusivo de Internet, ejecutar un escaneo de seguridad bajo demanda completo de cualquier objetivo público con un PDF como resultado, y hacer preguntas fundamentadas a nuestra IA de defensa (Manta para el triaje rápido, Nautilus para el razonamiento profundo). Todas las solicitudes van por HTTPS a la URL base de abajo.
BASEhttps://app.athorion.io/v1
Autenticación y alcances
Envíe su clave como token bearer en la cabecera Authorization. Las claves empiezan por ath_ y solo se muestran una vez, al crearlas. Los clientes crean claves en la consola, en API; las claves de socios las emite el operador de la plataforma.
Cada clave tiene un alcance (scope) que limita los endpoints que puede llamar. Una solicitud fuera del alcance devuelve 403.
AlcancePuede acceder a
scanSolo el flujo de escaneo bajo demanda: /v1/scans y sus subrutas.
llmSolo la IA de defensa (Manta y Nautilus): /v1/models, /v1/ask, /v1/ask/stream.
mcpLas herramientas del Model Context Protocol: búsqueda, escaneos bajo demanda, vista previa de exposición y la IA de defensa. La usa el servidor MCP alojado; solo planes de pago.
fullTodo /v1, incluida la búsqueda. El valor por defecto para claves de consola y de clientes.
Límites de tasa y cuota
Cada clave tiene una cuota diaria opcional (total de solicitudes por día natural, UTC) y un límite de tasa por hora opcional (solicitudes en una ventana móvil de 60 minutos). El operador fija ambos por clave; sin valor significa ilimitado. Superar cualquiera de los dos devuelve 429 con un errorquota_exceeded o rate_limited.
HTTP/1.1 429 Too Many Requests
{
"detail": {
"error": "rate_limited",
"message": "hourly rate limit reached (60/hour)"
}
}
Los escaneos bajo demanda están además sujetos a un límite por tenant en toda la plataforma y a la lista de bloqueo global (los rangos privados y reservados nunca se escanean).
Errores y códigos de estado
Los errores devuelven un cuerpo JSON con un campo detail: una cadena o un objeto con un código error estable y un message legible.
HTTPerrorSignificado
400invalid_targetEl objetivo no es un dominio ni una IP pública, o no se pudo resolver.
401-Clave de API ausente o no válida.
403-El alcance de la clave no permite este endpoint.
404-ID de escaneo no encontrado para esta clave.
429quota_exceeded · rate_limitedSe alcanzó la cuota diaria o el límite de tasa por hora.
503llm_unavailableLa IA de defensa (backend LLM) no está configurada en esta instancia.
Servidor MCP
Controle toda la plataforma desde un agente de IA mediante el Model Context Protocol. El servidor alojado en mcp.athorion.io ofrece la búsqueda en el índice, los escaneos bajo demanda, las comprobaciones de exposición y la IA de defensa (Manta y Nautilus) como herramientas MCP. Autentíquese con una clave de alcance mcp (créela en la consola; plan Cyber Intelligence o Ecosystem). Cada llamada se ejecuta con su clave, su cuota y su presupuesto de modelo; el escaneo sigue siendo no intrusivo y controlado por el Authorization Plane.
search
Consulta del índice de Internet.
scan · scan_result
Escaneo no intrusivo bajo demanda.
exposure_preview
Comprobación pasiva de la postura del dominio.
ask · list_models
IA de defensa fundamentada (Manta, Nautilus).
Conecte un cliente stdio (Claude Desktop, agentes de IDE) con el shim de npx:
Los clientes con soporte remoto pueden conectarse directamente a https://mcp.athorion.io/mcp con una cabecera Authorization: Bearer.
GET/v1/searchscope: full
Buscar en el índice
Búsqueda en el índice Tier-1 no intrusivo. Los filtros de q son port:product:cve:vuln:category:net:has_vuln:sev: más texto libre. Ordenado por número de vulnerabilidades y luego por última detección.
PARÁMETROS
q
string
Consulta, p. ej. port:3389 category:rdp has_vuln:true.
port
int
Filtro rápido para un solo puerto.
ip
string
Filtro rápido para una red/IP (net:).
scan
bool
true ejecuta una comprobación profunda en vivo de un único host que no está actualizado en el índice.
Pone en cola un escaneo Tier-2 completo y no intrusivo de cualquier dominio o IP públicos (puertos, TLS, banners HTTP, CVE según versión). No se requiere prueba de propiedad. Devuelve un id de trabajo para consultar. Una webhook_url opcional recibe un POST cuando termina el escaneo.
PARÁMETROS
target
body · obligatorio
Dominio o IPv4 pública.
webhook_url
body
URL http(s) pública a la que se llama cuando termina el escaneo (sustituye el valor por defecto de la clave).
Consulte tras iniciar un escaneo. Mientras se ejecuta, status es queued o running. Con done se rellenan findings (severidad, CVE, KEV, categoría) y una pdf_url. refused/error incluyen un refusal_reason.
El catálogo del enrutador de la IA de defensa: manta (triaje rápido, por defecto) y nautilus (razonamiento profundo). Elija uno con ?model= en /v1/ask (desconocido o vacío vuelve al predeterminado). available:false significa que ese alias no está configurado en esta instancia.
Preguntas y respuestas fundamentadas. El modelo ejecuta una comprobación profunda en vivo y no intrusiva de cada host mencionado en la pregunta y responde solo a partir de esa evidencia (nunca inventa hallazgos). Devuelve la respuesta, el modelo que la generó y los hosts comprobados.
PARÁMETROS
q
body · obligatorio
La pregunta. Cada dominio/IP que contenga se comprueba en vivo.
model
body
manta (rápido) o nautilus (profundo). Por defecto manta.
history
body
Array JSON opcional con turnos {q, a} anteriores como contexto.
{
"model": "nautilus",
"model_label": "Nautilus",
"answer": "mail.example.de exposes SMTP on 25 and\n587 with STARTTLS; SPF and DMARC are present,\nDKIM is missing. No critical CVE on the banner.",
"grounded_on": ["mail.example.de"]
}
GET/v1/ask/streamscope: llm
Transmitir una respuesta (SSE)
Variante Server-Sent-Events de /v1/ask: deltas think (el razonamiento del modelo), luego deltas answer (el contenido) y después un evento done. Misma base factual y mismos modelos.
event: think
data: Running a live deep check of
example.de (DNS, mail, TLS, ports, CVEs) ...
event: answer
data: example.de has no critical exposure.
event: done
data: {}
POST/v1/chat/completionsscope: llm
Chat compatible con OpenAI
Sustituto directo para el SDK de OpenAI y clientes agente como Crush, Cursor o Continue: URL base https://app.athorion.io/v1, tu clave como API key. Admite stream, tools (las llamadas vuelven como tool_calls reales) y modo JSON. A diferencia de /v1/ask, sin escaneo en vivo - tú aportas el contexto.
PARÁMETROS
model
body · obligatorio
nautilus (razona primero) o manta (responde directamente); full / flash también funcionan, un nombre desconocido devuelve 400.
messages
body · obligatorio
Mensajes de chat de OpenAI.
stream
body
true para Server-Sent Events en formato de chunks de OpenAI.
tools
body
Herramientas de función; las llamadas del modelo vuelven como tool_calls.
curl -X POST "https://app.athorion.io/v1/chat/completions" \
-H "Authorization: Bearer $ATHORION_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"nautilus","messages":[{"role":"user","content":"Explain the risk of RDP without NLA."}]}'
Un cliente de línea de comandos ligero sobre esta API: lance un escaneo, descargue el PDF y hable con la IA de defensa directamente desde su terminal. Lee su clave de ATHORION_KEY y elige un modelo con --model, con los mismos alias recon / deep que /v1/ask.
pip install athorion
export ATHORION_KEY=ath_••••••••
# full non-intrusive scan of a target, wait, save the PDF
athorion scan example.de --pdf report.pdf
# ask the defence AI, grounded on a live check
athorion ask "is mail.example.de exposed?" --model deep
# pipe context in, like any unix tool
cat targets.txt | athorion scan --stdin --json