Types & Formats
This page documents the structure of webhook payloads, delivery headers, and the data models used throughout the Webhooks API.
Event Types
Events are organized by domain. Each domain has its own payload structure.
Sync Events
sync.pending
Fired when a sync job is created and queued for processing.
sync.running
Fired when the sync job starts processing.
sync.completed
Fired when the sync job finishes successfully. Includes entity and chunk metrics.
sync.failed
Fired when the sync job encounters an error. Includes an error field with details.
sync.cancelled
Fired when the sync job is manually cancelled.
Sync Payload Schema
Source Connection Events
source_connection.created
Fired when a new source connection record is created. The connection may or may not be authenticated yet (e.g., OAuth flow not completed).
source_connection.auth_completed
Fired when the OAuth flow completes and the connection is now authenticated and ready to use.
source_connection.deleted
Fired when a source connection and its associated data are removed.
Source Connection Payload Schema
Collection Events
collection.created
Fired when a new collection is created.
collection.updated
Fired when collection properties are changed (name, configuration, etc.).
collection.deleted
Fired when a collection and all associated data are removed.
Collection Payload Schema
Delivery Format
When Airweave delivers an event to your webhook endpoint, the HTTP request includes:
Headers
Body
The request body is the raw event payload (JSON).
Expected Response
Your endpoint should return a 2xx status code to acknowledge receipt:
Webhook Subscription
When you create or retrieve a subscription, you’ll see this structure:
Webhook Message
When retrieving messages via the API, each message has this structure:
Delivery Attempt
When you retrieve delivery attempts (via include_attempts=true or the subscription endpoint), each attempt has this structure:
Retry Schedule
Failed deliveries are retried with exponential backoff:
After 5 failed attempts, the message is marked as failed. You can manually recover failed messages using the recover endpoint.