PaperpinPaperpin Docs
REST API

Monitors

List, inspect, delete, manually run, pause, and resume existing Paperpin web change monitors through the REST API.

The Developer API intentionally does not create or configure monitors. Use PaperPin to create and configure monitoring; use these endpoints to access existing monitors.

List monitors

GET /monitors

{
  "data": [
    {
      "id": "99b61a96-40d9-44a6-9fd5-e56e5d29e49f",
      "name": "Pricing page",
      "url": "https://example.com/pricing",
      "group_id": "0e838345-648b-46f5-8586-6e8b2f7bbf76",
      "status": "active",
      "interval_minutes": 60,
      "detection_mode": "visual",
      "sensitivity": "medium",
      "last_successful_check_at": "2026-07-16T08:15:00.000Z",
      "last_detected_change_at": null,
      "created_at": "2026-07-15T08:00:00.000Z",
      "updated_at": "2026-07-16T08:15:00.000Z"
    }
  ]
}

Get a monitor

GET /monitors/:monitorId

Monitor responses are returned in data and expose stable fields including id, name, url, group_id, status, interval_minutes, detection_mode, sensitivity, last_successful_check_at, and last_detected_change_at.

{
  "data": {
    "id": "99b61a96-40d9-44a6-9fd5-e56e5d29e49f",
    "name": "Pricing page",
    "url": "https://example.com/pricing",
    "group_id": "0e838345-648b-46f5-8586-6e8b2f7bbf76",
    "status": "active",
    "interval_minutes": 60,
    "detection_mode": "visual",
    "sensitivity": "medium",
    "last_successful_check_at": "2026-07-16T08:15:00.000Z",
    "last_detected_change_at": null,
    "created_at": "2026-07-15T08:00:00.000Z",
    "updated_at": "2026-07-16T08:15:00.000Z"
  }
}

Delete a monitor

DELETE /monitors/:monitorId

Returns 204 No Content when the tenant-owned monitor is removed.

The successful response has no JSON body.

Queue a manual run

POST /monitors/:monitorId/run

{
  "data": {
    "state": "queued"
  }
}

The endpoint returns 202 Accepted after a job is queued. It never waits for detection, rendering, or change analysis to finish. If the monitor does not have a valid watch zone, it returns 400; if the tenant has reached its run limit, it returns 402.

state can be queued, running, or idle when a queue-state race is resolved.

PaperPin does not expose a group-run or batch-run endpoint. Queue each supported monitor individually by its ID.

Pause a monitor

POST /monitors/:monitorId/pause

Returns the updated monitor in data. Pausing removes the scheduled monitor job.

{
  "data": {
    "id": "99b61a96-40d9-44a6-9fd5-e56e5d29e49f",
    "name": "Pricing page",
    "url": "https://example.com/pricing",
    "group_id": "0e838345-648b-46f5-8586-6e8b2f7bbf76",
    "status": "paused",
    "interval_minutes": 60,
    "detection_mode": "visual",
    "sensitivity": "medium",
    "last_successful_check_at": "2026-07-16T08:15:00.000Z",
    "last_detected_change_at": null,
    "created_at": "2026-07-15T08:00:00.000Z",
    "updated_at": "2026-07-16T09:00:00.000Z"
  }
}

Resume a monitor

POST /monitors/:monitorId/resume

Returns the updated monitor in data. Resuming queues its next scheduled run using the monitor's configured interval.

{
  "data": {
    "id": "99b61a96-40d9-44a6-9fd5-e56e5d29e49f",
    "name": "Pricing page",
    "url": "https://example.com/pricing",
    "group_id": "0e838345-648b-46f5-8586-6e8b2f7bbf76",
    "status": "active",
    "interval_minutes": 60,
    "detection_mode": "visual",
    "sensitivity": "medium",
    "last_successful_check_at": "2026-07-16T08:15:00.000Z",
    "last_detected_change_at": null,
    "created_at": "2026-07-15T08:00:00.000Z",
    "updated_at": "2026-07-16T09:05:00.000Z"
  }
}

All monitor IDs are UUIDs and must belong to the authenticated tenant.

On this page