Skip to content

List broadcasts

GET
https://api.getsitecontrol.com/v1/sites/{site_id}/broadcasts
curl --request GET \
--url 'https://api.getsitecontrol.com/v1/sites/1/broadcasts?limit=50&order=oldest' \
--header 'Authorization: Bearer <token>'

Broadcasts (e-mail campaigns) of the site in ascending order of id (order=newest for the latest first), with their status, e-mail subject, sender, audience, schedule, A/B test and folder. Filters combine: every one given must match. started_since and started_before select by when sending first started (started_at), so a broadcast scheduled but not started yet is left out; created_since is when it was created.

Nested lists keep their first 5 entries and texts their first 200 characters (links stay whole); truncated names what was cut, get_broadcast has it whole. A page holds up to limit broadcasts; while next_cursor is set, pass it as cursor for the next page. For the numbers of a page of broadcasts call get_broadcasts_stats_by_broadcast with their ids.

Deleted broadcasts are not listed. A broadcast without an e-mail is listed with email_id, subject, preview_text and every field of sender null.

To keep a copy in sync, walk the whole list with the cursor and no filters once. After that, pass updated_since set to the start of the previous walk minus a margin of a few minutes, and merge by id. The margin is required: a change may be stamped slightly earlier than it becomes visible.

updated_at moves with a change of the broadcast, a change of its status by the user, the scheduler or the sender, the A/B result and a change or deletion of the broadcast’s e-mail, except a change by the support team. It does not move with new statistics or a move to a folder. A deleted broadcast simply disappears. Repeat the full walk now and then to notice all of these.

FieldDescription
site_id
required
Site Id
integer
FieldDescription
status

Only broadcasts in any of these statuses; repeat for several

Array<string>
Allowed values: draft scheduled testing running paused stopped completed

Only broadcasts in any of these statuses; repeat for several

search
Search

Part of the name, case ignored, or the exact id

string
>= 1 characters <= 255 characters

Part of the name, case ignored, or the exact id

created_since
Created Since

Created at or after; without an offset, taken as UTC; a plain date means its start

string format: date-time

Created at or after; without an offset, taken as UTC; a plain date means its start

updated_since
Updated Since

updated_at at or after: changes of the broadcast and its e-mails, not new statistics or folder moves; deleted broadcasts are not listed; without an offset, taken as UTC; a plain date means its start

string format: date-time

updated_at at or after: changes of the broadcast and its e-mails, not new statistics or folder moves; deleted broadcasts are not listed; without an offset, taken as UTC; a plain date means its start

started_since
Started Since

Sending first started at or after this moment (started_at); without an offset, taken as UTC; a plain date means its start

string format: date-time

Sending first started at or after this moment (started_at); without an offset, taken as UTC; a plain date means its start

started_before
Started Before

Sending first started before this moment, excluded; without an offset, taken as UTC; a plain date means its start

string format: date-time

Sending first started before this moment, excluded; without an offset, taken as UTC; a plain date means its start

folder_id
Folder Id

Only the items of this folder, an id from list_folders; 0 is General

integer

Only the items of this folder, an id from list_folders; 0 is General

cursor
Cursor

next_cursor of the previous page, sent with the same order; omit for the first

string

next_cursor of the previous page, sent with the same order; omit for the first

limit
Limit

Items per page

integer
default: 50 >= 1 <= 100

Items per page

fields
Fields

Comma-separated fields to keep in each item, for example id,name; each item then carries only those fields and id. Omit for every field

string

Comma-separated fields to keep in each item, for example id,name; each item then carries only those fields and id. Omit for every field

order

Order of the items: oldest first (default) or newest first; asc and desc mean the same

string
Allowed values: oldest newest

Order of the items: oldest first (default) or newest first; asc and desc mean the same

Successful Response

Media typeapplication/json
BroadcastPage

One page of a list; next_cursor is null on the last page.

object
FieldDescription
items
required
Items
Array<object>
Broadcast
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
Audience
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
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
ABTest
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
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:
next_cursor
Next Cursor
string
nullable

Example

{
"items": [
{
"status": "draft",
"status_reason": "ab_test",
"sender": {
"domain": {
"state": "verified"
}
},
"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

Not found

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

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