API Documentation

Integrate EstaCaido with your applications

Getting Started

The EstaCaido API allows you to programmatically manage your monitors, view incidents, configure alerts, and more. All API endpoints use JSON for request and response bodies.

Base URL

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

Rate Limits

API requests are limited to 100 requests per minute per API token. Exceeding this limit will result in a 429 Too Many Requests response.

Authentication

Use token-based authentication for all API requests

Get Authentication Token

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

Use the token in the Authorization header

Authorization: Token your-api-token-here

Monitors

Manage your website monitors.

List Monitors

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

Create Monitor

POST /api/v1/monitors/
Parameters
name Required Name for the monitor
domain Required Domain to monitor (e.g., example.com)
check_interval Optional Check interval in minutes (1, 3, 5, 10, 15, 30, 60). Default: 5
check_type Optional http, https, ping. Default: https

Get Monitor

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

Update Monitor

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

Delete Monitor

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

Pause Monitor

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

Resume Monitor

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

Get Monitor Statistics

GET /api/v1/monitors/{id}/statistics/
Parameters
days Optional Number of days (default: 30)

Incidents

View downtime incidents and their history.

List Incidents

GET /api/v1/incidents/
Parameters
status Optional Filter by status: ongoing, resolved
monitor Optional Filter by monitor ID

Get Incident

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

Alerts

Configure alert notifications for your monitors.

List Alerts

GET /api/v1/alerts/

Create Alert

POST /api/v1/alerts/
Parameters
monitor Required Filter by monitor ID
alert_type Required email, sms, slack, discord, webhook, pagerduty, teams
recipients Required Recipient addresses or webhook URLs
alert_on_down Optional Notify when site goes down (default: true)
alert_on_recovery Optional Notify when site recovers (default: true)

Update Alert

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

Delete Alert

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

Status Pages

Create and manage public status pages.

List Status Pages

GET /api/v1/status-pages/

Create Status Page

POST /api/v1/status-pages/
Parameters
title Required Title for the status page
slug Required URL slug (e.g., my-status-page)
description Optional Description text
is_public Optional Make publicly accessible (default: true)

Teams

Manage team access and collaboration.

List Teams

GET /api/v1/teams/

Create Team

POST /api/v1/teams/

Get Team

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

Code Examples

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': 5
}
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: 5
    })
})
.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": 5}'

Ready to get started?

Sign up for free and get your API token to start integrating.

Sign Up Free Get API Token