---
title: "Receive monitoring notification"
method: POST
path: "monitoringNotification"
tags: ["Webhooks"]
---

# Receive monitoring notification

`POST monitoringNotification` (webhook)

Receiver endpoint, not a Quivr API route. Verify Standard Webhooks v1 HMAC-SHA256 over webhook-id + dot + webhook-timestamp + dot + raw body before parsing. Timestamp refreshed per attempt; body event_id equals webhook-id. See monitoring contract for retry defaults.

## Headers

- `webhook-id` string, required
- `webhook-timestamp` string, required
- `webhook-signature` string, required

## Payload

- WebhookEvent: Immutable reference-only notification. Retries preserve event_id and the exact stored body bytes; signing timestamp changes per attempt. No document content, excerpt, explanation, cursor or secret is embedded.
  - `event_id` string, required
  - `type` 'match.created' | 'match.corrected' | 'match.no_longer_matches' | 'match.withdrawn', required
  - `schema_version` '1', required
  - `occurred_at` string, date-time, required
  - `references` MonitoringReferences, required: owner is the Subscription Owner, so a client routes the notice to its user; absent for a global Subscription and in notices committed before owners existed. match_id is the new Match for created/corrected, prior positive Match for no_longer_matches/withdrawn. record_version_id is the causal correction version for corrected/no_longer_matches, otherwise the matched version. delivery_id is present only when a destination created a Delivery. References alone confer no access.
    - `match_id` string, required
    - `record_id` string, required
    - `record_version_id` string, required
    - `subscription_id` string, required
    - `subscription_version_id` string, required
    - `delivery_id` string
    - `previous_match_id` string
    - `owner` string: Subscription Owner, an opaque end-user reference defined by the client application (for example user-123). Quivr stores, filters and echoes it without interpreting it. At most 128 characters without control characters; none is reserved for the listing filter. A refused owner is 422 invalid_owner, in a creation body as in the listing filter.

## Acknowledgement `2XX`

Receiver durably accepted/deduplicated this event.

## Other responses

- `default`: Transport retry policy applies; do not create another Match.

---

[API](https://skmtc.dev/thevibecompany/apis/quivr-http-api.md) - [All operations](https://skmtc.dev/thevibecompany/apis/quivr-http-api/llms.txt) - [OpenAPI document](https://skmtc.dev/thevibecompany/apis/quivr-http-api/revisions/4f4e30ba8f4e?raw)
