---
title: "Send transactional broadcast"
method: POST
path: "/orgs/broadcasts/{broadcast_id}/send"
tags: ["Broadcasts"]
---

# Send transactional broadcast

`POST /orgs/broadcasts/{broadcast_id}/send`

## Request

- Base URL: `https://api.useinvent.com`
- URL: `https://api.useinvent.com/orgs/broadcasts/{broadcast_id}/send`
- Auth: HTTP bearer

Fire a transactional broadcast for a single recipient. Fans out across the broadcast templates: one BroadcastRecipient row is created per template (sent or skipped).

## Path parameters

- `broadcast_id` string, required

## Request body

- TriggerBroadcastSchema: Schema for firing one trigger on a transactional broadcast. Recipient identifier fields are at the root. Fans out across the broadcast templates to a single recipient.
  - `contact_channel_id` string: Tier 1 (most specific): exact ContactChannel id. Skips contact resolution and channel-availability filter since the caller has chosen the channel.
  - `contact_id` string: Tier 2: known Contact id. Channel is inferred per template at send time.
  - `phone` string: Raw phone. When no contact is resolved by contact_channel_id/contact_id, it find-or-creates a contact by phone. When a contact is resolved, it overrides the phone used for this send only (the contact and its channels are not modified).
  - `email` string: Raw email. When no contact is resolved by contact_channel_id/contact_id, it find-or-creates a contact by email. When a contact is resolved, it overrides the email used for this send only (the contact and its channels are not modified).
  - `name` string: Optional display name override for this send only. Takes precedence over the resolved channel and contact name. Does not resolve or create a contact on its own and does not modify the contact.
  - `subject` string: Replaces the configured subject on every email template of this broadcast, for this send only. Supports {{variable}} placeholders.
  - `body` string: Replaces the configured body (HTML) on every email template of this broadcast, for this send only. Supports {{variable}} placeholders.
  - `message` string: Replaces the configured message text on every SMS template of this broadcast, for this send only. Supports {{variable}} placeholders.
  - `reply_to` string: Replaces the configured reply-to address on every email template of this broadcast, for this send only. Supports {{variable}} placeholders.
  - `variables` object: Per-recipient values by name: a template slot (a WhatsApp variable such as body_1 or body_customer_name, an email subject, an SMS message) or a {{name}} written in a template. A slot you omit goes out as configured in the channel editor.
  - `template_ids` string[]: Optional subset of broadcast templates to fire. Omit to fire all templates on the broadcast.
  - `background` boolean: When false (default), the call awaits the send and returns external_message_id per template. When true, the call enqueues and returns immediately.

## Response `200`

- TriggerBroadcastResponseSchema: Result of triggering a transactional broadcast. One BroadcastRecipient row per template fired.
  - `recipients` BroadcastRecipientSchema[], required
    - `id` string, required
    - `broadcast_id` string, required
    - `broadcast_name` string, required
    - `template_id` string, nullable, required
    - `channel_type` 'internal' | 'org' | 'agent' | 'custom' | 'whatsapp_bot' | 'messenger_bot' | 'instagram_dm' | 'tiktok_dm' | 'telegram_bot' | 'slack_bot' | 'teams_bot' | 'gmail' | 'outlook' | 'twilio' | 'telnyx' | 'email' | 'smpp', required: The channel type
    - `contact` ContactSchema: Schema for the contact
      - `id` string, required
      - `name` string, nullable, required
      - `blocked` boolean, required
      - `blocked_at` string, date-time
      - `unsubscribed` boolean, required
      - `unsubscribed_at` string, date-time
      - `unsubscribe_reason` string
      - `unsubscribe_feedback` string
      - `ai_replies` boolean, required
      - `ai_replies_at` string, date-time
      - `is_admin` boolean, required
      - `channels` ContactChannelSchema[], required
        - `id` string, required
        - `type` 'internal' | 'org' | 'agent' | 'custom' | 'whatsapp_bot' | 'messenger_bot' | 'instagram_dm' | 'tiktok_dm' | 'telegram_bot' | 'slack_bot' | 'teams_bot' | 'gmail' | 'outlook' | 'twilio' | 'telnyx' | 'email' | 'smpp', required: The channel type
        - `user_id` string, required: The unique identifier for the contact channel, e.g Phone Number or User ID
        - `avatar` string, nullable, required: The avatar for the contact channel, e.g X Avatar URL
        - `name` string, nullable, required: The name for the contact channel, e.g Full Name
        - `username` string, nullable, required: The username for the contact channel, e.g Username
        - `email` string, nullable, required: The email for the contact channel, e.g Email
        - `phone` string, nullable, required: The phone number for the contact channel, e.g Phone Number
        - `country` string, nullable, required: The country code associated with the contact channel, e.g US for United States
        - `agent` string, nullable, required: The user agent associated with the contact channel
        - `ip` string, nullable, required: The IP address associated with the contact channel
        - `language` string, nullable, required: The language code associated with the contact channel, e.g en for English
        - `link` string: A link to the contact channel, e.g a link to the social media profile
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
      - `segments` SegmentLimitedSchema[], required
        - `id` string, required
        - `name` string, required
        - `color` 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'neutral', required: Accent color, by name
        - `contacts_count` number, required
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
      - `fields` object, required: Map of contact field key → value.
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
    - `user_id` string, nullable, required
    - `name` string, nullable, required
    - `username` string, nullable, required
    - `phone` string, nullable, required
    - `email` string, nullable, required
    - `status` 'QUEUED' | 'SENDING' | 'PROCESSED' | 'SENT' | 'FAILED' | 'SKIPPED', required: The status of the broadcast recipient
    - `source` 'API' | 'MANUAL' | 'INBOX' | 'IMPORT' | 'null', nullable, required: How the recipient was triggered (transactional only)
    - `payload` object, nullable, required
    - `retries` number, required
    - `is_skipped` boolean, nullable, required
    - `is_skipped_at` string, date-time, nullable, required
    - `is_failed` boolean, nullable, required
    - `is_failed_at` string, date-time, nullable, required
    - `is_bounced` boolean, nullable, required
    - `is_bounced_at` string, date-time, nullable, required
    - `is_sent` boolean, nullable, required
    - `is_sent_at` string, date-time, nullable, required
    - `is_delivered` boolean, nullable, required
    - `is_delivered_at` string, date-time, nullable, required
    - `is_complained` boolean, nullable, required
    - `is_complained_at` string, date-time, nullable, required
    - `is_unsubscribed` boolean, nullable, required
    - `is_unsubscribed_at` string, date-time, nullable, required
    - `is_opened` boolean, nullable, required
    - `is_opened_at` string, date-time, nullable, required
    - `is_played` boolean, nullable, required
    - `is_played_at` string, date-time, nullable, required
    - `error_message` string, nullable, required
    - `external_message_id` string, nullable, required
    - `interactions` BroadcastRecipientInteractionItemSchema[], required
      - `type` 'CLICK', required: The type of the broadcast recipient interaction
      - `label` string, nullable, required
      - `value` string, required
      - `created_at` string, date-time, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required

---

[API](https://skmtc.dev/useinvent/apis/invent-api.md) · [All operations](https://skmtc.dev/useinvent/apis/invent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/useinvent/apis/invent-api/revisions/98824f3fde82?raw)
