Skip to main content
POST
Register a webhook endpoint

Authorizations

Authorization
string
header
required

Mint an API key in the dashboard. See https://letmepost.dev/docs/authentication/.

Headers

Idempotency-Key
string

Recommended on every write. Replays within 24 hours return the original response; conflicting bodies surface as 409 idempotency_conflict. See Idempotency.

Required string length: 1 - 128
Example:

"post-launch-2026-05-15-001"

Body

application/json
url
string<uri>
required
Example:

"https://hooks.example.com/letmepost"

events
enum<string>[]

Empty array subscribes the endpoint to every event type.

Available options:
post.queued,
post.validated,
post.published,
post.rejected,
post.failed,
post.canceled,
post.rescheduled,
token.expiring,
token.revoked,
version.deprecated,
subscription.activated,
subscription.cancelled,
subscription.tier_changed,
quota.warning,
quota.exceeded,
billing.payment_failed,
billing.delinquent,
billing.recovered
description
string
Maximum string length: 500

Response

Endpoint created. signingSecret shown once.

id
string
required
url
string<uri>
required
events
enum<string>[]
required
Available options:
post.queued,
post.validated,
post.published,
post.rejected,
post.failed,
post.canceled,
post.rescheduled,
token.expiring,
token.revoked,
version.deprecated,
subscription.activated,
subscription.cancelled,
subscription.tier_changed,
quota.warning,
quota.exceeded,
billing.payment_failed,
billing.delinquent,
billing.recovered
active
boolean
required
createdAt
string<date-time>
required
updatedAt
string<date-time>
required
signingSecret
string
required

HMAC-SHA256 signing secret — returned once at creation. Used to verify every delivery's X-Letmepost-Signature header.

Example:

"whsec_…"

description
string | null
lastDeliveryAt
string<date-time> | null
lastFailureReason
string | null