Skip to main content
The Python SDK returns validated pydantic v2 models with typed, snake_cased attributes. Python 3.10+, built on httpx.

Quickstart

Pagination

List methods return a Paginator you can iterate directly:

Errors

Every failure is a WebhookError subclass, so you can narrow with except:
Each error carries code, status, and request_id when present.

Retries & idempotency

The client retries idempotent requests on transient failures with capped exponential backoff and jitter, honouring Retry-After, and never blind-retries a non-idempotent write. Replays carry an idempotency key (auto-generated if you don’t pass one):

Recovering a lost ingest URL

The ingest URL is a bearer credential, but it is not a one-time secret: the token is sealed at rest, so you can read it back any time. You never have to rotate to recover it — and you shouldn’t, because rotating revokes the live URL and breaks every sender still posting to it.
ingest_url is None only for endpoints created before sealed storage; rotate those once to mint a fresh, re-readable one.

Triggers (webhook → agent)

Wait for an endpoint’s events with an ack-by-cursor loop. wait is a short poll — it returns immediately with whatever is past your cursor, so there is no held connection.
next_cursor is None only when you sent no cursor and there were no events — it means “start from the oldest retained event”, not “caught up”. caught_up is the caught-up signal. Delivery is at-least-once: a crash before you persist the cursor re-reads rather than loses, so dedupe on the event id. Pass include_body=False for summary-only pages (it skips the payload fetch).

Usage, deletes, and dedup config

Version advisories

If the server sees you are on an old SDK, it rides an advisory back on a response you already made — the SDK never polls PyPI on your behalf, so there is no extra request and nothing to break offline. By default it emits one UserWarning. Route it into your own logs instead:

Configuration

Full source, changelog, and issues: github.com/webhook-co/webhook.