---
title: "A monitor run found results it had not seen before"
method: POST
path: "monitor.results"
---

# A monitor run found results it had not seen before

`POST monitor.results` (webhook)

Sent to the monitor's `webhook_url` (when it has one) only when a run finds new results (the first
run sends everything it found, with `first_run: true`). Same signature headers as
the other webhooks, with `X-SerpKite-Event: monitor.results` and
`X-SerpKite-Delivery: <run id>`. Tried up to 3 times per run; results that could
not be delivered stay new for the next run (and are in the run history either way).

## Payload

- MonitorResultsEvent: Body of `monitor.results`
  - `event` 'monitor.results', required
  - `monitor_id` string, uuid, required
  - `run_id` string, uuid, required: Also the X-SerpKite-Delivery header; use it to deduplicate retries
  - `name` string, required
  - `endpoint` 'search' | 'news' | 'webpage', required
  - `q` string, required: The saved query (empty for webpage monitors)
  - `url` string: webpage monitors only
  - `metadata` object, nullable: The monitor's metadata
  - `first_run` boolean, required: The first run since the monitor was created or its search changed
  - `run_at` string, date-time, required
  - `new_results` object[], required: Results not seen in earlier runs (OrganicResult-shaped for search, NewsResult for news, MonitorPageChange for webpage)
  - `credits_used` number, required: This run's price

## Acknowledgement `200`

Any 2xx acknowledges the delivery

---

[API](https://skmtc.dev/serpkite/apis/serpkite-serp-api.md) · [All operations](https://skmtc.dev/serpkite/apis/serpkite-serp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/serpkite/apis/serpkite-serp-api/revisions/f2c6dd05cfc5?raw)
