---
title: "Monitor run completed"
method: POST
path: "monitorRunCompleted"
tags: ["Monitors"]
---

# Monitor run completed

`POST monitorRunCompleted` (webhook)

Sent after each completed run, including unchanged runs. Return a 2xx response to acknowledge delivery.

## Headers

- `User-Agent` string, required
- `X-Context-Event` 'run.completed', required
- `X-Context-Id` string, required
- `X-Context-Delivery-Id` string
- `X-Context-Attempt` integer
- `X-Context-Signature` string

## Payload

- MonitorsRunCompletedWebhookPayload: Payload sent after every completed run when the monitor's webhook subscribes to run.completed. A run with `change_detected: false` is a confirmation that the monitor ran and found no change.
  - `event` 'run.completed', required
  - `id` string, required
  - `created_at` string, date-time, required
  - `data` object, required
    - `run` object, required: Run snapshot at delivery time. Retrieve the run for its final usage details.
      - `id` string, required
      - `monitor_id` string, required
      - `status` 'completed', required
      - `run_type` 'baseline' | 'scheduled', required: A baseline run follows creation or a target or detection change.
      - `target_type` 'page' | 'sitemap' | 'extract', required
      - `change_detection_type` 'exact' | 'semantic', required
      - `started_at` string, date-time, required
      - `completed_at` string, date-time, required
      - `change_detected` boolean, required
      - `change_id` string, nullable, required
      - `baseline_created` boolean, required: True when this run established the monitor's initial baseline; baseline runs perform no change detection.
    - `change` MonitorsChange, required: Detected change, including applicable diffs, URLs, and supporting evidence.
      - `mode` 'web', required: Always `web`. Optional.
      - `id` string, required
      - `monitor_id` string, required
      - `run_id` string, required: The run that detected this change.
      - `target_type` 'page' | 'sitemap' | 'extract', required
      - `change_detection_type` 'exact' | 'semantic', required
      - `title` string, required
      - `summary` string, required
      - `detected_at` string, date-time, required
      - `url` string, uri, required
      - `importance` 'low' | 'medium' | 'high'
      - `confidence` number
      - `diff` string: Text diff between the previous and current page baseline (page targets).
      - `before_text_excerpt` string
      - `after_text_excerpt` string
      - `added_urls` string[]: At most 500 URLs are included; the corresponding count field is always exact.
      - `removed_urls` string[]: At most 500 URLs are included; the corresponding count field is always exact.
      - `added_url_count` integer
      - `removed_url_count` integer
      - `matched_urls` string[]: At most 500 URLs are included; the corresponding count field is always exact.
      - `matched_url_count` integer
      - `evidence` MonitorsEvidence[]
        - `url` string, uri: Optional URL the evidence relates to. Absent for whole-target diffs.
        - `before` string, required: Snapshot of the content before the change.
        - `after` string, required: Snapshot of the content after the change.
      - `tags` string[], required: Labels for filtering monitors, their changes, and their usage.

## Acknowledgement `2XX`

Webhook accepted.

---

[API](https://skmtc.dev/context/apis/brand-api.md) · [All operations](https://skmtc.dev/context/apis/brand-api/llms.txt) · [OpenAPI document](https://skmtc.dev/context/apis/brand-api/revisions/9e2ab7841fb1?raw)
