# Broadcasts

Broadcasts are one-time marketing sends to a broad audience or a saved segment. Use the API to review broadcast history, create campaigns, and schedule approved sends with explicit audience rules.


## Available Endpoints


## The Broadcast Model


  
    The broadcast model describes the email itself, the tags and segments it was sent to, and its send rate and open rate.
  
  
    ### Properties

    
      - **name** (`string`): 
        The name of the broadcast campaign.
      
      - **subject** (`string`): 
        The subject of the email.
      
      - **content** (`string`): 
        The content of the email.
      
      - **type** (`string`): 
        The type of email. `plain` for Bento's CSS or `raw` to use your own.
      
      - **from** (`object`): 
        A `key`/`value` object for the sender. Must be an author in your account.
      
      - **inclusive_tags** (`string`): 
        A comma separated list of tags to send to.
      
      - **exclusive_tags** (`string`): 
        A comma separated list of tags you do not want the email to go to.
      
      - **segment_id** (`string`): 
        The segment ID for the campaign.
      
      - **batch_size_per_hour** (`integer`): 
        The number of emails to send per hour to ensure the highest delivery.
      
    
  


---

## Get Broadcasts {{ tag: 'GET', label: '/v1/fetch/broadcasts' }}


  
    Returns a list of broadcasts in your account.

    
> The app does not support exporting broadcast history directly. Use this endpoint to get a copy of all your broadcasts instead.


    
      - **site_uuid** (`string`): 
        Your site UUID.
      
      - **page** (`integer`): 
        Pagination number. If you have many broadcasts, you can paginate through them by adding the page parameter.
        For example, to get the second page of broadcasts add ?page=2 to the end of the url. Be
        sure to continue to add the site_uuid parameter to the end of the url.

        

      
      - **status** (`string`): 
        Optional status filter. Supported values are `sent`, `draft`, `sending`, `scheduled`, `paused`, and `canceled`.

        If omitted, Bento defaults to `sent`. `cancelled` is also accepted as an alias for `canceled`.
        Unsupported values also fall back to `sent`.
      
    

  
  
    
  


  
    ### Response

    Returns a collection of broadcasts and their details.

    
> The example response below shows a draft broadcast. Draft broadcasts only return `template.template_id`. Other
>       broadcast statuses return the full template payload, including `subject`, `to`, and `html`.


    
      - **data** (`array`): 
        Broadcast records.
      
      - **data[].id** (`string`): 
        Broadcast identifier.
      
      - **data[].name** (`string`): 
        Broadcast campaign name.
      
      - **data[].status** (`string`): 
        Current status, such as `draft`, `scheduled`, `sending`, or `sent`.
      
      - **data[].template** (`object`): 
        Template metadata or full template payload depending on broadcast status.
      
    

  
  
    
  


---

## Create Broadcasts {{ tag: 'POST', label: '/v1/batch/broadcasts' }}


  
    Create new broadcasts to be sent.

    ### Required Attributes

    
> Requires a `broadcasts` array containing the broadcast object properties.


    
      - **name** (`string`): 
        Name of the broadcast such as a campaign name.
      
      - **subject** (`string`): 
        Subject line of the broadcast email.
      
      - **content** (`string`): 
        Broadcast body content. Supports Liquid tags.
      
      - **type** (`string`): 
        The type of email. `plain` for Bento's CSS or `raw` to use your own.
      
      - **from** (`object`): 
        A `key`/`value` object for the sender. Must be an author in your account.
      
      - **inclusive_tags** (`string`): 
        A comma separated list of tags to send to.
      
      - **exclusive_tags** (`string`): 
        A comma separated list of tags you do not want the email to go to.
      
      - **segment_id** (`string`): 
        The segment ID for the campaign.
      
      - **batch_size_per_hour** (`integer`): 
        The number of emails to send per hour to ensure the highest delivery.
      
      - **inbox_snippet** (`string`): 
        Preview text shown after the subject line in supporting inboxes. You can also send this value as
        `preview_text`, `preview`, `preheader`, `preheader_text`, or `preview_snippet`.
      
      - **send_at** (`datetime`): 
        The date and time to send the broadcast at.

        
> **Recommended**
> Recommended format: `2024-04-23T18:30:00Z`


        
> ⚠️ **Warning**
> **Required** when `approved` is `true`


      
      - **approved** (`boolean`): 

        Whether the broadcast has been approved by Bento and will be sent at the scheduled time.

        
> 🚨 **Important**
> We **strongly** recommend you only add this key after you've done a few test requests and have sent those manually.


      
    

  
  
    
  


  
    ### Response

    Returns the number of broadcasts created, the created broadcast records, and any item-level failures.

    Use `broadcasts[].dashboard_url` to send someone straight to the draft in Bento.

    
      - **results** (`integer`): 
        Number of broadcasts created.
      
      - **broadcasts** (`array`): 
        Broadcasts created by the request.
      
      - **broadcasts[].id** (`integer`): 
        Numeric broadcast ID.
      
      - **broadcasts[].template_id** (`integer`): 
        Numeric template ID for the broadcast content.
      
      - **broadcasts[].name** (`string`): 
        Broadcast name.
      
      - **broadcasts[].dashboard_url** (`string`): 
        Bento dashboard URL for editing the created broadcast.
      
      - **failed** (`integer`): 
        Number of broadcasts that failed validation or processing.
      
      - **failures** (`array`): 
        Item-level failure details. Each failure includes the request `index`, broadcast `name`, and `error`.
      
    

  
  
    
  


  
    ### Content format examples

    Use `type` to decide the format of `content`.

    #### `type: raw` example: Product launch announcement

    Use a complete email HTML document with inline styles. This gives you full control over layout and rendering.

```html
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>New Feature Announcement</title>
  </head>
  <body style="margin:0;padding:0;background-color:#f3f4f6;">
    <table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color:#f3f4f6;padding:24px 0;">
      <tr>
        <td align="center">
          <table role="presentation" width="620" cellspacing="0" cellpadding="0" border="0" style="width:620px;max-width:620px;background-color:#ffffff;border:1px solid #e5e7eb;border-radius:10px;">
            <tr>
              <td style="padding:14px 28px;background-color:#111827;border-radius:10px 10px 0 0;font-family:Arial,sans-serif;">
                <p style="margin:0;color:#e5e7eb;font-size:12px;letter-spacing:0.02em;text-transform:uppercase;">Bento Product Update</p>
              </td>
            </tr>
            <tr>
              <td style="padding:30px 28px 16px 28px;font-family:Arial,sans-serif;color:#111827;">
                <h1 style="margin:0 0 12px 0;font-size:26px;line-height:1.25;">Three new tools to improve campaign performance</h1>
                <p style="margin:0 0 16px 0;font-size:16px;line-height:1.55;color:#374151;">
                  Hi {{ visitor.first_name | default: "there" }}, this week we shipped improvements to reporting, segmentation, and API performance.
                </p>
                <p style="margin:0 0 22px 0;font-size:16px;line-height:1.55;color:#374151;">
                  Here are the highlights and how to use each update in your next send.
                </p>
                <a href="https://bentonow.com/changelog" style="display:inline-block;padding:12px 18px;background-color:#111827;color:#ffffff;text-decoration:none;border-radius:6px;font-size:14px;font-weight:600;">Read the full changelog</a>
              </td>
            </tr>
            <tr>
              <td style="padding:0 28px 24px 28px;font-family:Arial,sans-serif;">
                <table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:separate;border-spacing:0 12px;">
                  <tr>
                    <td style="padding:14px;border:1px solid #e5e7eb;border-radius:8px;">
                      <p style="margin:0 0 6px 0;font-size:14px;font-weight:700;color:#111827;">Faster segment loading</p>
                      <p style="margin:0;font-size:14px;line-height:1.5;color:#4b5563;">Build and preview large audience segments in less time before each campaign.</p>
                    </td>
                  </tr>
                  <tr>
                    <td style="padding:14px;border:1px solid #e5e7eb;border-radius:8px;">
                      <p style="margin:0 0 6px 0;font-size:14px;font-weight:700;color:#111827;">Improved campaign reporting</p>
                      <p style="margin:0;font-size:14px;line-height:1.5;color:#4b5563;">Compare opens, clicks, and conversions in one view to find winning messages faster.</p>
                    </td>
                  </tr>
                  <tr>
                    <td style="padding:14px;border:1px solid #e5e7eb;border-radius:8px;">
                      <p style="margin:0 0 6px 0;font-size:14px;font-weight:700;color:#111827;">Webhook retry logs</p>
                      <p style="margin:0;font-size:14px;line-height:1.5;color:#4b5563;">Debug failed deliveries with detailed retry events and response payloads.</p>
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
            <tr>
              <td style="padding:0 28px 28px 28px;font-family:Arial,sans-serif;color:#6b7280;font-size:12px;line-height:1.6;">
                You are receiving this email because you subscribed to product updates from Bento.
                

                Manage your preferences at https://app.bentonow.com/preferences.
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
  </body>
</html>
```

    #### `type: plain` example: Weekly newsletter

    Use simple markup for standard newsletters. Keep it lightweight with paragraphs, lists, and CTA links styled like buttons.

```html
<p>Hi {{ visitor.first_name | default: "there" }},</p>

<p>Thanks for being part of Bento. Here is your weekly update from the product team.</p>

<h2>What shipped this week</h2>

<ul>
  <li>Faster segment loading</li>
  <li>Improved campaign reporting</li>
  <li>New webhook retry logs</li>
</ul>


<h3>One quick win to try</h3>
<p>
  Create a segment for users who clicked any email in the last 14 days, then send your next feature
  announcement only to that group for higher engagement.
</p>

<p>
  <!-- This is a Bento button and compatible with the editor -->
  <button href="https://app.bentonow.com/broadcasts/new" target="_blank" rel="noopener noreferrer" data-bento-button="true" text="Create next broadcast" width="auto" style="background-color: #111827; color: #ffffff!important; border-radius: 8px; padding: 10px 16px; font-size: 14px; text-decoration: none!important; border: none; cursor: pointer!important; font-weight: 600; display: inline-block!important; width: auto!important;" class="shoji-bento-button" data-width="auto"><a href="https://app.bentonow.com/broadcasts/new" target="_blank" rel="noopener noreferrer" style="color: inherit!important; text-decoration: none!important;">Create next broadcast</a></button>
</p>

<p>
  <a href="https://bentonow.com/docs/broadcasts" style="display:inline-block;padding:10px 16px;background:#f3f4f6;color:#111827;text-decoration:none;border-radius:6px;border:1px solid #d1d5db;">
    Read docs
  </a>
</p>

<p>
  Need help planning your next campaign? Reply to this email and we can help with segmentation and send timing.
</p>


---


<p style="font-size:12px;color:#6b7280;">
  You are receiving this email because you opted in for product updates.
  Update preferences in your account at any time.
</p>
```
  
  
    
> For `raw`, include full HTML and inline CSS. For `plain`, use lightweight content blocks.