---
title: "FREE to register — HMAC webhook on series.changed and/or source.changed (retention bind)"
method: POST
path: "/alerts"
tags: ["Alerts"]
---

# FREE to register — HMAC webhook on series.changed and/or source.changed (retention bind)

`POST /alerts`

## Request

- Base URL: `https://mearef.dev`
- URL: `https://mearef.dev/alerts`
- Auth: one of:
  - none
  - API key in header `PAYMENT-SIGNATURE`

Free to register. Webhook instead of caching: series.changed when a served value moves, source.changed when an official source's bytes change. HMAC secret shown once. First 3 deliveries free, then $0.05 each from a prepaid api_key. Or poll GET /v1/changes.

## Request body

- object
  - `url` string, uri, required: Webhook endpoint to receive events
  - `series` string[]: Value watches. Patterns like "ng/policy-rate", "ke/*", or "*"
  - `sources` string[]: Document watches. Exact official-source URLs from the provenance ledger (see each series' source.url). Unknown URLs are refused free with error source_not_fingerprinted.
  - `api_key` string: Optional prepaid key to fund deliveries after the free trial

## Response `201`

Subscription created; response includes the HMAC secret (shown once)

## Other responses

- `400`: Invalid body
- `402`: Only when a PAYMENT-SIGNATURE / X-PAYMENT header is sent and is not a valid x402 payload. Registration is free: send no payment header and it answers 201.
- `422`: Refused, with the reason. Validation refusals happen BEFORE payment and are never charged.

---

[API](https://skmtc.dev/mearef/apis/mearef-middle-eastern-government-reference-data.md) · [All operations](https://skmtc.dev/mearef/apis/mearef-middle-eastern-government-reference-data/llms.txt) · [OpenAPI document](https://skmtc.dev/mearef/apis/mearef-middle-eastern-government-reference-data/revisions/7b64e3502210?raw)
