Toplu gönderimler
Bu gruptaki her işlem: neyi kabul ettiği, ne döndürdüğü ve hangi hatalarla yanıt verebileceği.
İşlemler
One message sent to everybody in one or more audiences, as a separate copy for each person, personalised from the contact with merge fields and carrying a one-click unsubscribe. The sending happens in the background: create the broadcast, then read it for its progress, and list its copies with GET /emails?broadcastId=.
Every copy carries the unsubscribe headers the large mailbox providers require of bulk mail, and a person who unsubscribes is skipped by every later broadcast to those audiences. The suppression list applies as it does to every send.
GET/broadcasts
List broadcasts
Every broadcast in this workspace, newest first, one page at a time, each with live counts. audienceId keeps the ones that were sent to that audience, among others or alone.
The individual messages are not here. List them with GET /emails?broadcastId=.
A key limited to particular addresses or domains lists only the broadcasts sent from an address or domain it holds.
Requires the emails:read scope.
Sorgu parametreleri
limitintegerRows per page, 1 to 100.
En az 1En çok 100Varsayılan25cursorstringA broadcast id. Keyset, not offset: pass the previous page's
nextCursor. One that names nothing in this list is a 400invalid_cursor.audienceIdstringOnly the broadcasts that included this audience. An id that names no audience answers an empty list rather than a 404.
1 ile 64 karakter arası
Döndürür
A page of broadcasts, newest first.
Hatalar
- 400
invalid_cursorwhencursornames no broadcast in this workspace.- 422
invalid_parameteron alimitout of range.
Her işlemin döndürebileceği hatalar401403404500Hata kataloğu
Şurada da var
POST/broadcasts
Send to audiences
Sends one message to everybody in one or more audiences, as a separate copy for each person. Every copy has exactly one recipient and no cc or bcc, so nobody sees who else it went to, and every copy is an ordinary email with its own msg_ id, events, tracking and webhooks. GET /emails?broadcastId= lists them. Copies are not filed in the Sent folder: the broadcast is the record.
The call answers 202 straight away with the broadcast queued, or scheduled when scheduledAt is set, and the sending happens in the background, 50 people at a time. Read GET /broadcasts/{id} for status and counts as it goes.
WHO GETS IT. Every contact in at least one of audienceIds, counted once however many of them hold it, except a contact that has unsubscribed from every one of the chosen audiences it is in, and except an address on the suppression list. A contact added to one of the audiences after this call but before the sending reaches it is included. counts.recipients is the estimate taken now, and POST /broadcasts/preview returns the same count without sending anything.
QUOTA. The whole send is checked against the plan's monthly sends before anything is written. A broadcast the allowance cannot cover is refused with 429 send_quota_exceeded and leaves nothing behind. Each copy counts as one send.
PERSONALISATION. subject, html and text take merge fields, filled in for each person: {{firstName}}, {{lastName}}, {{name}}, {{email}}, {{unsubscribeUrl}}. Each takes a fallback after a bar, such as {{firstName|there}}, used when the contact has no value for it. The values come from the contact: the first name is the first word of its name and the last name is the rest. They are escaped in html, and any other {{…}} is left as written. With template, the same values are passed as props, but only the props the template declares, so a template that declares none of them is sent unchanged.
UNSUBSCRIBE. Every copy carries List-Unsubscribe and List-Unsubscribe-Post: List-Unsubscribe=One-Click, which is what lets a mail client offer its own unsubscribe button and what the large mailbox providers require of bulk mail. An html or text body that does not place {{unsubscribeUrl}} itself gets a one-line footer with the link. A template is sent as it is, so put {{unsubscribeUrl}} in the template. The link opens a page with an Unsubscribe button, and following it marks the person unsubscribed in every audience this broadcast was sent to (unsubscribedAt on GET /audiences/{id}/contacts). Their other audiences, their contact and mail sent to them one message at a time are not affected.
LIMITS. 1 to 10 audiences and up to 8 tags, and every copy also carries the tag broadcast_id. No attachments, cc, bcc, translation or encryption. The body comes from html and or text, or from template, never both.
IDEMPOTENCY. Send an Idempotency-Key and a retry with the same key answers 200 with the broadcast the first call created, with replayed: true and Idempotency-Replayed: true, instead of sending again. The same key with a different body is a 422 idempotency_key_reuse. Without a key, sending the same body twice sends the broadcast twice.
Requires the emails:send and audiences:read scopes.
Başlıklar
Idempotency-KeystringMakes a retry safe. Reusing one with a different body is a 422.
En çok 255 karakterDesen^[A-Za-z0-9_.:-]+$
İstek gövdesi
audienceIdsstring[]Zorunlu1 to 10 audience ids. A contact in several of them gets one copy. Each id has to name an audience in this workspace, or nothing is sent.
1 ile 10 arası öğefromstring | objectZorunluThe sender, as on
POST /emails: an address the key may send as, bare or with a name.emailstringZorunlu- En çok 320 karakter
namestring- En çok 128 karakter
replyTostring | objectWhere replies go, the same for every copy.
emailstringZorunlu- En çok 320 karakter
namestring- En çok 128 karakter
subjectstringRequired unless a template supplies it. Takes merge fields:
{{firstName}},{{lastName}},{{name}},{{email}},{{unsubscribeUrl}}, each with an optional fallback after a bar, such as{{firstName|there}}.En çok 998 karakterVarsayılan""htmlstringThe HTML body, with the same merge fields, their values escaped. Without
{{unsubscribeUrl}}in it, a one-line unsubscribe footer is added.En çok 1000000 karaktertextstringThe plain text body, with the same merge fields. Without
{{unsubscribeUrl}}in it, an unsubscribe line is added.En çok 1000000 karaktertemplateobjectA stored template instead of
htmlandtext. The merge values are passed as props, but only the ones the template declares, and the template is not given a footer, so declare and placeunsubscribeUrlyourself.idstringZorunlu- 1 ile 128 karakter arası
versioninteger- 0 değerinden büyükEn çok 100000
propsRecord<string, any>slotsRecord<string, any>
trackingobjectOpen and link tracking for every copy. A field left out takes the
fromaddress setting, as onPOST /emails.opensbooleanclicksboolean
tagsRecord<string, string>Up to 8 tags, copied onto every copy beside
broadcast_id, which the server adds.Varsayılan{}scheduledAtstringWhen to start: an ISO 8601 instant or a duration such as
PT2H, in the future and at most 365 days out. Left out, the sending starts straight away.3 ile 64 karakter arası
Döndürür
An Idempotency-Key replayed an earlier call. This is that broadcast, not a new one.
objectstring- Şunlardan biri
"broadcast" idstringThe durable handle,
brd_+ 24 hex.statusstringscheduledwaits forscheduledAt.queuedwaits for the sending to start.sendingis walking the audiences, or has finished walking them while copies are still waiting to go.sentmeans every copy handed over has been sent or settled.cancelledwas stopped byPOST /broadcasts/{id}/cancel.failedmeans the whole broadcast stopped: thefromaddress can no longer be sent from, the template stopped resolving, the plan ran out part way, the sending itself kept failing, or not one copy could be written, andlastErrorsays which.Şunlardan biri"scheduled""queued""sending""sent""cancelled""failed"modestringThe mode of the key that created it. A broadcast made with a test key sends its copies the way any test send goes: accepted and marked sent, and delivered to nobody.
Şunlardan biri"live""test"sourcestringWhere it was started:
apifor a key,oauthfor a connected app,composerfor the app,mcpfor an assistant.Şunlardan biri"api""oauth""composer""mcp""ai""form"audienceIdsstring[]The audiences it was sent to, each once.
fromstringThe address every copy is sent from.
subjectstringThe subject as written, merge fields and all, so it reads the same for every copy. Empty when a template supplies the subject.
countsBroadcastCountslastErrorstringWhy the broadcast failed, or the most recent copy that could not be written and why. Null while nothing has gone wrong.
null olabilirscheduledAtstringWhen the sending is due to start. Null for a broadcast sent straight away.
null olabilirBiçimdate-timestartedAtstringWhen the sending reached the first people. Null until then.
null olabilirBiçimdate-timecompletedAtstringWhen the last person was reached and every copy had been written. Copies can still be waiting to go after it, which is why
statuscan readsendingwith this set.null olabilirBiçimdate-timecancelledAtstring- null olabilirBiçim
date-time createdAtstring- Biçim
date-time updatedAtstring- Biçim
date-time replayedbooleanTrue when an
Idempotency-Keyreplayed an earlier call, false for a new broadcast.
Accepted. The Location header names the broadcast; nothing has been sent yet.
objectstring- Şunlardan biri
"broadcast" idstringThe durable handle,
brd_+ 24 hex.statusstringscheduledwaits forscheduledAt.queuedwaits for the sending to start.sendingis walking the audiences, or has finished walking them while copies are still waiting to go.sentmeans every copy handed over has been sent or settled.cancelledwas stopped byPOST /broadcasts/{id}/cancel.failedmeans the whole broadcast stopped: thefromaddress can no longer be sent from, the template stopped resolving, the plan ran out part way, the sending itself kept failing, or not one copy could be written, andlastErrorsays which.Şunlardan biri"scheduled""queued""sending""sent""cancelled""failed"modestringThe mode of the key that created it. A broadcast made with a test key sends its copies the way any test send goes: accepted and marked sent, and delivered to nobody.
Şunlardan biri"live""test"sourcestringWhere it was started:
apifor a key,oauthfor a connected app,composerfor the app,mcpfor an assistant.Şunlardan biri"api""oauth""composer""mcp""ai""form"audienceIdsstring[]The audiences it was sent to, each once.
fromstringThe address every copy is sent from.
subjectstringThe subject as written, merge fields and all, so it reads the same for every copy. Empty when a template supplies the subject.
countsBroadcastCountslastErrorstringWhy the broadcast failed, or the most recent copy that could not be written and why. Null while nothing has gone wrong.
null olabilirscheduledAtstringWhen the sending is due to start. Null for a broadcast sent straight away.
null olabilirBiçimdate-timestartedAtstringWhen the sending reached the first people. Null until then.
null olabilirBiçimdate-timecompletedAtstringWhen the last person was reached and every copy had been written. Copies can still be waiting to go after it, which is why
statuscan readsendingwith this set.null olabilirBiçimdate-timecancelledAtstring- null olabilirBiçim
date-time createdAtstring- Biçim
date-time updatedAtstring- Biçim
date-time replayedbooleanTrue when an
Idempotency-Keyreplayed an earlier call, false for a new broadcast.
Hatalar
- 403
insufficient_scopeunless the key holds bothemails:sendandaudiences:read, orfrom_address_forbiddenwhen the key may not send asfrom.- 404
audience_not_foundonaudienceIdswhen an id names no audience in this workspace. Nothing is written.- 409
domain_not_sendable: thefromdomain is known to this workspace but cannot sign mail yet, the same refusalPOST /emailsgives.- 422
no_recipientsonaudienceIdswhen the audiences are empty or everybody in them has unsubscribed or is suppressed.invalid_parameterorunknown_parameteron a field that does not validate: no body,htmlortextalongsidetemplate, nosubjectwithout a template, more than 10 audiences or 8 tags, or ascheduledAtthat is not in the future or more than 365 days out.template_not_found,template_not_publishedand the other template refusals ontemplate.*, or a prop that does not fit the template ontemplate.props.<name>.- 429
send_quota_exceeded: the plan cannot cover a copy for every recipient this month. Nothing was written, and no broadcast is left behind.
Her işlemin döndürebileceği hatalar400401500Hata kataloğu
Şurada da var
POST/broadcasts/preview
Count who a broadcast would reach
The numbers POST /broadcasts would work from, without sending anything or writing anything: how many people it would reach, how many are skipped because they have unsubscribed, and how many because their address is suppressed. A contact in several of the audiences counts once.
The count is taken at the moment of the call. Contacts who join or leave before the send starts change it.
Requires the audiences:read scope.
İstek gövdesi
audienceIdsstring[]Zorunlu1 to 10 audience ids, the same list you would send.
1 ile 10 arası öğe
Döndürür
The counts. Nothing was sent.
Hatalar
- 404
audience_not_foundonaudienceIdswhen an id names no audience in this workspace.- 422
invalid_parameteronaudienceIdswhen it is empty or holds more than 10 ids,unknown_parameterfor any other key in the body.
Her işlemin döndürebileceği hatalar400401403500Hata kataloğu
Şurada da var
GET/broadcasts/analytics
Broadcast analytics across broadcasts
The numbers behind the Analytics tab of the Broadcasts page, in one request: how the live broadcasts sent inside a window did, added up and as a series cut to grain, plus one row per broadcast so they can be compared.
A copy counts when it was sent, or written if it has not gone yet, inside the window, and everything that happened to it afterwards counts with it, so an open today of a copy sent last week is in a 30 day window but not in a 1 day one. Test mode broadcasts are left out. totals and series cover the broadcasts in broadcastIds, or every one when it is left out, and broadcasts always lists every broadcast in the window. The series counts each person once, at the first time it happened to them.
A key limited to particular addresses or domains reads only broadcasts sent from an address or domain it holds, and the rest are left out as if they did not exist.
Requires the emails:read scope.
Sorgu parametreleri
broadcastIdsstringComma separated broadcast ids, at most 50, that
totalsandseriesadd up. Leave it out for every broadcast in the window. A repeated id counts once, and one with no copy in the window adds nothing.En çok 4000 karakterdaysintegerHow far back to look. The window starts at the beginning of its first bucket in the offset you asked for, so the oldest bucket is a whole one, and ends now.
En az 1En çok 1095Varsayılan30minutesintegerThe window in minutes, which wins over
dayswhen both are sent.En az 1En çok 1576800grainstringHow wide one bucket is, and the shape of its key:
YYYY-MM-DDfor a day,YYYY-MM-DDTHHfor an hour,YYYY-MM-DDTHH:MMfor a minute.Şunlardan biri"minute""hour""day"Varsayılan"day"offsetMinutesintegerMinutes east of UTC to cut the buckets in. Pass
-new Date().getTimezoneOffset()for the local zone.En az -840En çok 840Varsayılan0
Döndürür
The window, the totals, the series and every broadcast in the window.
Hatalar
- 422
invalid_parameteronbroadcastIdsfor more than 50 ids, ondays,minutesoroffsetMinutesout of range, or on an unknowngrain.
Her işlemin döndürebileceği hatalar400401403404500Hata kataloğu
Şurada da var
GET/broadcasts/{id}
Retrieve a broadcast
One broadcast with counts read live from its copies, which makes this the call to poll while it sends. status settles on sent once every copy handed over has gone out or failed, and on failed or cancelled when it stopped early.
A key limited to particular addresses or domains reads only broadcasts sent from an address or domain it holds. Any other broadcast answers 404 broadcast_not_found, as if it did not exist.
Requires the emails:read scope.
Yol parametreleri
idstringZorunluA
brd_id fromPOST /broadcastsorGET /broadcasts.
Döndürür
The broadcast.
Hatalar
- 404
broadcast_not_foundwhen the id names no broadcast in this workspace.
Her işlemin döndürebileceği hatalar400401403422500Hata kataloğu
Şurada da var
GET/broadcasts/{id}/recipients
List the recipients of a broadcast
Everybody the broadcast went to, one row per copy, sorted by address: the copy id, its status, when it was sent and delivered, whether it bounced or was reported as spam, how often it was opened and clicked, and whether the person unsubscribed after it went out.
Opens and clicks leave out image proxies and link scanners, and stay 0 when the broadcast was sent with tracking off. Keyset paging: pass nextCursor back as cursor, with the same filter and q.
A key limited to particular addresses or domains reads only broadcasts sent from an address or domain it holds. Any other broadcast answers 404 broadcast_not_found, as if it did not exist.
Requires the emails:read scope.
Yol parametreleri
idstringZorunluA
brd_id fromPOST /broadcastsorGET /broadcasts.
Sorgu parametreleri
filterstringKeeps one group:
pending(still queued or sending),sent,delivered,opened,not_opened(sent and never opened),clicked,bounced,complained,failed(failed or cancelled) orunsubscribed.Şunlardan biri"pending""sent""delivered""opened""not_opened""clicked""bounced""complained""failed""unsubscribed"qstringSearches the address and the name, ignoring case.
En çok 200 karakterlimitintegerRows per page, 1 to 200.
En az 1En çok 200Varsayılan50cursorstringThe previous page's
nextCursor, passed back as it came. It is opaque: it holds where the last row sat in this list's order, so a row deleted or edited between pages never breaks the walk, and the next page starts at the first row that sorts after it. A value this list did not hand out is a 400invalid_cursor.
Döndürür
A page of recipients, by address.
Hatalar
- 404
broadcast_not_foundwhen the id names no broadcast in this workspace.
Her işlemin döndürebileceği hatalar400401403422500Hata kataloğu
Şurada da var
GET/broadcasts/{id}/recipients/{emailId}
Retrieve one copy of a broadcast
One person's copy: the same row GET /broadcasts/{id}/recipients lists, plus the subject, HTML and text exactly as that person received them, with the merge fields filled in and their own unsubscribe link. The HTML is from before open and click tracking was added.
A key limited to particular addresses or domains reads only broadcasts sent from an address or domain it holds. Any other broadcast answers 404 broadcast_not_found, as if it did not exist.
Requires the emails:read scope.
Yol parametreleri
idstringZorunluA
brd_id fromPOST /broadcastsorGET /broadcasts.emailIdstringZorunluThe
emailIdof the copy, from the recipients list.
Döndürür
The copy and its content.
Hatalar
- 404
broadcast_not_foundfor an unknown broadcast,recipient_not_foundfor a copy that is not part of it.
Her işlemin döndürebileceği hatalar400401403422500Hata kataloğu
Şurada da var
GET/broadcasts/{id}/stats
Broadcast statistics
How the broadcast performed: copies sent, delivered, bounced, reported as spam and failed, and how many people opened, clicked and unsubscribed, as totals and as a series cut to grain. The series counts each person once, at the first time it happened to them, so it adds up to the totals.
Send days or minutes to also read what happened lately: window then counts the copies delivered, bounced, reported, opened, clicked and unsubscribed inside it, and series keeps only its buckets. totals always covers the whole broadcast.
A key limited to particular addresses or domains reads only broadcasts sent from an address or domain it holds. Any other broadcast answers 404 broadcast_not_found, as if it did not exist.
Requires the emails:read scope.
Yol parametreleri
idstringZorunluA
brd_id fromPOST /broadcastsorGET /broadcasts.
Sorgu parametreleri
grainstringBucket width of the series.
Şunlardan biri"minute""hour""day"Varsayılan"hour"offsetMinutesintegerMinutes east of UTC to cut the buckets in. Pass
-new Date().getTimezoneOffset()for the local zone.En az -840En çok 840Varsayılan0daysintegerReads a window too: how far back it reaches. It starts at the beginning of its first
grainbucket and ends now. Leave it andminutesout for no window.En az 1En çok 1095minutesintegerThe window in minutes, which wins over
dayswhen both are sent.En az 1En çok 1576800
Döndürür
Totals, the window and the series.
Hatalar
- 404
broadcast_not_foundwhen the id names no broadcast in this workspace.- 422
invalid_parameterondays,minutesoroffsetMinutesout of range, or on an unknowngrain.
Her işlemin döndürebileceği hatalar400401403500Hata kataloğu
Şurada da var
POST/broadcasts/{id}/cancel
Cancel a broadcast
Stops a broadcast that is scheduled, queued or sending, including one that has reached everybody while some copies are still waiting to go. Nobody else is added, and every copy still waiting to go is cancelled. A copy already being handed over finishes, and copies that have gone cannot be recalled, so counts.sent keeps them. No body.
Cancelling a cancelled broadcast answers it as it stands, so a retry is safe.
A key limited to particular addresses or domains cancels only broadcasts sent from an address or domain it holds. Any other broadcast answers 404 broadcast_not_found, as if it did not exist.
Requires the emails:send scope.
Yol parametreleri
idstringZorunluA
brd_id fromPOST /broadcastsorGET /broadcasts.
Döndürür
The broadcast, now cancelled.
Hatalar
- 404
broadcast_not_foundwhen the id names no broadcast in this workspace.- 409
broadcast_not_cancellable: every copy has already gone out, or the broadcastfailed.
Her işlemin döndürebileceği hatalar400401403422500Hata kataloğu
Şurada da var
Nesneler
Broadcastobject
objectstring- Şunlardan biri
"broadcast" idstringThe durable handle,
brd_+ 24 hex.statusstringscheduledwaits forscheduledAt.queuedwaits for the sending to start.sendingis walking the audiences, or has finished walking them while copies are still waiting to go.sentmeans every copy handed over has been sent or settled.cancelledwas stopped byPOST /broadcasts/{id}/cancel.failedmeans the whole broadcast stopped: thefromaddress can no longer be sent from, the template stopped resolving, the plan ran out part way, the sending itself kept failing, or not one copy could be written, andlastErrorsays which.Şunlardan biri"scheduled""queued""sending""sent""cancelled""failed"modestringThe mode of the key that created it. A broadcast made with a test key sends its copies the way any test send goes: accepted and marked sent, and delivered to nobody.
Şunlardan biri"live""test"sourcestringWhere it was started:
apifor a key,oauthfor a connected app,composerfor the app,mcpfor an assistant.Şunlardan biri"api""oauth""composer""mcp""ai""form"audienceIdsstring[]The audiences it was sent to, each once.
fromstringThe address every copy is sent from.
subjectstringThe subject as written, merge fields and all, so it reads the same for every copy. Empty when a template supplies the subject.
countsBroadcastCountslastErrorstringWhy the broadcast failed, or the most recent copy that could not be written and why. Null while nothing has gone wrong.
null olabilirscheduledAtstringWhen the sending is due to start. Null for a broadcast sent straight away.
null olabilirBiçimdate-timestartedAtstringWhen the sending reached the first people. Null until then.
null olabilirBiçimdate-timecompletedAtstringWhen the last person was reached and every copy had been written. Copies can still be waiting to go after it, which is why
statuscan readsendingwith this set.null olabilirBiçimdate-timecancelledAtstring- null olabilirBiçim
date-time createdAtstring- Biçim
date-time updatedAtstring- Biçim
date-time
BroadcastAnalyticsobject
objectstring- Şunlardan biri
"broadcast_analytics" sincestringThe start of the window, floored to the start of its first bucket in the local time of
offsetMinutes.Biçimdate-timeuntilstringThe end of the window, the moment of the read.
Biçimdate-timegrainstring- Şunlardan biri
"minute""hour""day" offsetMinutesintegerThe offset the buckets were cut in, as sent or 0.
broadcastIdsstring[]The ids
totalsandseriescover, each once. Empty means every broadcast in the window.totalsobjectAdded up over the copies of the broadcasts in
broadcastIdsthat were sent inside the window.opened,clickedandunsubscribedcount people;opensandclickscount events.broadcastsintegerHow many broadcasts those copies belong to.
recipientsintegerpendingintegerCopies still queued, scheduled or sending.
sentintegerdeliveredintegerbouncedintegercomplainedintegerfailedintegerCopies that failed or were cancelled.
openedintegerclickedintegerunsubscribedintegeropensintegerclicksinteger
seriesobject[]SPARSE, oldest first: one bucket per
grainin which something happened to those copies, each counted once, at the first time it happened.bucketstringYYYY-MM-DD,YYYY-MM-DDTHHorYYYY-MM-DDTHH:MM, in the offset asked for.sentintegerdeliveredintegeropenedintegerclickedintegerunsubscribedinteger
broadcastsobject[]Every broadcast with a copy sent inside the window, newest first, whatever
broadcastIdspicks, each with the same counts over its copies in the window. Use it to compare broadcasts or to pick ids.idstringsubjectstringstatusstring- Şunlardan biri
"scheduled""queued""sending""sent""cancelled""failed" sentAtstringWhen it started sending, or when it was created if it has not.
Biçimdate-timerecipientsintegerpendingintegerCopies still queued, scheduled or sending.
sentintegerdeliveredintegerbouncedintegercomplainedintegerfailedintegerCopies that failed or were cancelled.
openedintegerclickedintegerunsubscribedintegeropensintegerclicksinteger
BroadcastCountsobject
Where the broadcast stands. The first four are kept by the sending itself; the last five are counted live from the copies, by the send status each one has now.
recipientsintegerThe estimate taken when the broadcast was created: the people it was expected to reach. It does not move afterwards, so contacts who join or leave while it sends make
createddiffer from it.createdintegerCopies written so far, one per person reached. Each is an ordinary email with its own
msg_id.skippedintegerPeople passed over while sending because their address was on the suppression list by the time the sending reached them.
failedToQueueintegerPeople whose copy could not be written at all.
lastErroron the broadcast names the most recent one and why.queuedintegerCopies waiting to be sent.
sendingintegerCopies being handed over right now.
sentintegerCopies that went out.
failedintegerCopies whose send failed.
GET /emails/{id}on one says why.cancelledintegerCopies a cancel stopped before they went.
BroadcastListobject
objectstring- Şunlardan biri
"list" dataBroadcast[]hasMorebooleanTrue when another page follows. Pass
nextCursorback ascursorto read it.nextCursorstringThe id of the last row on this page, or null on the last page.
null olabilir
BroadcastPreviewobject
objectstring- Şunlardan biri
"broadcast_preview" audienceIdsstring[]The audiences as sent.
recipientsintegerThe people a broadcast to these audiences would reach now. A contact in several of them counts once.
unsubscribedintegerContacts in these audiences who would be skipped because they have unsubscribed from every one of them they are in.
suppressedintegerSubscribed contacts who would be skipped because their address is on the suppression list after a bounce or a complaint, or because somebody added it there.
BroadcastRecipientobject
objectstring- Şunlardan biri
"broadcast_recipient" emailIdstringThe
msg_id of this person's copy.GET /emails/{id}reads it as a sent email.contactIdstringThe contact it went to, null if deleted since.
null olabiliremailstringThe address the copy went to.
namestring- null olabilir
statusstringThe status of the copy on the send log:
queued,scheduled,sending,sent,failedorcancelled.sentAtstring- null olabilirBiçim
date-time deliveredAtstringWhen the receiving server accepted it, the first
email.delivered.null olabilirBiçimdate-timebouncedAtstringWhen it bounced, the first
email.bounced.null olabilirBiçimdate-timecomplainedAtstringWhen the person reported it as spam, the first
email.complained.null olabilirBiçimdate-timefailurestringWhy the copy failed, when it did.
null olabiliropensintegerOpens recorded, without the ones image proxies and scanners make. 0 when tracking was off.
firstOpenAtstring- null olabilirBiçim
date-time clicksintegerClicks recorded on tracked links, without scanners.
firstClickAtstring- null olabilirBiçim
date-time unsubscribedAtstringWhen this person unsubscribed from one of the broadcast's audiences after it was sent, through its link or otherwise.
null olabilirBiçimdate-time
BroadcastRecipientContentobject
objectstring- Şunlardan biri
"broadcast_recipient" emailIdstringThe
msg_id of this person's copy.GET /emails/{id}reads it as a sent email.contactIdstringThe contact it went to, null if deleted since.
null olabiliremailstringThe address the copy went to.
namestring- null olabilir
statusstringThe status of the copy on the send log:
queued,scheduled,sending,sent,failedorcancelled.sentAtstring- null olabilirBiçim
date-time deliveredAtstringWhen the receiving server accepted it, the first
email.delivered.null olabilirBiçimdate-timebouncedAtstringWhen it bounced, the first
email.bounced.null olabilirBiçimdate-timecomplainedAtstringWhen the person reported it as spam, the first
email.complained.null olabilirBiçimdate-timefailurestringWhy the copy failed, when it did.
null olabiliropensintegerOpens recorded, without the ones image proxies and scanners make. 0 when tracking was off.
firstOpenAtstring- null olabilirBiçim
date-time clicksintegerClicks recorded on tracked links, without scanners.
firstClickAtstring- null olabilirBiçim
date-time unsubscribedAtstringWhen this person unsubscribed from one of the broadcast's audiences after it was sent, through its link or otherwise.
null olabilirBiçimdate-timesubjectstringThe subject as this person got it, merge fields filled in.
htmlstringThe HTML as this person got it, before open and click tracking was added.
null olabilirtextstring- null olabilir
BroadcastRecipientListobject
objectstring- Şunlardan biri
"list" hasMorebooleanTrue when another page follows. Pass
nextCursorback ascursorto read it.nextCursorstringAn opaque cursor for the next page, or null on the last page. Pass it back unchanged.
null olabilir
BroadcastStatsobject
objectstring- Şunlardan biri
"broadcast_stats" broadcastIdstringgrainstring- Şunlardan biri
"minute""hour""day" totalsobjectCounts over every copy.
opened,clickedandunsubscribedcount people;opensandclickscount events.recipientsintegerpendingintegerCopies still queued, scheduled or sending.
sentintegerdeliveredintegerbouncedintegercomplainedintegerfailedintegerCopies that failed or were cancelled.
openedintegerclickedintegerunsubscribedintegeropensintegerclicksinteger
windowobjectNull unless
daysorminuteswas sent. Each count is the copies whose first such event fell inside the window, so it tells you what changed lately, whiletotalskeeps the whole send.null olabilirsincestringThe start of the window, floored to the start of its first
grainbucket in the offset asked for. It ends now.Biçimdate-timedeliveredintegerbouncedintegercomplainedintegeropenedintegerclickedintegerunsubscribedinteger
seriesobject[]SPARSE, oldest first: one bucket per
grainin which something happened. Each counts people by the first time it happened to them. With a window, only the buckets inside it.bucketstringYYYY-MM-DD,YYYY-MM-DDTHHorYYYY-MM-DDTHH:MM, in the offset asked for.deliveredintegeropenedintegerclickedintegerunsubscribedinteger