---
title: "Create a new broadcast."
method: POST
path: "/api/v1/email/campaigns/broadcasts"
tags: ["Email"]
---

# Create a new broadcast.

`POST /api/v1/email/campaigns/broadcasts`

## Request

- Base URL: `https://go.outseta.com`
- URL: `https://go.outseta.com/api/v1/email/campaigns/broadcasts`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

To copy an existing broadcast, retrieve it and pass its data as the request body — the
Uid, SendDateTime, and message counts are automatically reset. A new broadcast is always
created as a Draft; schedule it by updating it with a SendDateTime (see the update endpoint).
            
Specify who the broadcast is sent to with EmailListUids and/or SegmentUids: EmailListUids is
an array of email list Uids (from GET /api/v1/email/lists) and SegmentUids is an array of
segment Uids (from GET /api/v1/crm/segments). These are the recommended way to set recipients
— they are merged into the underlying RecipientData for you, so callers (including LLM tools)
do not need to build that structure by hand; unknown Uids are rejected. RecipientData may
still be supplied directly (a JSON string of the form
{"BroadcastRecipientsEmailLists":[{"Uid":"..."}],"BroadcastRecipientsSegments":[{"Uid":"..."}]});
when both are present they are merged.
            
Message.Body is rendered as a Liquid template, so it may include merge tags such as
{{ Person.FirstName }}; unknown {{ }} tokens render as empty text. An inline-styled HTML
fragment is recommended. Message.Design (the drag-and-drop editor state) is optional — when
omitted it is derived automatically, so callers (including LLM tools) do not need to
understand it. Use Message.PreviewText for inbox preview text rather than an in-body
preheader.
            
The shape of the Body markup decides how editable the broadcast is in the app. Prose
(headings, paragraphs, lists, links, emphasis, images, inline spans) goes into a text
block, which the author edits on the editor canvas with the formatting toolbar and the
merge-tag menu. Structural markup (tables, an embedded style block, document
scaffolding) goes into an HTML block instead, because only that block renders such
markup verbatim, and it is edited as raw HTML. Send prose when the email must stay easy
to edit visually. The first save in the editor also replaces Body with the editor's
export of the design, so this choice decides the markup that is sent from then on.
            
When Body is a content fragment with no Design, it is composed into the account's API
email layout — a branded header and footer that includes the unsubscribe and
manage-subscriptions links — and the composed result is what is sent and opened in the
editor. Do not add your own unsubscribe link in this case; the layout provides one. The
layout is editable in the app; TemplateUid selects a specific layout template when the
account has more than one.
            
The layout is NOT applied when a Design is supplied or when the body is a complex full
HTML document (Outlook conditional comments, stylesheet links) — in those cases the body
is sent exactly as supplied, and you must include a visible unsubscribe link in it
yourself: add {{ UnsubscribeLink }} (a ready-made anchor) or {{ UnsubscribeUrl }} (the raw
URL) where you want it. Its presence is not validated. A one-click List-Unsubscribe header
is always added, but most anti-spam laws (e.g. CAN-SPAM) also require a visible
unsubscribe link in the body.

## Request body

- BroadcastCampaign
  - `Uid` string, nullable
  - `_objectType` string, nullable
  - `Created` string, date-time, required
  - `Updated` string, date-time, required
  - `ActivityEventData` unknown
  - `SendDateTime` string, date-time, nullable
  - `NextRunDateTime` string, date-time, nullable
  - `Campaign` Campaign
    - `Uid` string, nullable
    - `_objectType` string, nullable
    - `Created` string, date-time, required
    - `Updated` string, date-time, required
    - `ActivityEventData` unknown
    - `Name` string, required
    - `FromName` string, nullable
    - `FromEmail` string, nullable
    - `CampaignType` 1 | 2: `1` - Broadcast, `2` - Drip
  - `Message` Message
    - `Uid` string, nullable
    - `_objectType` string, nullable
    - `Created` string, date-time, required
    - `Updated` string, date-time, required
    - `ActivityEventData` unknown
    - `Template` Template
      - `Uid` string, nullable
      - `_objectType` string, nullable
      - `Created` string, date-time, required
      - `Updated` string, date-time, required
      - `ActivityEventData` unknown
      - `Name` string, required
      - `Subject` string, nullable
      - `Body` string, required
      - `Design` string, nullable
      - `Description` string, nullable
      - `SystemName` string, nullable
      - `IsInternal` boolean
      - `AvailableTokens` string, nullable
      - `RequiredTokens` string, nullable
      - `Tag` string, nullable
    - `Name` string, required
    - `Subject` string, nullable
    - `PreviewText` string, nullable
    - `Body` string, nullable
    - `Design` string, nullable
    - `CountSent` integer
    - `CountDelivered` integer
    - `CountBounce` integer
    - `CountSpam` integer
    - `CountOpen` integer
    - `CountClick` integer
    - `CountUnsubscribed` integer
    - `CountTotalOpen` integer
    - `CountTotalClick` integer
    - `IgnoredSpamBounce` integer
    - `IsBounceRatePaused` boolean
    - `IsSpamScorePaused` boolean
    - `EmailLinks` EmailLink[], nullable
      - `Uid` string, nullable
      - `_objectType` string, nullable
      - `Created` string, date-time, required
      - `Updated` string, date-time, required
      - `ActivityEventData` unknown
      - `Name` string, nullable
      - `URL` string, nullable
      - `CountClick` integer
      - `CountTotalClick` integer
      - `RecipientIds` integer[], nullable
    - `SpamAssassinScore` number
    - `SpamStatus` 0 | 1 | 2 | 3 | 4 | 5 | 6: `0` - Draft, `1` - Pending, `2` - Processing, `3` - Reprocessing, `4` - Spam, `5` - NotSpam, `6` - Ignored
    - `SpamReason` string, nullable
  - `RecipientData` string, nullable
  - `EmailListUids` string[], nullable
  - `SegmentUids` string[], nullable
  - `TemplateUid` string, nullable
  - `Status` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10: `1` - Draft, `2` - Pending, `3` - Sent, `4` - Queuing, `5` - Queued, `6` - Sending, `7` - Error, `8` - WaitingToResume, `9` - QueuedEmails, `10` - Archived
  - `ErrorMessage` string, nullable
  - `Tags` Tag[], nullable
    - `Uid` string, nullable
    - `_objectType` string, nullable
    - `Created` string, date-time, required
    - `Updated` string, date-time, required
    - `ActivityEventData` unknown
    - `Name` string, required
    - `SystemName` string, nullable
    - `SystemDescription` string, nullable
    - `TagColor` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10: `1` - Red, `2` - Orange, `3` - Amber, `4` - Green, `5` - Teal, `6` - Blue, `7` - Indigo, `8` - Purple, `9` - Pink, `10` - Gray
    - `EntityType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13: `0` - None, `1` - Account, `2` - Person, `3` - Deal, `4` - Case, `5` - Invoice, `6` - EmailLog, `7` - Plan, `8` - DiscountCoupon, `9` - AddOn, `10` - Task, `11` - Segment, `12` - Broadcast, `13` - Article

## Response `200`

- BroadcastCampaign
  - `Uid` string, nullable
  - `_objectType` string, nullable
  - `Created` string, date-time, required
  - `Updated` string, date-time, required
  - `ActivityEventData` unknown
  - `SendDateTime` string, date-time, nullable
  - `NextRunDateTime` string, date-time, nullable
  - `Campaign` Campaign
    - `Uid` string, nullable
    - `_objectType` string, nullable
    - `Created` string, date-time, required
    - `Updated` string, date-time, required
    - `ActivityEventData` unknown
    - `Name` string, required
    - `FromName` string, nullable
    - `FromEmail` string, nullable
    - `CampaignType` 1 | 2: `1` - Broadcast, `2` - Drip
  - `Message` Message
    - `Uid` string, nullable
    - `_objectType` string, nullable
    - `Created` string, date-time, required
    - `Updated` string, date-time, required
    - `ActivityEventData` unknown
    - `Template` Template
      - `Uid` string, nullable
      - `_objectType` string, nullable
      - `Created` string, date-time, required
      - `Updated` string, date-time, required
      - `ActivityEventData` unknown
      - `Name` string, required
      - `Subject` string, nullable
      - `Body` string, required
      - `Design` string, nullable
      - `Description` string, nullable
      - `SystemName` string, nullable
      - `IsInternal` boolean
      - `AvailableTokens` string, nullable
      - `RequiredTokens` string, nullable
      - `Tag` string, nullable
    - `Name` string, required
    - `Subject` string, nullable
    - `PreviewText` string, nullable
    - `Body` string, nullable
    - `Design` string, nullable
    - `CountSent` integer
    - `CountDelivered` integer
    - `CountBounce` integer
    - `CountSpam` integer
    - `CountOpen` integer
    - `CountClick` integer
    - `CountUnsubscribed` integer
    - `CountTotalOpen` integer
    - `CountTotalClick` integer
    - `IgnoredSpamBounce` integer
    - `IsBounceRatePaused` boolean
    - `IsSpamScorePaused` boolean
    - `EmailLinks` EmailLink[], nullable
      - `Uid` string, nullable
      - `_objectType` string, nullable
      - `Created` string, date-time, required
      - `Updated` string, date-time, required
      - `ActivityEventData` unknown
      - `Name` string, nullable
      - `URL` string, nullable
      - `CountClick` integer
      - `CountTotalClick` integer
      - `RecipientIds` integer[], nullable
    - `SpamAssassinScore` number
    - `SpamStatus` 0 | 1 | 2 | 3 | 4 | 5 | 6: `0` - Draft, `1` - Pending, `2` - Processing, `3` - Reprocessing, `4` - Spam, `5` - NotSpam, `6` - Ignored
    - `SpamReason` string, nullable
  - `RecipientData` string, nullable
  - `EmailListUids` string[], nullable
  - `SegmentUids` string[], nullable
  - `TemplateUid` string, nullable
  - `Status` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10: `1` - Draft, `2` - Pending, `3` - Sent, `4` - Queuing, `5` - Queued, `6` - Sending, `7` - Error, `8` - WaitingToResume, `9` - QueuedEmails, `10` - Archived
  - `ErrorMessage` string, nullable
  - `Tags` Tag[], nullable
    - `Uid` string, nullable
    - `_objectType` string, nullable
    - `Created` string, date-time, required
    - `Updated` string, date-time, required
    - `ActivityEventData` unknown
    - `Name` string, required
    - `SystemName` string, nullable
    - `SystemDescription` string, nullable
    - `TagColor` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10: `1` - Red, `2` - Orange, `3` - Amber, `4` - Green, `5` - Teal, `6` - Blue, `7` - Indigo, `8` - Purple, `9` - Pink, `10` - Gray
    - `EntityType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13: `0` - None, `1` - Account, `2` - Person, `3` - Deal, `4` - Case, `5` - Invoice, `6` - EmailLog, `7` - Plan, `8` - DiscountCoupon, `9` - AddOn, `10` - Task, `11` - Segment, `12` - Broadcast, `13` - Article

## Other responses

- `401`: Unauthorized

---

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