Docs/Developer

API Reference

Use the SignalDocks REST API to read monitoring data and manage resources programmatically.

2 min read

Authentication

All API requests require a Bearer token. Create a key at Dashboard → Settings → API Keys.

Authorization: Bearer sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Keys are shown only once on creation — store them securely. If a key is lost, delete it and create a new one.


Base URL

https://signaldocks.com/api/v1

Monitors

List monitors

GET /api/v1/monitors

Returns all non-deleted monitors for the authenticated user.

Response:

{
  "data": [
    {
      "id": "uuid",
      "name": "My API",
      "url": "https://api.example.com/health",
      "monitor_type": "site",
      "status": "up",
      "is_active": true,
      "interval_minutes": 1,
      "last_checked_at": "2025-06-12T10:00:00Z"
    }
  ]
}

Get monitor

GET /api/v1/monitors/{id}

Create monitor

POST /api/v1/monitors

Body:

{
  "name": "My API",
  "url": "https://api.example.com/health",
  "monitor_type": "site",
  "method": "GET",
  "expected_status": 200,
  "interval_minutes": 5
}

Update monitor

PATCH /api/v1/monitors/{id}

Accepts any subset of the fields above. Returns the updated monitor.

Delete monitor

DELETE /api/v1/monitors/{id}

Soft-deletes the monitor. Returns 204 No Content.


Check results

List checks

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

Returns the last 100 check results for a monitor, newest first.

Response:

{
  "data": [
    {
      "id": "uuid",
      "monitor_id": "uuid",
      "is_up": true,
      "status_code": 200,
      "response_time_ms": 142,
      "checked_at": "2025-06-12T10:00:00Z",
      "error_message": null
    }
  ]
}

Incidents

List incidents

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

Returns all incidents for a monitor, newest first.


Errors

All errors return a JSON body with an error field:

{ "error": "Unauthorized" }
Status Meaning
400 Invalid request body or parameters
401 Missing or invalid API key
403 API key doesn't have access to this resource
404 Resource not found
429 Rate limit exceeded
500 Internal server error