Saltar al contenido

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.

La API

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.

El cliente de línea de comandos

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.

Para un asistente

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.

openapi.json

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.

nomore404.py

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.

Crea una cuenta gratis