Commune · AsyncAPI Specification

Usecommune Webhooks

Version

View Spec View on GitHub NewslettersEmailCommunityPublishingCreator EconomySubscribersWebhooksMCPAnalyticsContentAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-10-07'
method: derived
generator: derive-webhooks.py
source:
- openapi/usecommune-openapi.yml
description: 'Event surface derived from the provider''s own OpenAPI: webhooks. No AsyncAPI document is published
  by the provider; this catalog lists the events the contract names.'
management_operations:
- addTagSubscribers
- listNewsletterSubscribers
- getSubscriber
- addSubscriberTag
- removeSubscriberTag
- listSubscriptions
events:
- event: article.liked
  description: Article like added or removed
  declared_in: webhooks
- event: article.published
  description: Article published
  declared_in: webhooks
- event: article.read
  description: Article read
  declared_in: webhooks
- event: article.scheduled
  description: Article scheduled
  declared_in: webhooks
- event: billing.subscription.updated
  description: Billing subscription state changed
  declared_in: webhooks
- event: delivery.bounced
  description: Delivery bounced
  declared_in: webhooks
- event: delivery.clicked
  description: Delivery link clicked
  declared_in: webhooks
- event: delivery.complained
  description: Delivery marked as spam
  declared_in: webhooks
- event: delivery.delivered
  description: Delivery accepted by the recipient server
  declared_in: webhooks
- event: delivery.opened
  description: Delivery opened
  declared_in: webhooks
- event: domain.verified
  description: Custom website domain verified
  declared_in: webhooks
- event: highlight.created
  description: Highlight created
  declared_in: webhooks
- event: import.completed
  description: Import finished
  declared_in: webhooks
- event: message.created
  description: Message created
  declared_in: webhooks
- event: send.completed
  description: Send completed
  declared_in: webhooks
- event: send.failed
  description: Send failed
  declared_in: webhooks
- event: sender.verified
  description: Sender verified
  declared_in: webhooks
- event: subscriber.created
  description: Subscriber created
  declared_in: webhooks
- event: subscriber.status_changed
  description: Subscriber insight status changed
  declared_in: webhooks
- event: subscriber.tagged
  description: Subscriber tag added or removed
  declared_in: webhooks
- event: subscriber.unsubscribed
  description: Subscriber unsubscribed
  declared_in: webhooks
- event: thread.created
  description: Thread created
  declared_in: webhooks
- event: thread.published
  description: Thread published to the feed
  declared_in: webhooks
delivery:
  source: https://api-reference.usecommune.dev/group/webhook-webhooks; https://usecommune.dev/llms-full.txt (webhooks
    guide); OpenAPI components.parameters WebhookSignature/WebhookTimestamp
  transport: one HTTPS POST per event to a destination registered in the delivery portal (HTTPS endpoint, or a queue,
    stream or object store)
  registration: in the delivery portal only; POST /newsletters/{newsletter}/portal-session (createPortalSession)
    mints a one-use link; no CRUD endpoint for destinations
  envelope: 'shared envelope: id, type, occurred_at, actor, idempotency_key, data; the same id/type arrive as Commune-Event-Id
    and Commune-Event-Type headers'
  headers:
  - Commune-Event-Type
  - Commune-Event-Id
  - Commune-Signature
  - Commune-Timestamp
  - Commune-Delivery-Attempt
  - Commune-Version
  signature:
    header: Commune-Signature
    algorithm: HMAC-SHA256
    key: the endpoint signing secret exactly as issued, whsec_ prefix included
    payload: Commune-Timestamp converted to Unix seconds, a literal ".", then the raw request body bytes
    encoding: lowercase hex as v0=<digest>, or two digests comma separated while a secret rotation is in flight
    timestamp_header: Commune-Timestamp (RFC 3339, UTC; covered by the signature; enforce a tolerance window of
      a few minutes)
  semantics: at least once and unordered; dedupe on id; occurred_at is the ordering field
  retries: 'a non-2xx response or a timeout is retried with backoff: eleven attempts over about eight and a half
    hours; a wrong signature should answer 401 and is retried like any non-2xx'
  replay: 'POST /delivery-attempts/{attempt}/replay (replayDeliveryAttempt) re-delivers an event as a new attempt
    marked manual: true'
  echo_rule: a write through the API publishes an event carrying the caller as actor and its Idempotency-Key as
    idempotency_key; a consumer that writes must skip events whose idempotency_key it issued
  attempt_log: GET /newsletters/{newsletter}/delivery-attempts filterable by event_id; GET /delivery-attempts/{attempt}

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/usecommune-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.