> ## Documentation Index
> Fetch the complete documentation index at: https://docs.watchdoc.sphinxhq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Get notified when a document check finishes.

Pass `webhook_url` on submit. When the check reaches a terminal status, we `POST` once
(with retries on transport / 5xx errors):

```json theme={null}
{
  "type": "document_check.completed",
  "data": { /* full document_check object */ }
}
```

`type` is `document_check.{status}`: either `completed` or `failed`.

## Guarantees

* Delivery is **at-least-once**. Handlers must be idempotent on `data.id`.
* We stop retrying on `4xx` (your endpoint rejected the payload).
* Already-delivered checks are not re-posted on Celery retry.

## Local testing

Use a public HTTPS tunnel (ngrok, Cloudflare Tunnel) pointed at your local receiver. Private
and loopback URLs are rejected on submit (SSRF protection).
