Osminog

API Reference

Server Information
Base URL
https://www.osminog.app/api/v1
Authentication
API key via X-Api-Key request header
Authentication

All API requests must include your API key in the X-Api-Key header:

curl -H "X-Api-Key: <your-api-key>" https://www.osminog.app/api/v1/{endpoint}?{params}

To obtain an API key:

  1. Go to Account Settings and click "Request API Key".
  2. An administrator will review and approve your request.
  3. Once approved, your key will appear in Account Settings.

Returns the current status and performance summary for a monitoring task.

Request

Headers

Header Type Required Description
X-Api-Key string Yes Your personal API key

Query Parameters

Parameter Type Required Description
task_id string (UUID) Yes UUID of the monitoring task

Example Request

GET /api/v1/task/status?task_id=019cdeae-d393-7d65-8044-c07dd0fe2a17 HTTP/1.1
Host: www.osminog.app
X-Api-Key: your-api-key-here

Response
200 OK
Field Type Description
task_id string Task UUID
website string Domain name of the monitored website
uri string Monitored URI path
http_code integer|null Latest HTTP status code (null if no results yet)
last_check string|null Timestamp of the latest check (ISO 8601, UTC)
response_time_ms float|null Latest response time in milliseconds
min_ms float|null Minimum response time across all checks (ms)
max_ms float|null Maximum response time across all checks (ms)
avg_ms float|null Average response time across all checks (ms)
last_spike object|null Latest threshold spike event (null if none)
last_spike.datetime string Timestamp of the spike (ISO 8601, UTC)
last_spike.response_time_ms float Response time during the spike (ms)
last_spike.baseline_avg_ms float Baseline average at the time of the spike (ms)
last_spike.diff_percent float|null Percentage above baseline (null if baseline is zero)

Example Response

{
    "task_id": "019cdeae-d393-7d65-8044-c07dd0fe2a17",
    "website": "example.com",
    "uri": "/api/health",
    "http_code": 200,
    "last_check": "2026-03-12T18:45:30Z",
    "response_time_ms": 142.35,
    "min_ms": 98.12,
    "max_ms": 1523.67,
    "avg_ms": 187.44,
    "last_spike": {
        "datetime": "2026-03-12T18:30:10Z",
        "response_time_ms": 482.15,
        "baseline_avg_ms": 187.44,
        "diff_percent": 157.2
    }
}

Error Responses
400 Bad Request Missing or invalid task_id parameter
{ "error": "task_id is required." }
401 Unauthorized Missing or invalid API key
{ "error": "Invalid API key." }
404 Not Found Task does not exist or does not belong to you
{ "error": "Task not found." }

Returns all tasks and their status/performance data for a website.

Request

Headers

Header Type Required Description
X-Api-Key string Yes Your personal API key

Query Parameters

Parameter Type Required Description
website_id string (UUID) Yes UUID of the website

Example Request

GET /api/v1/website/tasks?website_id=019cdeae-a1b2-7c3d-9044-abcdef123456 HTTP/1.1
Host: www.osminog.app
X-Api-Key: your-api-key-here

Response
200 OK
Field Type Description
website_id string Website UUID
domain string Domain name of the monitored website
is_verified boolean Whether the website ownership is verified
tasks array Array of tasks with status data
tasks[].task_id string Task UUID
tasks[].uri string Monitored URI path
tasks[].http_method string HTTP method (GET, POST, etc.)
tasks[].frequency_seconds integer Check interval in seconds
tasks[].concurrency integer Number of concurrent requests per tick
tasks[].execution_mode string "background" or "on_demand"
tasks[].is_active boolean Whether the task is currently active
tasks[].http_code integer|null Latest HTTP status code (null if no results yet)
tasks[].last_check string|null Timestamp of the latest check (ISO 8601, UTC)
tasks[].response_time_ms float|null Latest response time in milliseconds
tasks[].min_ms float|null Minimum response time across all checks (ms)
tasks[].max_ms float|null Maximum response time across all checks (ms)
tasks[].avg_ms float|null Average response time across all checks (ms)
tasks[].last_spike object|null Latest threshold spike event (null if none)

Example Response

{
    "website_id": "019cdeae-a1b2-7c3d-9044-abcdef123456",
    "domain": "example.com",
    "is_verified": true,
    "tasks": [
        {
            "task_id": "019cdeae-d393-7d65-8044-c07dd0fe2a17",
            "uri": "/api/health",
            "http_method": "GET",
            "frequency_seconds": 60,
            "concurrency": 1,
            "execution_mode": "background",
            "is_active": true,
            "http_code": 200,
            "last_check": "2026-03-12T18:45:30Z",
            "response_time_ms": 142.35,
            "min_ms": 98.12,
            "max_ms": 1523.67,
            "avg_ms": 187.44,
            "last_spike": null
        },
        {
            "task_id": "019cdeae-e4f5-7a2b-8055-fedcba987654",
            "uri": "/",
            "http_method": "GET",
            "frequency_seconds": 300,
            "concurrency": 2,
            "execution_mode": "background",
            "is_active": true,
            "http_code": 200,
            "last_check": "2026-03-12T18:40:00Z",
            "response_time_ms": 85.20,
            "min_ms": 45.00,
            "max_ms": 920.10,
            "avg_ms": 112.33,
            "last_spike": {
                "datetime": "2026-03-12T17:15:00Z",
                "response_time_ms": 482.15,
                "baseline_avg_ms": 112.33,
                "diff_percent": 329.2
            }
        }
    ]
}

Error Responses
400 Bad Request Missing or invalid website_id parameter
{ "error": "website_id is required." }
401 Unauthorized Missing or invalid API key
{ "error": "Invalid API key." }
404 Not Found Website does not exist or does not belong to you
{ "error": "Website not found." }