API, CLI e MCP
Oferecemos três formas de aceder à tua conta, com os mesmos limites do teu plano.
API
REST, a partir de um pipeline, um script ou as tuas próprias ferramentas. Um token que emites e revogas tu mesmo.
CLI
Um ficheiro Python simples, sem necessidade de instalar nada. Usa a API. Pode ser usado por alguém num terminal: listar o que está offline, adicionar ou atualizar monitores.
MCP
Via o MCP-server podes permitir que o Claude ou qualquer coisa que fale o protocolo que o agente entende leia a tua conta e faça alterações, como tu, numa conversa.
O teu token API
Cria um em API tokens na tua conta. É mostrado uma vez, guardamos apenas uma impressão digital dele, e pertence a ti e não à organização: não pode fazer mais do que tu podes, e deixa de funcionar se saíres ou o teu papel mudar.
Envia-o como Authorization: Bearer n404_... em cada chamada. A primeira que vale a pena fazer é /api/v1/me, que responde por qual organização o token age, qual papel carrega e qual dos dois escopos tem: uma pessoa com duas contas tem dois tokens e nenhuma outra forma de saber qual está numa variável de ambiente.
O que está na versão 1
| Chamada | O que faz |
|---|---|
| GET /api/v1/me | O que este token é e por qual organização age |
| GET /api/v1/monitors | Todos os monitores, do mais antigo para o mais recente |
| POST /api/v1/monitors | Cria um, seguindo as mesmas regras que o formulário obedece |
| GET /api/v1/monitors/{id} | Um monitor |
| PATCH /api/v1/monitors/{id} | Altera o nome, endereço, intervalo ou configuração, ou pausa-o |
| DELETE /api/v1/monitors/{id} | Apaga-o, e o seu histórico com ele |
| GET /api/v1/monitors/{id}/status | O que está a fazer agora, e o seu uptime ao longo de uma janela |
| GET /api/v1/groups | Cada grupo, com quantos monitores estão nele |
| POST /api/v1/groups | Cria um; um nome que já existe devolve o grupo que o tem |
| GET /api/v1/groups/{id} | Um grupo |
| PATCH /api/v1/groups/{id} | Renomeia-o ou altera a sua descrição |
| DELETE /api/v1/groups/{id} | Apaga-o. Os seus monitores ficam, sem grupo |
| GET /api/v1/incidents | Falhas, mais recentes primeiro, filtradas por estado, monitor ou período |
| GET /api/v1/incidents/{id} | Um incidente, com os probes que o viram e confirmaram |
| GET /api/v1/maintenance | Janelas de manutenção e o que cobrem |
| GET /api/v1/maintenance/{id} | Uma janela, com os monitores e grupos que cobre |
| POST /api/v1/maintenance | Agenda uma, no horário da tua organização, para que um deploy possa abrir uma janela antes de começar |
| DELETE /api/v1/maintenance/{id} | Apaga-a. O que já cobria continua coberto |
| GET /api/v1/status-pages | Cada página de estado, e se está ativada |
| GET /api/v1/status-pages/{id} | Uma página, e o que está publicado nela |
| POST /api/v1/status-pages/{id}/monitors | Coloca um monitor na página, com o nome que o público deve ler |
| DELETE /api/v1/status-pages/{id}/monitors/{id} | Remove-o desta página. Outras páginas mantêm-no |
| POST /api/v1/status-pages/{id}/groups | Coloca um grupo na página; os monitores nele também vêm |
| DELETE /api/v1/status-pages/{id}/groups/{id} | Remove o cabeçalho. Os seus monitores continuam publicados |
Cada id num caminho ou corpo é o UUID. Escrever requer um token de leitura e escrita e um papel que permita escrever.
O documento está no formato OpenAPI 3.1. Descreve cada chamada. Podes usá-lo para gerar um cliente com openapi-generator, oapi-codegen.
A versão 1 só cresce: um campo pode ser adicionado, nenhum é removido ou reescrito, e uma segunda versão seria um segundo caminho. Assim, um cliente gerado continua a funcionar, e regenerá-lo é como apanhas o que é novo.
Um cliente, se quiseres um
Um ficheiro, Python 3.9 ou mais recente, sem dependências. Faz o download e coloca o teu token no ambiente. Faz tudo o que a API faz, porque cada comando é uma chamada às rotas acima.
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
O token vem de N404_TOKEN ou de um ficheiro nomore404.env ao lado do script.
Para um assistente
Um assistente pode ler esta conta e alterá-la, através do Model Context Protocol.
Um endereço, nada para instalar
Cola isto onde o teu assistente pedir um conector personalizado. Vai enviar-te aqui para fazer login e dizer para que organização é a ligação, e isso é toda a configuração.
Age como tu: a tua função é lida em cada chamada, então um assistente ligado por alguém que só pode ler só pode ler. Lê monitores, falhas, uptime, janelas de manutenção e grupos, e pode adicioná-los e alterá-los, o que inclui apagar um monitor e o histórico com ele. Desliga-o quando quiseres em Tokens da API, onde está listado ao lado deles.
Falhas e listas longas
Um formato de erro
O status indica a categoria. O corpo indica qual foi a falha, com um código para ramificar e uma frase para ler. A frase pode ser reformulada em qualquer versão, então nada deve analisá-la.
{
"error": {
"code": "monitor_not_found",
"message": "Nothing here with that id."
}
}
Cursors, não offsets
Uma listagem responde com items e next_cursor. Passa o cursor de volta para obter a próxima página e para quando for null. Incidentes chegam enquanto os estás a ler, e um offset mostraria silenciosamente uma linha duas vezes e nunca mostraria a próxima.
GET /api/v1/incidents?limit=50
GET /api/v1/incidents?limit=50&cursor=...
Limites
Um token pode fazer 120 chamadas por minuto. Cada resposta inclui RateLimit-Remaining e RateLimit-Reset, para que um cliente responsável possa gerir o ritmo em vez de descobrir o limite ao ultrapassá-lo. Quando a conta excede o limite, vais ver uma resposta 429 com Retry-After.