Skip to content

Get a broadcast

GET
https://api.getsitecontrol.com/v1/sites/{site_id}/broadcasts/{broadcast_id}
curl --request GET \
--url https://api.getsitecontrol.com/v1/sites/1/broadcasts/1 \
--header 'Authorization: Bearer <token>'

One broadcast with the fields of list_broadcasts, nothing shortened, plus its whole audience: the condition tree and the recipient settings (limit, sort, quality gate), the A/B test split and duration, and whether links get UTM parameters. How many contacts it reaches is get_broadcast_recipients, its numbers are in get_broadcast_stats, its clicks by link in get_broadcast_clicks, the body of its e-mail in get_email.

FieldDescription
site_id
required
Site Id
integer
broadcast_id
required
Broadcast Id

Broadcast id from list_broadcasts

integer

Broadcast id from list_broadcasts

Successful Response

Media typeapplication/json
BroadcastCard
object
FieldDescription
id
required
Id
integer
name
Name

Name in the admin

string
nullable
status

testing is an A/B broadcast testing its variants or choosing the winner. null only together with non-empty warnings

string
Allowed values: draft scheduled testing running paused stopped completed
status_reason

Why the broadcast entered its status; null when a person simply made the change. Who did it, and the whole story, is in list_broadcast_history

string
Allowed values: ab_test completed scheduled no_recipients balance blocked_suspicious_activity blocked_poor_delivery sandbox not_on_plan failed paused_too_long stop_all deleted other
email_id
Email Id

The broadcast’s e-mail; null when it has none

integer
nullable
subject
Subject

Subject of the e-mail

string
nullable
preview_text
Preview Text

Preview text of the e-mail, shown after the subject in inboxes

string
nullable
sender
required
Sender
object
FieldDescription
name
Name

The From display name; null when the e-mail has none

string
nullable
address
Address

The From address the e-mail goes out with: the one set in the editor when its domain is verified for the site, the default Getsitecontrol address otherwise

string
nullable
reply_to
Reply To

Where replies go; null when replies go to address

string
nullable
domain
Domain

The site’s sending domain of the address set in the editor; null when that address is not on one of them

object
FieldDescription
id
required
Id

Id in list_email_domains

integer
domain
required
Domain
string
is_verified
required
Is Verified

True: e-mails go out from this domain; false: from the default address until it is verified

boolean
state
required

Where verification stands

string
Allowed values: verified not_started pending recheck_required
audience
required
AudienceCard
object
FieldDescription
segments
required
Segments

Segments the audience conditions refer to

Array<object>
SegmentRef
object
FieldDescription
id
required
Id

Segment id from list_segments

integer
name
Name

Null when the segment was deleted: then nobody receives it

string
nullable
has_other_conditions
required
Has Other Conditions

True: the conditions also hold rules besides segments; get_broadcast has them all

boolean
limit
Limit

At most this many recipients; null when not limited

integer
nullable
all_contacts
required
All Contacts

True: the conditions select every subscribed contact, the admin’s All contacts; it is stored as an empty list of segments

boolean
conditions
Conditions

Who receives the broadcast. Only subscribed contacts are sent to: that condition is always added and is not in the tree. The tree is written as segment conditions.

Which contacts belong to the segment: a tree of conditions, applied to the contacts as they are at the moment it is used.

Conditions are the condition language of the Getsitecontrol admin, with its own variable names and codes; they are not the field names and values of Contact. A segment written here can be edited in the admin, and the variables below are the ones the admin’s condition editor offers.

A node is an object with exactly op and args. A group has op and or or and nodes in args; a leaf has the variable {{$contact.<name>}} as the first argument, then its values: none for * (is set) and undefined (is not set), two for between and !between, one for the rest. To negate, use the opposite operator; there is no not node.

The admin editor shows a root group whose args are groups, each holding leaves, as in the example; write that shape so the segment stays editable there. {"op": "and", "args": []} matches every contact of the site. Conditions are saved as sent.

Values are integers, strings or, for ina and !ina, a list of them.

OperatorMeaning
=, !=equals, differs
ina, !inaany of the list, none of it
<, >, between, !betweencompare; between includes both ends
^, $, in, match (and !-forms)starts with, ends with, contains, wildcard * without case
*, undefinedis set, is not set

Text operators other than match are case sensitive, except on $contact.email: a contact’s email is stored lowercase and compared without case by every operator. In ^, $, in, match and their negations _ matches any single character and % is a plain character.

VariableOperatorsValue
$contact.email, phone, firstName, lastNametext operators, =, !=, ina, !ina, *, undefinedstring
$contact.country=, !=, ina, !ina, *, undefinedISO 3166-1 alpha-2, upper case
$contact.date=, !=, <, >, between, !between, *, undefineddate the contact was added
$contact.isSubscribed=marketing status: S subscribed, U unsubscribed, B bounced
$contact.emailQuality=, !=, ina, !ina, *, undefinedCorp+, Corp corporate, Pers+, Pers personal (+ is the higher grade), Edu education, Gov government, Risk risky, Temp disposable, Unk unknown
$contact.tags=, !=, ina, !ina, *, undefinedtag ids from list_tags
$contact.segments=, !=, ina, !inaids from list_segments, as integers
$contact.emailSend, emailOpen, emailClick=, !=, ina, !ina, *, undefinede-mail id, as email_id of a broadcast
$contact.emailSendCount, emailOpenCount, emailClickCount=, !=, <, >, between, !between, *, undefinedinteger, not negative
$contact.emailSendDate, emailOpenDate, emailClickDateas $contact.datethe latest event
$contact.$shopifySpent, $shopifyOrdersas the countsinteger
$contact.$shopifyOrderDateas $contact.datethe latest order
$contact.<field id>by the field type from list_contact_fields: text, integer, number, date or datetimeas the field; boolean and other fields are refused

ina and !ina on tags and segments take at least one id. On $contact.tags, = means the contact has that tag among its tags.

$contact.isSubscribed compares the stored status code as the admin does: S does not match a contact who confirmed double opt-in, U does not match one who never subscribed or awaits double opt-in, and B matches every bounced contact. The contact statuses subscribed, unsubscribed and bounced are the broader groups.

Ids are integers or strings of digits. A number is a 32-bit integer or a string holding one. A date is YYYY-MM-DD or ISO 8601 with an offset. For $contact.date, $shopifyOrderDate and datetime fields, a value at midnight is a whole day: = and != cover the day, and the second value of between runs to its end. Date fields and $contact.email*Date compare with midnight exactly.

Nested segments may not form a cycle. A list must reference each nested segment once, and not one nested inside another.

Conditions are checked the way they run: nested segments must exist and the whole tree must compile, so an unknown variable or a value of the wrong type is refused. Conditions saved in the admin are returned as they are and may use other variables and values.

null only together with non-empty warnings

object
recipient_settings
required
RecipientSettings
object
FieldDescription
limit
Limit

At most this many recipients; null when not limited

integer
nullable
sort
required

Which contacts the limit keeps

string
Allowed values: newest oldest random hottest
quality_gate
required

E-mail qualities left out of the audience; empty when none is

Array<string>
Allowed values: corporate_prime corporate personal_prime personal academic government risky disposable unknown
schedule
Schedule

Null only together with non-empty warnings

object
FieldDescription
mode
required

New modes may be added; strict clients must accept unknown values

string
Allowed values: immediate timezone smart ramp
scheduled_at
Scheduled At

Scheduled start, with the offset of timezone; null when none is set

string format: date-time
nullable
timezone
Timezone

IANA time zone the time was scheduled in

string
nullable
send_hours
Send Hours

Hours of the recipient’s day to send at; timezone mode only

Array<number>
nullable
send_period_hours
Send Period Hours

Target hours the sending is spread over, not a promised end: the actual end follows the sender’s pace, see progress.finishes_at of the broadcast’s stats; smart and ramp modes only

integer
nullable
ab_test
required
ABTestCard
object
FieldDescription
is_enabled
required
Is Enabled

Whether the broadcast tests e-mail variants on a part of the audience and sends the winner to the rest

boolean
variant_email_ids
required
Variant Email Ids

E-mail ids of the variants in their order; empty without A/B

Array<integer>
winner_email_id
Winner Email Id

The winning variant; null until the winner is chosen

integer
nullable
winning_metric

What picked the winner; null until the test has a result

string
Allowed values: open_rate click_rate other
test_percentage
Test Percentage

Percent of the audience the variants are tested on; null without A/B

integer
nullable
test_duration_hours
Test Duration Hours

Hours the test runs before the winner is chosen; null without A/B

integer
nullable
created_at
required
Created At
string format: date-time
updated_at
required
Updated At

Last change of the broadcast, its status or its e-mail; see the list description; a move to another folder does not change it

string format: date-time
started_at
Started At

When sending first started; null until then

string format: date-time
nullable
ended_at
Ended At

When the broadcast was stopped or completed; null until then

string format: date-time
nullable
launched_at
Launched At

Latest start or scheduling by a person; null when there was none

string format: date-time
nullable
created_by
Created By

Null when the user was deleted

object
FieldDescription
id
Id

Null for Support or for a user who was deleted

integer
nullable
name
Name

Null when the user has no name

string
nullable
email
Email

The user’s sign-in e-mail; null for Support

string
nullable
launched_by
Launched By

Who made the launch at launched_at; null together with it

object
FieldDescription
id
Id

Null for Support or for a user who was deleted

integer
nullable
name
Name

Null when the user has no name

string
nullable
email
Email

The user’s sign-in e-mail; null for Support

string
nullable
edited_at
Edited At

Last change made in the editor, to the broadcast or to one of its e-mails, A/B variants included

string format: date-time
nullable
edited_by
Edited By

Who made the change at edited_at; null when unknown: by an API key, by a user deleted since, or before authors were recorded

object
FieldDescription
id
Id

Null for Support or for a user who was deleted

integer
nullable
name
Name

Null when the user has no name

string
nullable
email
Email

The user’s sign-in e-mail; null for Support

string
nullable
folder
required
Folder
object
FieldDescription
id
required
Id

0 is General, where items outside any folder are

integer
name
required
Name
string
warnings
required
Warnings

Empty unless the broadcast could not be read in full; wording is not stable, do not parse

Array<string>
truncated
Truncated

Parts shortened in the list, as paths; the card has them whole. Empty when nothing was cut

Array<string>
default:
tracking
required
Tracking
object
FieldDescription
add_utm_parameters
Add Utm Parameters

Whether UTM parameters are added to the e-mail’s links; null without an e-mail

boolean
nullable

Example

{
"status": "draft",
"status_reason": "ab_test",
"sender": {
"domain": {
"state": "verified"
}
},
"audience": {
"recipient_settings": {
"sort": "newest",
"quality_gate": [
"corporate_prime"
]
}
},
"schedule": {
"mode": "immediate"
},
"ab_test": {
"winning_metric": "open_rate"
},
"truncated": []
}
FieldDescription
GSC-Version
string

API version the response was produced for

X-Request-Id
string

Request id, echoed from the request when valid

X-RateLimit-Limit
integer

Limit of the tightest bucket

X-RateLimit-Remaining
integer

Requests left in its window

X-RateLimit-Reset
integer

End of its window, epoch seconds

Unsupported GSC-Version

Media typeapplication/problem+json
Problem

The documented shape of every error body on the versioned surface.

object
FieldDescription
type
required
Type
string
title
required
Title
string
status
required
Status
integer
detail
Detail
string
nullable
instance
required
Instance
string
reason
Reason
string
nullable
next
Next
string
nullable
request_id
required
Request Id
string
errors
Errors
Array<object>
nullable
ValidationIssue
object
FieldDescription
loc
required
Loc
Array
msg
required
Msg
string
type
required
Type
string
metadata
Metadata
object

Example · Generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"reason": "example",
"next": "example",
"request_id": "example",
"errors": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
],
"metadata": {}
}
FieldDescription
GSC-Version
string

API version the response was produced for

X-Request-Id
string

Request id, echoed from the request when valid

X-RateLimit-Limit
integer

Limit of the tightest bucket

X-RateLimit-Remaining
integer

Requests left in its window

X-RateLimit-Reset
integer

End of its window, epoch seconds

Missing or invalid API key or access token

Media typeapplication/problem+json
Problem

The documented shape of every error body on the versioned surface.

object
FieldDescription
type
required
Type
string
title
required
Title
string
status
required
Status
integer
detail
Detail
string
nullable
instance
required
Instance
string
reason
Reason
string
nullable
next
Next
string
nullable
request_id
required
Request Id
string
errors
Errors
Array<object>
nullable
ValidationIssue
object
FieldDescription
loc
required
Loc
Array
msg
required
Msg
string
type
required
Type
string
metadata
Metadata
object

Example · Generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"reason": "example",
"next": "example",
"request_id": "example",
"errors": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
],
"metadata": {}
}
FieldDescription
GSC-Version
string

API version the response was produced for

X-Request-Id
string

Request id, echoed from the request when valid

X-RateLimit-Limit
integer

Limit of the tightest bucket

X-RateLimit-Remaining
integer

Requests left in its window

X-RateLimit-Reset
integer

End of its window, epoch seconds

WWW-Authenticate
string

Authentication scheme: Bearer

Access denied

Media typeapplication/problem+json
Problem

The documented shape of every error body on the versioned surface.

object
FieldDescription
type
required
Type
string
title
required
Title
string
status
required
Status
integer
detail
Detail
string
nullable
instance
required
Instance
string
reason
Reason
string
nullable
next
Next
string
nullable
request_id
required
Request Id
string
errors
Errors
Array<object>
nullable
ValidationIssue
object
FieldDescription
loc
required
Loc
Array
msg
required
Msg
string
type
required
Type
string
metadata
Metadata
object

Example · Generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"reason": "example",
"next": "example",
"request_id": "example",
"errors": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
],
"metadata": {}
}
FieldDescription
GSC-Version
string

API version the response was produced for

X-Request-Id
string

Request id, echoed from the request when valid

X-RateLimit-Limit
integer

Limit of the tightest bucket

X-RateLimit-Remaining
integer

Requests left in its window

X-RateLimit-Reset
integer

End of its window, epoch seconds

Media typeapplication/problem+json

site_not_found: no such site in your account; broadcast_not_found: the site has no broadcast with this id, or it was deleted

Problem

The documented shape of every error body on the versioned surface.

object
FieldDescription
type
required
Type
string
title
required
Title
string
status
required
Status
integer
detail
Detail
string
nullable
instance
required
Instance
string
reason
Reason
string
nullable
next
Next
string
nullable
request_id
required
Request Id
string
errors
Errors
Array<object>
nullable
ValidationIssue
object
FieldDescription
loc
required
Loc
Array
msg
required
Msg
string
type
required
Type
string
metadata
Metadata
object

Example · Generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"reason": "example",
"next": "example",
"request_id": "example",
"errors": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
],
"metadata": {}
}
FieldDescription
GSC-Version
string

API version the response was produced for

X-Request-Id
string

Request id, echoed from the request when valid

X-RateLimit-Limit
integer

Limit of the tightest bucket

X-RateLimit-Remaining
integer

Requests left in its window

X-RateLimit-Reset
integer

End of its window, epoch seconds

Validation failed

Media typeapplication/problem+json
Problem

The documented shape of every error body on the versioned surface.

object
FieldDescription
type
required
Type
string
title
required
Title
string
status
required
Status
integer
detail
Detail
string
nullable
instance
required
Instance
string
reason
Reason
string
nullable
next
Next
string
nullable
request_id
required
Request Id
string
errors
Errors
Array<object>
nullable
ValidationIssue
object
FieldDescription
loc
required
Loc
Array
msg
required
Msg
string
type
required
Type
string
metadata
Metadata
object

Example · Generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"reason": "example",
"next": "example",
"request_id": "example",
"errors": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
],
"metadata": {}
}
FieldDescription
GSC-Version
string

API version the response was produced for

X-Request-Id
string

Request id, echoed from the request when valid

X-RateLimit-Limit
integer

Limit of the tightest bucket

X-RateLimit-Remaining
integer

Requests left in its window

X-RateLimit-Reset
integer

End of its window, epoch seconds

Rate limited

Media typeapplication/problem+json
Problem

The documented shape of every error body on the versioned surface.

object
FieldDescription
type
required
Type
string
title
required
Title
string
status
required
Status
integer
detail
Detail
string
nullable
instance
required
Instance
string
reason
Reason
string
nullable
next
Next
string
nullable
request_id
required
Request Id
string
errors
Errors
Array<object>
nullable
ValidationIssue
object
FieldDescription
loc
required
Loc
Array
msg
required
Msg
string
type
required
Type
string
metadata
Metadata
object

Example · Generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"reason": "example",
"next": "example",
"request_id": "example",
"errors": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
],
"metadata": {}
}
FieldDescription
GSC-Version
string

API version the response was produced for

X-Request-Id
string

Request id, echoed from the request when valid

X-RateLimit-Limit
integer

Limit of the tightest bucket

X-RateLimit-Remaining
integer

Requests left in its window

X-RateLimit-Reset
integer

End of its window, epoch seconds

Retry-After
integer

Seconds until the bucket refills

Temporarily unavailable; retry later

Media typeapplication/problem+json
Problem

The documented shape of every error body on the versioned surface.

object
FieldDescription
type
required
Type
string
title
required
Title
string
status
required
Status
integer
detail
Detail
string
nullable
instance
required
Instance
string
reason
Reason
string
nullable
next
Next
string
nullable
request_id
required
Request Id
string
errors
Errors
Array<object>
nullable
ValidationIssue
object
FieldDescription
loc
required
Loc
Array
msg
required
Msg
string
type
required
Type
string
metadata
Metadata
object

Example · Generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"reason": "example",
"next": "example",
"request_id": "example",
"errors": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
],
"metadata": {}
}
FieldDescription
GSC-Version
string

API version the response was produced for

X-Request-Id
string

Request id, echoed from the request when valid

X-RateLimit-Limit
integer

Limit of the tightest bucket

X-RateLimit-Remaining
integer

Requests left in its window

X-RateLimit-Reset
integer

End of its window, epoch seconds