API, CLI y MCP
Ofrecemos tres formas de acceder a tu cuenta, con los mismos límites que tu plan.
API
REST, desde un pipeline, un script o tus propias herramientas. Un token que emites y revocas tú mismo.
CLI
Un archivo Python simple, sin necesidad de instalar nada. Usa la API. Esto puede ser usado por alguien en un terminal: listar lo que está caído, añadir o actualizar monitores.
MCP
A través del MCP-server puedes permitir que Claude o cualquier cosa que hable el protocolo que el agente entiende lea tu cuenta y haga cambios, como tú, en una conversación.
Tu token de API
Crea uno en API tokens en tu cuenta. Se muestra una vez, solo guardamos una huella de él, y te pertenece a ti en lugar de a la organización: no puede hacer más de lo que tú puedes, y deja de funcionar si te vas o cambia tu rol.
Envíalo como Authorization: Bearer n404_... en cada llamada. La primera que vale la pena hacer es /api/v1/me, que responde para qué organización actúa el token, qué rol lleva y cuál de los dos alcances tiene: una persona con dos cuentas tiene dos tokens y ninguna otra forma de saber cuál está en una variable de entorno.
Lo que hay en la versión 1
| Llamada | Qué hace |
|---|---|
| GET /api/v1/me | Qué es este token y para qué organización actúa |
| GET /api/v1/monitors | Todos los monitores, el más antiguo primero |
| POST /api/v1/monitors | Crea uno, siguiendo las mismas reglas que cumple el formulario |
| GET /api/v1/monitors/{id} | Un monitor |
| PATCH /api/v1/monitors/{id} | Cambia su nombre, dirección, intervalo o configuración, o ponlo en pausa |
| DELETE /api/v1/monitors/{id} | Elimínalo, y su historial con él |
| GET /api/v1/monitors/{id}/status | Qué está haciendo ahora y su uptime en una ventana |
| GET /api/v1/groups | Cada grupo, con cuántos monitores hay en él |
| POST /api/v1/groups | Crea uno; un nombre que ya existe devuelve el grupo que lo tiene |
| GET /api/v1/groups/{id} | Un grupo |
| PATCH /api/v1/groups/{id} | Renómbralo o cambia su descripción |
| DELETE /api/v1/groups/{id} | Elimínalo. Sus monitores permanecen sin agrupar |
| GET /api/v1/incidents | Cortes, los más recientes primero, filtrados por estado, monitor o periodo |
| GET /api/v1/incidents/{id} | Un incidente, con las sondas que lo vieron y confirmaron |
| GET /api/v1/maintenance | Ventanas de mantenimiento y lo que cubren |
| GET /api/v1/maintenance/{id} | Una ventana, con los monitores y grupos que cubre |
| POST /api/v1/maintenance | Programa una, en el horario de tu organización, para que un despliegue pueda abrir una ventana antes de comenzar |
| DELETE /api/v1/maintenance/{id} | Elimínala. Lo que ya cubría permanece cubierto |
| GET /api/v1/status-pages | Cada página de estado, y si está activada |
| GET /api/v1/status-pages/{id} | Una página, y lo que se publica en ella |
| POST /api/v1/status-pages/{id}/monitors | Pon un monitor en la página, con el nombre que debería leer su audiencia |
| DELETE /api/v1/status-pages/{id}/monitors/{id} | Quítalo de esta página. Otras páginas lo mantienen |
| POST /api/v1/status-pages/{id}/groups | Pon un grupo en la página; los monitores en él también se incluyen |
| DELETE /api/v1/status-pages/{id}/groups/{id} | Quita el encabezado. Sus monitores permanecen publicados |
Cada id en una ruta o un cuerpo es el UUID. Escribir necesita un token de lectura y escritura y un rol que pueda escribir.
El documento está en el formato OpenAPI 3.1. Describe cada llamada. Puedes usarlo para generar un cliente con openapi-generator, oapi-codegen.
La versión 1 solo crece: se puede añadir un campo, ninguno se elimina ni se cambia de tipo, y una segunda versión sería una segunda ruta. Así que un cliente generado sigue funcionando, y regenerarlo es cómo obtienes lo nuevo.
Un cliente, si quieres uno
Un archivo, Python 3.9 o más reciente, sin dependencias. Descárgalo y pon tu token en el entorno. Hace todo lo que hace la API, porque cada comando es una llamada a las rutas anteriores.
curl -O https://nomore404.com/api/nomore404.py
curl -s https://nomore404.com/api/nomore404.py.sha256 | sha256sum -c
chmod +x nomore404.py
export N404_TOKEN=n404_...
./nomore404.py monitors list
./nomore404.py monitors add --type https --target shop.example.com
./nomore404.py incidents --state open
El token viene de N404_TOKEN o de un archivo nomore404.env junto al script.
Para un asistente
Un assistant puede leer esta cuenta y cambiarla, usando el Model Context Protocol.
Una dirección, nada que instalar
Pega esto donde tu asistente pida un conector personalizado. Te enviará aquí para iniciar sesión y para decir para qué organización es la conexión, y esa es toda la configuración.
Actúa como tú: tu rol se lee en cada llamada, así que un asistente conectado por alguien que solo puede leer solo puede leer. Lee monitores, cortes, tiempo en línea, ventanas de mantenimiento y grupos, y puede añadir y cambiarlos, lo que incluye eliminar un monitor y su historial. Desconéctalo cuando quieras desde Tokens de API, donde está listado junto a ellos.
Fallos y listas largas
Una forma de error
El estado indica la categoría. El cuerpo indica qué fallo fue, con un código para ramificar y una frase para leer. La frase puede ser reformulada en cualquier versión, así que nada debería analizarla.
{
"error": {
"code": "monitor_not_found",
"message": "Nothing here with that id."
}
}
Cursors, no offsets
Un listado responde con items y next_cursor. Devuelve el cursor para obtener la siguiente página y detente cuando sea null. Los incidentes llegan mientras los estás leyendo, y un offset te mostraría una fila dos veces y nunca la siguiente.
GET /api/v1/incidents?limit=50
GET /api/v1/incidents?limit=50&cursor=...
Límites
Un token puede hacer 120 llamadas por minuto. Cada respuesta incluye RateLimit-Remaining y RateLimit-Reset, así que un cliente que se comporte bien puede ajustarse en lugar de encontrar el límite chocando con él. Cuando la cuenta supera el límite verás una respuesta 429 con Retry-After.