API do Tá Rodando v1

Monitoramento de serviços HTTP via REST — feita pra agentes de IA e humanos. Base: https://tarodando.com.br/api/v1

Introdução

Monitoramento de serviços HTTP com status page em português. Esta referência é escrita pra um agente de IA (ou um humano com pressa) ler e agir.

Formato: JSON. Erros voltam { "error": "<codigo>", "message": "<o que houve e o que fazer>" }.

Autenticação

Toda chamada leva o header Authorization: Bearer trd_live_....

Como obter a chave: peça ao humano — painel em https://tarodando.com.br/app/plano, seção "Chaves de API". Sem conta? Login por email ou GitHub em https://tarodando.com.br/entrar (grátis, sem cartão).

Planos e limites

Grátis: 3 monitores ativos, checagem a cada 5 ou 15 min.

Pro (R$79/mês): 10 monitores, checagem a cada 1 min.

Criar monitor

POST/monitors

Cria um monitor HTTP e roda o primeiro check na hora — o corpo do 201 já reflete o resultado.

Corpo

  • urlstringobrigatório

    endereço público a monitorar — IPs privados são recusados

  • namestring

    derivado da URL se omitido

  • intervalMinint

    padrão 5; grátis aceita 5 ou 15, Pro também 1

  • sectionstring

    nome do agrupamento na página — casa com seção existente ou cria

URL fora do ar vem com lastStatus: "fail" (não null). lastStatus: null só acontece se o check não pôde nem rodar (erro interno raro) — nesse caso, consulte GET /monitors/{id}. A status page pública fica em statusPage.

POST/monitors
curl -X POST https://tarodando.com.br/api/v1/monitors \
  -H "Authorization: Bearer trd_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://app.exemplo.com.br/healthcheck",
    "name": "API",
    "intervalMin": 5,
    "section": "Backend"
  }'
Resposta 201
{
  "monitor": {
    "id": "cm9x1a2b3c4d5e6f7g8h9i0j1",
    "name": "API",
    "url": "https://app.exemplo.com.br/healthcheck",
    "intervalMin": 5,
    "status": "operational",
    "lastStatus": "ok",
    "lastCheckedAt": "2026-07-16T12:00:00.000Z",
    "section": "Backend",
    "paused": false,
    "createdAt": "2026-07-16T12:00:00.000Z",
    "statusPage": "https://exemplo.tarodando.com.br"
  }
}

Listar monitores

GET/monitors

Lista todos os monitores da conta, no mesmo shape do criar.

paused: true = monitor além do teto do plano, não está sendo checado. url pode ser null em componentes legados criados manualmente (sem monitoramento) — trate como opcional.

GET/monitors
curl -X GET https://tarodando.com.br/api/v1/monitors \
  -H "Authorization: Bearer trd_live_..."
Resposta 200
{
  "monitors": [
    {
      "id": "cm9x1a2b3c4d5e6f7g8h9i0j1",
      "name": "API",
      "url": "https://app.exemplo.com.br/healthcheck",
      "intervalMin": 5,
      "status": "operational",
      "lastStatus": "ok",
      "lastCheckedAt": "2026-07-16T12:00:00.000Z",
      "section": "Backend",
      "paused": false,
      "createdAt": "2026-07-16T12:00:00.000Z",
      "statusPage": "https://exemplo.tarodando.com.br"
    }
  ]
}

Detalhe de um monitor

GET/monitors/{id}

Um monitor + resultado da última checagem.

Parâmetros

  • idstringobrigatório

    id do monitor

lastCheck: null = nunca checado.

GET/monitors/{id}
curl -X GET https://tarodando.com.br/api/v1/monitors/cm9x1a2b3c4d5e6f7g8h9i0j1 \
  -H "Authorization: Bearer trd_live_..."
Resposta 200
{
  "monitor": {
    "id": "cm9x1a2b3c4d5e6f7g8h9i0j1",
    "name": "API",
    "url": "https://app.exemplo.com.br/healthcheck",
    "intervalMin": 5,
    "status": "operational",
    "lastStatus": "ok",
    "lastCheckedAt": "2026-07-16T12:00:00.000Z",
    "section": "Backend",
    "paused": false,
    "createdAt": "2026-07-16T12:00:00.000Z",
    "statusPage": "https://exemplo.tarodando.com.br"
  },
  "lastCheck": {
    "ok": true,
    "latencyMs": 123,
    "error": null,
    "checkedAt": "2026-07-16T12:00:00.000Z"
  }
}

Atualizar monitor

PATCH/monitors/{id}

Corpo com qualquer subconjunto dos campos abaixo. Campos ausentes não mudam.

Parâmetros

  • idstringobrigatório

    id do monitor

Corpo

  • namestring

    novo nome

  • urlstring

    nova URL (mesma validação do criar)

  • intervalMinint

    novo intervalo (limites do plano valem)

  • sectionstring | null

    null remove da seção

PATCH/monitors/{id}
curl -X PATCH https://tarodando.com.br/api/v1/monitors/cm9x1a2b3c4d5e6f7g8h9i0j1 \
  -H "Authorization: Bearer trd_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "API pública",
    "intervalMin": 15
  }'
Resposta 200
{
  "monitor": {
    "id": "cm9x1a2b3c4d5e6f7g8h9i0j1",
    "name": "API",
    "url": "https://app.exemplo.com.br/healthcheck",
    "intervalMin": 5,
    "status": "operational",
    "lastStatus": "ok",
    "lastCheckedAt": "2026-07-16T12:00:00.000Z",
    "section": "Backend",
    "paused": false,
    "createdAt": "2026-07-16T12:00:00.000Z",
    "statusPage": "https://exemplo.tarodando.com.br"
  }
}

Remover monitor

DELETE/monitors/{id}

Remove o monitor e o serviço correspondente da página.

Parâmetros

  • idstringobrigatório

    id do monitor

DELETE/monitors/{id}
curl -X DELETE https://tarodando.com.br/api/v1/monitors/cm9x1a2b3c4d5e6f7g8h9i0j1 \
  -H "Authorization: Bearer trd_live_..."
Resposta 200
{ "ok": true }

Erros

  • 401unauthorizedchave ausente, inválida ou revogada
  • 400invalid_bodycorpo não é JSON
  • 422invalid_url / invalid_name / invalid_intervalvalidação — a message diz o que corrigir
  • 403plan_limitteto de monitores do plano atingido — upgrade ou remova um
  • 404not_found / no_pageid inexistente nesta conta / conta sem página (onboarding pendente)

O que a API v1 NÃO faz

Incidentes, canais de aviso (WhatsApp/Telegram/Slack…) e assinantes são geridos no painel: https://tarodando.com.br/app.