Monitors

List your monitors with optional search and filters.

get/monitors

Request

  • Base URL: https://api.context.dev/v1
  • URL: https://api.context.dev/v1/monitors
  • Auth: HTTP bearer

Query parameters

qstring

Free-text search term, matched against the fields named in search_by.

Example:pricing
search_bystring[] nullable

Fields to search with q. Defaults to all fields; page and extract targets can have instructions.

search_type'exact' | 'prefix'

prefix for as-you-type prefix matching (default), exact for full-token matching.

status'active' | 'paused' | 'failed'

Filter monitors by lifecycle status.

target_type'page' | 'sitemap' | 'extract'

Filter by target type.

change_detection_type'exact' | 'semantic'

Filter by change detection type.

tagsstring[] nullable

Comma-separated list of tags to filter by (matches monitors having any of them).

tagstring

Filter to items that have this tag.

Example:pricing
limitinteger

Maximum number of items to return per page (1-100). Defaults to 25.

cursorstring

Opaque pagination cursor from a previous response.

Response

A paginated list of monitors

has_moreboolean required
next_cursorstring nullable required
request_idstring uuid required

Unique ID of this request, also in X-Request-Id. Include it when contacting support.

Example response

{
  "data": [
    {
      "id": "mon_123",
      "name": "Acme pricing monitor",
      "target": {
        "url": "https://acme.com/pricing",
        "instructions": "Report pricing or plan availability changes. Ignore counters, timestamps, testimonials, and navigation.",
        "include_selectors": [
          "#attraction-details"
        ],
        "exclude_selectors": [
          ".carousel",
          "[id^=\"TA_\"]"
        ]
      },
      "schedule": {
        "frequency": 6,
        "unit": "hours"
      },
      "webhook": {
        "url": "https://example.com/webhook",
        "events": [
          "change.detected",
          "run.completed"
        ],
        "retry": {
          "delays_seconds": [
            10,
            60,
            300,
            1800,
            7200,
            21600,
            57600
          ]
        },
        "secret": "whsec_8f3a…"
      },
      "last_error": {
        "code": "fetch_failed",
        "message": "The target URL could not be fetched."
      },
      "webhook_failure": {
        "consecutive_failures": 3,
        "last_message": "Webhook endpoint returned HTTP 429."
      },
      "tags": [
        "pricing",
        "competitor"
      ],
      "baseline": {
        "text": "Acme Pricing\nStarter $9/mo…"
      }
    }
  ],
  "request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91"
}

Changes

    • warning

      added the new NO_PUBLISHED_MARKDOWN enum value to the response property for the response status

    • warning

      added the new NO_PUBLISHED_MARKDOWN enum value to the response property for the response status

    • warning

      added the new NO_PUBLISHED_MARKDOWN enum value to the response property for the response status

    • warning

      added the new NO_PUBLISHED_MARKDOWN enum value to the response property for the response status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status