Webhook events
The 13 events, all emitted today: when they fire, what the data field carries and an example of each.
BannerMotion notifies your server with a signed POST request every time something important happens: a concept is ready, a review is approved, an export is finished. All 13 events are emitted today: subscribe to the ones you want.
The envelope of every event
The body is always JSON with id (the event's), event, createdAt and data. The headers and the signature are on the Webhooks page.
{
"id": "evt_p0q8w2e6r4t1",
"event": "banner.generated",
"createdAt": "2026-01-01T12:00:00.000Z",
"data": {
"jobId": "job_x4k2m9q1a7bz",
"campaignId": "cmp_8f2a1c3d4e5f",
"creativeId": "crt_3a9c0d1e2f4b",
"versionNo": 1,
"source": "api"
}
}Generation
EventWhenFields in data
banner.generatedA concept finished generating, with all its sizes and locales. Generations made through the API and in the app both emit it.
jobId, campaignId, creativeId, versionNo?, sourcebanner.updatedA correction or the addition of sizes (made through the API) finished and saved a new version.
change is edit or sizes.jobId, creativeId, change, versionNo, sourcegeneration.failedA generation, a correction or an addition of sizes failed. The credits are returned.
jobId, campaignId?, creativeId?, change?, errortranslation.completedThe translation of a banner finished after adding a locale to a campaign through the API. One event arrives per banner.
jobId, campaignId, creativeId, locale, translated, pending, sourceReview and approval
EventWhenFields in data
review.requestedSomeone sent a campaign for review.
pieces is how many pieces went into review.campaignId, pieces, toRolesreview.commentedSomeone commented on a piece in a review.
campaignId, pieceId, commentIdreview.approvedPieces were approved.
by is member (someone on the team) or link (the client, from their link).campaignId, pieceIds, by, authorreview.changes_requestedChanges were requested on pieces.
by is member or link.campaignId, pieceIds, by, authorExport
EventWhenFields in data
export.readyAn export is ready to download.
status is ready or warnings; artifactSha256 is the .zip's sha-256.exportId, creativeId, status, bytes, artifactSha256export.failedAn export failed and no piece could be built.
exportId, creativeId, messageTeam and usage
EventWhenFields in data
member.invitedA person was invited to the workspace.
email, rolemember.joinedA person joined the workspace by accepting an invitation (
via: invite). The value via: sso is reserved for single sign-on, which is not available yet.userId, email, role, viausage.threshold_reachedThe credit balance fell below 20% of the plan's allowance. It is announced only once a month per workspace.
balance, planCredits, percentUsedNota. Fields marked with
? do not always arrive: banner.generated carries no versionNo when the concept was generated from the app, and generation.failed carries campaignId when creating and creativeId and change when correcting or adding sizes.The test event
webhook.test is the one Send test event sends. Test event sent by "Send test event" in the app. It does not count toward the automatic pause. Its data is { "message", "workspace" }.
WebhooksReceive signed notices on your server: how to create the endpoint, verify the signature and handle retries.Job statusCheck a generation job or follow it live with SSE events.
Esta página foi útil?