Send a rendered broadcast test
Supply the same changes, contact and fingerprint as a new preview to send the exact rendered content to an authorized current organization member with workspace access. Requires template read and emails write permission. Alternate-member and machine destinations also require members read. A change to template content, envelope fields, parameters or contact values returns E04089 (BroadcastPreviewChanged), a conflict_error. This does not send the campaign audience. A confirmed response replays unchanged for the same key and request within the configured idempotency window, with fresh authorization and member access checks. A replay sends no other test.
Request
- Base URL: https://us1.platform.bird.com
- URL: https://us1.platform.bird.com/v1/email/broadcasts/{broadcast_id}/test
- Auth: one of:
- HTTP bearer
- API key in cookie bird_session
Path parameters
Broadcast identifier.
Headers
Required key for one logical broadcast test send, scoped to the workspace, the authenticated caller and this operation. Reuse the same key and the exact same request when retrying.
- A confirmed 202 response replays unchanged for the same key and request within the configured window, 3 hours by default. Authorization and the destination's member access are checked again on every retry.
- 409 request_in_progress (E01004) or 503 IdempotencyUnavailable (E01033): retry with backoff using the same key. Switching keys can send another test.
- 409 idempotency_key_reuse (E01005): the key was used for a different request or broadcast. Use a new key for a different test send.
- After the window, saved results and unresolved requests can be removed. Reusing the key after removal can send another test, even if the earlier response was not confirmed.
Workspace context for the request. Required for dashboard authentication and master keys. Workspace keys and access tokens already identify their workspace; send that workspace or omit the header. A different one is rejected.
Organization context for the request. Required for dashboard authentication. An API key or access token carries its own organization, so send either that organization or no header at all; a different one is rejected.
Request body
Example request
{
"template": {
"id": "emt_01krdgeqcxet5s7t44vh8rt9mg",
"language": "pt-BR"
},
"from": "Jane Doe <jane@acme.com>",
"reply_to": [
"Jane Doe <jane@acme.com>"
],
"headers": {
"X-Campaign": "spring-launch"
},
"contact_id": "con_01krdgeqcxet5s7t44vh8rt9mg",
"to": "member@example.com",
"preview_fingerprint": "fingerprint_from_matching_preview"
}Response
Test email accepted.
Example response
{
"id": "em_01krdgeqcxet5s7t44vh8rt9mg",
"from": {
"email": "onboarding@messagebird.dev",
"name": "Bird"
},
"to": [
{
"email": "delivered@messagebird.dev"
}
],
"subject": "Hello from Bird",
"category": "marketing",
"status": "accepted",
"broadcast_id": "eb_01krdgeqcxet5s7t44vh8rt9mg",
"accepted_count": 1,
"processed_count": 0,
"delivered_count": 0,
"bounced_count": 0,
"complained_count": 0,
"deferred_count": 0,
"rejected_count": 0,
"open_count": 0,
"click_count": 0,
"track_opens": false,
"track_clicks": false,
"created_at": "2026-07-01T12:00:00Z"
}Changes
No recorded changes to this operation across all 2 revisions of this API.