{
    "openapi": "3.1.0",
    "info": {
        "title": "uptime.rs API",
        "version": "1.0.0",
        "description": "Uptime monitoring every minute from several locations. Free tools (website, SSL, domain expiry and TCP ping checks) need no key; everything else needs an API key from Settings \u2192 API, sent as \"Authorization: Bearer <key>\". Human docs: https://uptime.rs/docs/api. MCP server: https://uptime.rs/mcp.",
        "contact": {
            "url": "https://uptime.rs/contact"
        }
    },
    "servers": [
        {
            "url": "https://uptime.rs/api/v1"
        }
    ],
    "components": {
        "securitySchemes": {
            "apiKey": {
                "type": "http",
                "scheme": "bearer",
                "description": "API key from Settings \u2192 API (urs_\u2026)"
            }
        }
    },
    "security": [
        {
            "apiKey": []
        }
    ],
    "paths": {
        "/tools/website": {
            "get": {
                "tags": [
                    "Free tools"
                ],
                "summary": "Is a website up?",
                "description": "Requests the URL now and returns status code, response time, redirects, server, Cloudflare and challenge flags. No API key needed; 30 requests per minute per IP.",
                "security": [],
                "parameters": [
                    {
                        "name": "host",
                        "in": "query",
                        "required": true,
                        "description": "Domain, URL or IP, e.g. example.com",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Result in \"data\"",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/tools/ssl": {
            "get": {
                "tags": [
                    "Free tools"
                ],
                "summary": "Read a TLS certificate",
                "description": "Issuer, names, expiry, days left and whether browsers trust the certificate. Add :port for another port. No API key needed; 30 requests per minute per IP.",
                "security": [],
                "parameters": [
                    {
                        "name": "host",
                        "in": "query",
                        "required": true,
                        "description": "Domain, URL or IP, e.g. example.com",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Result in \"data\"",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/tools/domain": {
            "get": {
                "tags": [
                    "Free tools"
                ],
                "summary": "Domain expiry",
                "description": "Registration, expiry date, days left and registrar, from RDAP or WHOIS. No API key needed; 30 requests per minute per IP.",
                "security": [],
                "parameters": [
                    {
                        "name": "host",
                        "in": "query",
                        "required": true,
                        "description": "Domain, URL or IP, e.g. example.com",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Result in \"data\"",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/tools/ping": {
            "get": {
                "tags": [
                    "Free tools"
                ],
                "summary": "TCP ping",
                "description": "Four TCP connects with min/avg/max time in ms. No API key needed; 30 requests per minute per IP.",
                "security": [],
                "parameters": [
                    {
                        "name": "host",
                        "in": "query",
                        "required": true,
                        "description": "Domain, URL or IP, e.g. example.com",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "port",
                        "in": "query",
                        "required": false,
                        "description": "TCP port, default 443",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Result in \"data\"",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/me": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "The key's account",
                "responses": {
                    "200": {
                        "description": "Account",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/usage": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "Today's API usage and limits",
                "responses": {
                    "200": {
                        "description": "Usage",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/monitors": {
            "get": {
                "tags": [
                    "Monitors"
                ],
                "summary": "List monitors",
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "up, down, pending, blocked or paused",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Search in name and target",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group",
                        "in": "query",
                        "required": false,
                        "description": "Group name",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "1-500, default 100",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Monitors with 24-hour uptime",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "Monitors"
                ],
                "summary": "Add monitors",
                "description": "Send \"target\" or \"targets\" (array), \"type\" (http or tcp) and check options; see the human docs.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "target": {
                                        "type": "string"
                                    },
                                    "targets": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "http",
                                            "tcp"
                                        ]
                                    },
                                    "name": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Added"
                    }
                }
            }
        },
        "/monitors/{id}": {
            "get": {
                "tags": [
                    "Monitors"
                ],
                "summary": "One monitor with 24h/7d/30d uptime and latest results per location",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Monitor id",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Monitor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "patch": {
                "tags": [
                    "Monitors"
                ],
                "summary": "Change a monitor (only the fields sent)",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Monitor id",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Monitor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Monitors"
                ],
                "summary": "Delete a monitor and its history",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Monitor id",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Deleted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/monitors/{id}/pause": {
            "post": {
                "tags": [
                    "Monitors"
                ],
                "summary": "Pause",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Monitor id",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Monitor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/monitors/{id}/resume": {
            "post": {
                "tags": [
                    "Monitors"
                ],
                "summary": "Resume",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Monitor id",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Monitor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/monitors/{id}/checks": {
            "get": {
                "tags": [
                    "Monitors"
                ],
                "summary": "Latest checks",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Monitor id",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "1-500, default 60",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Checks",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/monitors/{id}/incidents": {
            "get": {
                "tags": [
                    "Monitors"
                ],
                "summary": "Incidents of a monitor",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Monitor id",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Incidents",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/incidents": {
            "get": {
                "tags": [
                    "Incidents"
                ],
                "summary": "Incidents of all monitors",
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "ongoing or resolved",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "kind",
                        "in": "query",
                        "required": false,
                        "description": "down or slow",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "1-500",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Incidents",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/status-page": {
            "get": {
                "tags": [
                    "Status page"
                ],
                "summary": "Your status page",
                "responses": {
                    "200": {
                        "description": "Status page",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/status-page/posts": {
            "get": {
                "tags": [
                    "Status page"
                ],
                "summary": "Incident and maintenance posts",
                "responses": {
                    "200": {
                        "description": "Posts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "Status page"
                ],
                "summary": "Post an incident or maintenance notice",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Posted"
                    }
                }
            }
        },
        "/status-page/posts/{id}/updates": {
            "post": {
                "tags": [
                    "Status page"
                ],
                "summary": "Add an update to a post",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Post id",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Added"
                    }
                }
            }
        }
    }
}