Documentación API

Integrar EstaCaido con sus aplicaciones

Primeros pasos

La API de EstaCaido te permite gestionar tus monitores, ver incidentes, configurar alertas y más desde tu propio código. Todos los endpoints de la API usan JSON en el cuerpo de las solicitudes y respuestas.

URL base

https://www.estacaido.com/api/v1/

Límites de uso

Cada token de API puede hacer hasta 100 solicitudes por minuto. Las solicitudes que superen ese límite reciben una respuesta 429 Too Many Requests.

Autenticación

Usa autenticación por token en todas las solicitudes a la API. Incluye tu token en la cabecera Authorization.

Obtener token de autenticación

POST /api/v1/auth/token/
Solicitud
curl -X POST https://www.estacaido.com/api/v1/auth/token/ \
  -H "Content-Type: application/json" \
  -d '{"username": "your@email.com", "password": "yourpassword"}'
Respuesta
{
  "token": "your-api-token-here"
}

Usa el token en la cabecera Authorization

Authorization: Token your-api-token-here

Monitores

Gestiona los monitores de tus sitios web.

Listar monitores

GET /api/v1/monitors/
Respuesta
[
  {
    "id": 1,
    "name": "Production API",
    "company": {
      "id": 1,
      "website": "api.example.com"
    },
    "check_type": "http",
    "check_interval": 300,
    "is_active": true,
    "is_paused": false,
    "last_check_at": "2024-01-15T10:30:00Z",
    "created_at": "2024-01-01T00:00:00Z"
  }
]

Crear monitor

POST /api/v1/monitors/
Parámetros
name Obligatorio Nombre del monitor
domain Obligatorio Dominio a monitorizar, por ejemplo example.com
check_interval Opcional Intervalo de comprobación en segundos, uno de 30, 60, 300, 600, 900, 1800, 3600. Predeterminado: 300
check_type Opcional Uno de estos valores: http, https, ping. Predeterminado: https

Obtener monitor

GET /api/v1/monitors/{id}/

Actualizar monitor

PUT /api/v1/monitors/{id}/

Eliminar monitor

DELETE /api/v1/monitors/{id}/

Pausar monitor

POST /api/v1/monitors/{id}/pause/

Reanudar monitor

POST /api/v1/monitors/{id}/resume/

Obtener estadísticas del monitor

GET /api/v1/monitors/{id}/statistics/
Parámetros
days Opcional Número de días a incluir. Por defecto: 30

Incidentes

Consulta las incidencias de caída y su historial.

Listar incidentes

GET /api/v1/incidents/
Parámetros
status Opcional Filtrar por estado: ongoing, resolved
monitor Opcional Filtrar por ID de monitor

Obtener incidente

GET /api/v1/incidents/{id}/

Alertas

Configura las notificaciones de alerta de tus monitores.

Listar alertas

GET /api/v1/alerts/

Crear alerta

POST /api/v1/alerts/
Parámetros
monitor Obligatorio ID del monitor
alert_type Obligatorio Uno de estos valores: email, sms, slack, discord, webhook, pagerduty, teams
recipients Obligatorio Direcciones de destinatarios o URL de webhook
alert_on_down Opcional Avisar cuando el sitio caiga (por defecto: true)
alert_on_recovery Opcional Avisar cuando el sitio se recupere (por defecto: true)

Actualizar alerta

PUT /api/v1/alerts/{id}/

Eliminar alerta

DELETE /api/v1/alerts/{id}/

Páginas de estado

Crea y gestiona páginas de estado públicas.

Listar páginas de estado

GET /api/v1/status-pages/

Crear página de estado

POST /api/v1/status-pages/
Parámetros
title Obligatorio Título de la página de estado
slug Obligatorio Slug de URL (p. ej., my-status-page)
description Opcional Texto de descripción
is_public Opcional Hacer accesible públicamente (por defecto: true)

Equipos

Gestiona el acceso y la colaboración del equipo.

Listar equipos

GET /api/v1/teams/

Crear equipo

POST /api/v1/teams/

Obtener equipo

GET /api/v1/teams/{id}/

Ejemplos de código

Python

import requests

API_TOKEN = 'your-api-token'
BASE_URL = 'https://www.estacaido.com/api/v1'

headers = {
    'Authorization': f'Token {API_TOKEN}',
    'Content-Type': 'application/json'
}

# List all monitors
response = requests.get(f'{BASE_URL}/monitors/', headers=headers)
monitors = response.json()
print(monitors)

# Create a new monitor
new_monitor = {
    'name': 'My Website',
    'domain': 'example.com',
    'check_interval': 300
}
response = requests.post(f'{BASE_URL}/monitors/', json=new_monitor, headers=headers)
print(response.json())

JavaScript

const API_TOKEN = 'your-api-token';
const BASE_URL = 'https://www.estacaido.com/api/v1';

const headers = {
    'Authorization': `Token ${API_TOKEN}`,
    'Content-Type': 'application/json'
};

// List all monitors
fetch(`${BASE_URL}/monitors/`, { headers })
    .then(res => res.json())
    .then(monitors => console.log(monitors));

// Create a new monitor
fetch(`${BASE_URL}/monitors/`, {
    method: 'POST',
    headers,
    body: JSON.stringify({
        name: 'My Website',
        domain: 'example.com',
        check_interval: 300
    })
})
.then(res => res.json())
.then(data => console.log(data));

cURL

# List all monitors
curl -X GET https://www.estacaido.com/api/v1/monitors/ \
  -H "Authorization: Token your-api-token"

# Create a new monitor
curl -X POST https://www.estacaido.com/api/v1/monitors/ \
  -H "Authorization: Token your-api-token" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Website", "domain": "example.com", "check_interval": 300}'

¿Listo para empezar?

Regístrate gratis y obtén tu token de API para empezar a integrar.

Regístrate gratis Obtener token de API