TheBrief · AsyncAPI Specification
Thebrief Webhooks
Version
View Spec
View on GitHub
CompanyAdvertisingCreativeDesignArtificial IntelligenceMarketingAd ServingSaaSGraphQLCreative AutomationDigital Asset ManagementWebhooksAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-12'
method: searched
source: https://docs.thebrief.ai/public-api/rest-api/webhooks
docs:
- https://docs.thebrief.ai/public-api/rest-api/webhooks
- https://docs.thebrief.ai/public-api/rest-api/webhooks/webhook-action-types
- https://docs.thebrief.ai/public-api/rest-api/exports
summary: >-
The Brief ships a real, managed webhook surface: team-level webhook subscriptions created
through the Public API (or the equivalent GraphQL mutations), bound to a server-side catalogue
of action types the API itself enumerates. No AsyncAPI document is published — this artifact
captures the webhook catalogue as the provider documents it. NOTHING HERE IS SYNTHESISED
INTO AN ASYNCAPI SPEC; an AsyncAPI file would be fabrication.
asyncapi_published: false
asyncapi_probe:
- {url: 'https://api.thebrief.ai/asyncapi.yaml', status: 404}
- {url: 'https://docs.thebrief.ai/asyncapi.yaml', status: 404}
transport: https-post-callback
delivery_model: team-scoped subscription
signature_verification:
documented: false
note: >-
No signing secret, HMAC header or replay-protection mechanism is documented for inbound
webhook deliveries. Consumers cannot cryptographically verify that a callback came from
The Brief — treat the endpoint as unauthenticated and validate payloads out of band.
retry_policy:
documented: false
delivery_guarantees:
documented: false
management_api:
rest:
- {method: GET, path: 'https://api.thebrief.ai/v1/webhooks', operation: List team webhooks}
- {method: POST, path: 'https://api.thebrief.ai/v1/webhooks', operation: Create team webhook, body: [name, url, actions]}
- {method: DELETE, path: 'https://api.thebrief.ai/v1/webhooks', operation: Delete team webhook}
- {method: GET, path: 'https://api.thebrief.ai/v1/webhookActions', operation: List available webhook action types}
graphql:
queries: [teamWebhooks, teamWebhookActions]
mutations: [createTeamWebhook, updateTeamWebhook, deleteTeamWebhook]
source: graphql/thebrief-public.graphql
subscription_object:
fields:
- {name: id, type: number, description: The webhook id.}
- {name: name, type: string, description: The name of the webhook.}
- {name: webhookUrl, type: string, description: The destination URL The Brief POSTs to.}
- {name: createdAt, type: date}
- {name: createdByUser, type: object, fields: [id, name]}
- {name: actions, type: array, description: The action types this webhook is subscribed to, each with actionId, createdAt, createdByUser and the action object (id, name, description, config, createdAt).}
note: >-
A webhook is created with an actions array of numeric action ids (documented example [1, 5]);
the id-to-name mapping is discovered at runtime from GET /v1/webhookActions rather than
published as a static list.
action_types:
discovery: GET https://api.thebrief.ai/v1/webhookActions
catalogue_is_dynamic: true
note: >-
The full action catalogue is only enumerable at runtime against a live account. The two
entries below are the ones The Brief publishes verbatim in its own documented response
example — they are recorded as documented examples, not as the complete catalogue.
documented_examples:
- {id: 1, name: 'comment/create', description: Comment created, config: null}
- {id: 5, name: 'session/finish', description: Session finished, config: null}
naming_convention: '<resource>/<verb> (lower-case, slash-separated)'
export_callbacks:
note: >-
Separate from team webhooks, the export endpoints accept a per-request webhookUrl parameter
that The Brief calls when an asynchronous export finishes. This is a one-shot callback tied
to a single export, not a subscription.
parameter: webhookUrl
applies_to:
- POST https://api.thebrief.ai/v1/export
- POST https://api.thebrief.ai/v1/export-with-changes
terminal_states: [complete, completeWithError, failed]
third_party_consumption:
zapier:
published: true
note: >-
The Brief publishes a Zapier app with both a native trigger and a webhook trigger, so
the event surface is consumable without writing a receiver.
invite: https://zapier.com/developer/public-invite/171524/395880/e4a19ddb7cd42ee4a1865a84fd887187
docs: https://docs.thebrief.ai/zapier-integration
cross_links:
conventions: conventions/thebrief-conventions.yml
authentication: authentication/thebrief-authentication.yml
data_model: data-model/thebrief-data-model.yml