# API de investigación

> Registros de CVE, consultas de advisories, búsqueda web, lectura de páginas y análisis de archivos, con los datos que usa el chat.


Estas rutas dan al CLI, a la extensión y a tu propio código los mismos datos que usa el chat. Tienen un límite por minuto que sube con tu nivel. No consumen tokens, así que no se cobran por token.

| Ruta | Qué hace |
|---|---|
| `GET /v1/cve/{id}` | Un CVE con la descripción de NVD, CVSS, CWE, EPSS, estado en CISA KEV y referencias |
| `GET /v1/cve/search?q=&vendor=&cwe=&kev=true&min_cvss=&min_epss=&limit=` | Busca en el espejo |
| `POST /v1/advisories/query` | Advisories de un paquete y una versión |
| `POST /v1/web/search` | Resultados de búsqueda web con título, URL y fragmento |
| `POST /v1/web/read` | Texto de una página pública, obtenido a través de una salida protegida |
| `POST /v1/files` | Sube un archivo para análisis estático |
| `GET /v1/files/{id}`, `GET /v1/files/{id}/content` | Estado y texto extraído |

```bash test
curl https://api.notholy.com/v1/cve/CVE-2021-44228 -H "Authorization: Bearer $NOTHOLY_API_KEY"
```

```bash test
curl -X POST https://api.notholy.com/v1/advisories/query \
  -H "Authorization: Bearer $NOTHOLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ecosystem": "npm", "name": "lodash", "version": "4.17.15"}'
```

## Archivos

`POST /v1/files` recibe los bytes sin procesar como cuerpo y el nombre en `x-file-name`. Agrega `?wait=1` para esperar el análisis. Los archivos enviados aquí se guardan 1 hora y luego se eliminan. Es un almacenamiento que tú pides, aparte de la inferencia, que no guarda nada. Los archivos se procesan dentro de un sandbox aislado y sin red, y nada de lo que contienen se ejecuta.

```bash test
printf 'const q = "SELECT * FROM users WHERE id = " + req.query.id;\n' > handler.js
curl -X POST "https://api.notholy.com/v1/files?wait=1" \
  -H "Authorization: Bearer $NOTHOLY_API_KEY" \
  -H "x-file-name: handler.js" \
  --data-binary @handler.js
```

`web/read` solo lee páginas públicas. Rechaza direcciones privadas y nunca envía tráfico a objetivos por ti. Todo lo que dice una página se trata como dato, nunca como instrucción.

## Siguientes pasos

- [CVEs en el chat](/es/chat/cves)
- [MCP](/es/mcp/local)
