11 operations. Guide: Send a broadcast to a segment. Requests and responses are JSON with snake_case fields; authenticate with Authorization: Bearer <api key>. The examples assume a client built as in SDKs and the command line.

Create a broadcast

POST /v1/broadcasts

A draft: from an address on a marketing domain, a subject (or an A/B test of two), a block document or HTML with contact properties as variables, and a segment or topic.

Operation createBroadcast, SDK minket.broadcasts.create. Keys: full access. Test keys work on test-mode data.

Request body

FieldTypeRequiredDescription
namestringyes1 to 200 characters.
fromstringnoAn email address, optionally with a display name as Name <address>. 3 to 998 characters.
reply_tostring or array of stringnoOne address, or an array of up to 50.
subjectstringnoAt most 998 characters.
preview_textstringnoAt most 500 characters.
segment_idstringnoA UUID.
topic_idstringnoA UUID.
documentobjectno
document.version1yes
document.settingsobjectnoDefault {"width":600,"background":"#f4f4f5","font":"system"}.
document.settings.widthintegerno320 to 800. Default 600.
document.settings.backgroundstringnoDefault "#f4f4f5".
document.settings.fontone of "system", "serif", "mono"noDefault "system".
document.settings.footerstringnoAt most 2000 characters.
document.blocksarray of objectyesAt most 200 items.
document.blocks[] (shape 1).type"heading"yes
document.blocks[] (shape 1).levelone of "1", "2", "3"noDefault "1".
document.blocks[] (shape 1).textstringyesAt most 20000 characters.
document.blocks[] (shape 1).styleobjectno
document.blocks[] (shape 1).style.colorstringno
document.blocks[] (shape 1).style.backgroundstringno
document.blocks[] (shape 1).style.alignone of "left", "center", "right"no
document.blocks[] (shape 1).style.paddingintegerno0 to 80.
document.blocks[] (shape 2).type"paragraph"yes
document.blocks[] (shape 2).textstringyesAt most 20000 characters.
document.blocks[] (shape 2).styleobjectno
document.blocks[] (shape 2).style.colorstringno
document.blocks[] (shape 2).style.backgroundstringno
document.blocks[] (shape 2).style.alignone of "left", "center", "right"no
document.blocks[] (shape 2).style.paddingintegerno0 to 80.
document.blocks[] (shape 3).type"image"yes
document.blocks[] (shape 3).srcstringyes
document.blocks[] (shape 3).altstringyesAt most 500 characters.
document.blocks[] (shape 3).hrefstringno
document.blocks[] (shape 3).widthintegerno16 to 1200.
document.blocks[] (shape 3).styleobjectno
document.blocks[] (shape 3).style.colorstringno
document.blocks[] (shape 3).style.backgroundstringno
document.blocks[] (shape 3).style.alignone of "left", "center", "right"no
document.blocks[] (shape 3).style.paddingintegerno0 to 80.
document.blocks[] (shape 4).type"button"yes
document.blocks[] (shape 4).labelstringyes1 to 200 characters.
document.blocks[] (shape 4).hrefstringyes
document.blocks[] (shape 4).styleobjectno
document.blocks[] (shape 4).style.colorstringno
document.blocks[] (shape 4).style.backgroundstringno
document.blocks[] (shape 4).style.alignone of "left", "center", "right"no
document.blocks[] (shape 4).style.paddingintegerno0 to 80.
document.blocks[] (shape 5).type"divider"yes
document.blocks[] (shape 5).styleobjectno
document.blocks[] (shape 5).style.colorstringno
document.blocks[] (shape 5).style.backgroundstringno
document.blocks[] (shape 5).style.alignone of "left", "center", "right"no
document.blocks[] (shape 5).style.paddingintegerno0 to 80.
document.blocks[] (shape 6).type"spacer"yes
document.blocks[] (shape 6).heightintegeryes4 to 200.
document.blocks[] (shape 7).type"html"yes
document.blocks[] (shape 7).htmlstringyesAt most 200000 characters.
document.blocks[] (shape 8).type"columns"yes
document.blocks[] (shape 8).columnsarray of objectyesAt most 3 items.
document.blocks[] (shape 8).columns[].blocksarray of objectyesAt most 20 items.
document.blocks[] (shape 8).styleobjectno
document.blocks[] (shape 8).style.colorstringno
document.blocks[] (shape 8).style.backgroundstringno
document.blocks[] (shape 8).style.alignone of "left", "center", "right"no
document.blocks[] (shape 8).style.paddingintegerno0 to 80.
htmlstringnoAt most 1048576 characters.
textstringnoAt most 1048576 characters.
throttle_per_minuteintegerno1 to 10000.
ab_testobjectno
ab_test.variantsarray of objectyes
ab_test.variants[].keyone of "a", "b"yes
ab_test.variants[].subjectstringyesAt most 998 characters.
ab_test.sample_percentintegeryes5 to 50.
ab_test.window_minutesintegeryes15 to 1440.
ab_test.metricone of "opens", "clicks"noDefault "opens".

Response

201 Created: Broadcast.

FieldTypeRequiredDescription
idstringyesA UUID.
object"broadcast"yes
project_idstringyesA UUID.
modeone of "live", "test"yes
namestringyes
fromstring or nullyes
reply_toarray of stringyes
subjectstring or nullyes
preview_textstring or nullyes
segment_idstring or nullyesA UUID.
topic_idstring or nullyesA UUID.
statusone of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused"yes
documentobject or nullyes
document.version1yes
document.settingsobjectnoDefault {"width":600,"background":"#f4f4f5","font":"system"}.
document.settings.widthintegerno320 to 800. Default 600.
document.settings.backgroundstringnoDefault "#f4f4f5".
document.settings.fontone of "system", "serif", "mono"noDefault "system".
document.settings.footerstringnoAt most 2000 characters.
document.blocksarray of objectyesAt most 200 items.
document.blocks[] (shape 1).type"heading"yes
document.blocks[] (shape 1).levelone of "1", "2", "3"noDefault "1".
document.blocks[] (shape 1).textstringyesAt most 20000 characters.
document.blocks[] (shape 1).styleobjectno
document.blocks[] (shape 1).style.colorstringno
document.blocks[] (shape 1).style.backgroundstringno
document.blocks[] (shape 1).style.alignone of "left", "center", "right"no
document.blocks[] (shape 1).style.paddingintegerno0 to 80.
document.blocks[] (shape 2).type"paragraph"yes
document.blocks[] (shape 2).textstringyesAt most 20000 characters.
document.blocks[] (shape 2).styleobjectno
document.blocks[] (shape 2).style.colorstringno
document.blocks[] (shape 2).style.backgroundstringno
document.blocks[] (shape 2).style.alignone of "left", "center", "right"no
document.blocks[] (shape 2).style.paddingintegerno0 to 80.
document.blocks[] (shape 3).type"image"yes
document.blocks[] (shape 3).srcstringyes
document.blocks[] (shape 3).altstringyesAt most 500 characters.
document.blocks[] (shape 3).hrefstringno
document.blocks[] (shape 3).widthintegerno16 to 1200.
document.blocks[] (shape 3).styleobjectno
document.blocks[] (shape 3).style.colorstringno
document.blocks[] (shape 3).style.backgroundstringno
document.blocks[] (shape 3).style.alignone of "left", "center", "right"no
document.blocks[] (shape 3).style.paddingintegerno0 to 80.
document.blocks[] (shape 4).type"button"yes
document.blocks[] (shape 4).labelstringyes1 to 200 characters.
document.blocks[] (shape 4).hrefstringyes
document.blocks[] (shape 4).styleobjectno
document.blocks[] (shape 4).style.colorstringno
document.blocks[] (shape 4).style.backgroundstringno
document.blocks[] (shape 4).style.alignone of "left", "center", "right"no
document.blocks[] (shape 4).style.paddingintegerno0 to 80.
document.blocks[] (shape 5).type"divider"yes
document.blocks[] (shape 5).styleobjectno
document.blocks[] (shape 5).style.colorstringno
document.blocks[] (shape 5).style.backgroundstringno
document.blocks[] (shape 5).style.alignone of "left", "center", "right"no
document.blocks[] (shape 5).style.paddingintegerno0 to 80.
document.blocks[] (shape 6).type"spacer"yes
document.blocks[] (shape 6).heightintegeryes4 to 200.
document.blocks[] (shape 7).type"html"yes
document.blocks[] (shape 7).htmlstringyesAt most 200000 characters.
document.blocks[] (shape 8).type"columns"yes
document.blocks[] (shape 8).columnsarray of objectyesAt most 3 items.
document.blocks[] (shape 8).columns[].blocksarray of objectyesAt most 20 items.
document.blocks[] (shape 8).styleobjectno
document.blocks[] (shape 8).style.colorstringno
document.blocks[] (shape 8).style.backgroundstringno
document.blocks[] (shape 8).style.alignone of "left", "center", "right"no
document.blocks[] (shape 8).style.paddingintegerno0 to 80.
htmlstring or nullyes
textstring or nullyes
throttle_per_minuteintegeryes
ab_testobject or nullyes
ab_test.variantsarray of objectyes
ab_test.variants[].keyone of "a", "b"yes
ab_test.variants[].subjectstringyesAt most 998 characters.
ab_test.sample_percentintegeryes5 to 50.
ab_test.window_minutesintegeryes15 to 1440.
ab_test.metricone of "opens", "clicks"noDefault "opens".
ab_test.winnerone of "a", "b", null or nullyes
ab_test.decided_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
ab_test.window_ends_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
ab_test.resultsarray of objectyes
ab_test.results[].keyone of "a", "b"yes
ab_test.results[].subjectstringyes
ab_test.results[].recipientsintegeryes
ab_test.results[].sentintegeryes
ab_test.results[].openedintegeryes
ab_test.results[].clickedintegeryes
statsobjectyes
stats.recipientsintegeryes
stats.sentintegeryes
stats.deliveredintegeryes
stats.openedintegeryes
stats.clickedintegeryes
stats.bouncedintegeryes
stats.complainedintegeryes
stats.unsubscribedintegeryes
stats.skippedintegeryes
stats.failedintegeryes
stats.pendingintegeryes
errorstring or nullyes
scheduled_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
started_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
sent_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
created_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
updated_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X POST https://api.minket.com/v1/broadcasts \
  -H "Authorization: Bearer $MINKET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"October news","from":"Acme News <news@news.acme.example>","subject":"What is new in October","segment_id":"019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b","html":"<p>Hello {{first_name}}, here is what changed.</p>"}'

List broadcasts

GET /v1/broadcasts

Operation listBroadcasts, SDK minket.broadcasts.list. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
limitqueryintegerno Default 20.
afterquerystringnoA UUID.
beforequerystringnoA UUID.

Response

200 Success: object.

FieldTypeRequiredDescription
object"list"yes
dataarray of objectyes
data[].idstringyesA UUID.
data[].object"broadcast"yes
data[].project_idstringyesA UUID.
data[].modeone of "live", "test"yes
data[].namestringyes
data[].fromstring or nullyes
data[].reply_toarray of stringyes
data[].subjectstring or nullyes
data[].preview_textstring or nullyes
data[].segment_idstring or nullyesA UUID.
data[].topic_idstring or nullyesA UUID.
data[].statusone of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused"yes
data[].throttle_per_minuteintegeryes
data[].ab_testobject or nullyes
data[].ab_test.variantsarray of objectyes
data[].ab_test.variants[].keyone of "a", "b"yes
data[].ab_test.variants[].subjectstringyesAt most 998 characters.
data[].ab_test.sample_percentintegeryes5 to 50.
data[].ab_test.window_minutesintegeryes15 to 1440.
data[].ab_test.metricone of "opens", "clicks"noDefault "opens".
data[].ab_test.winnerone of "a", "b", null or nullyes
data[].ab_test.decided_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
data[].ab_test.window_ends_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
data[].ab_test.resultsarray of objectyes
data[].ab_test.results[].keyone of "a", "b"yes
data[].ab_test.results[].subjectstringyes
data[].ab_test.results[].recipientsintegeryes
data[].ab_test.results[].sentintegeryes
data[].ab_test.results[].openedintegeryes
data[].ab_test.results[].clickedintegeryes
data[].statsobjectyes
data[].stats.recipientsintegeryes
data[].stats.sentintegeryes
data[].stats.deliveredintegeryes
data[].stats.openedintegeryes
data[].stats.clickedintegeryes
data[].stats.bouncedintegeryes
data[].stats.complainedintegeryes
data[].stats.unsubscribedintegeryes
data[].stats.skippedintegeryes
data[].stats.failedintegeryes
data[].stats.pendingintegeryes
data[].errorstring or nullyes
data[].scheduled_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
data[].started_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
data[].sent_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
data[].created_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
data[].updated_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
has_morebooleanyes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl https://api.minket.com/v1/broadcasts \
  -H "Authorization: Bearer $MINKET_API_KEY"

Get a broadcast, with its progress and analytics

GET /v1/broadcasts/{id}

Operation getBroadcast, SDK minket.broadcasts.get. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Response

200 Success: Broadcast.

FieldTypeRequiredDescription
idstringyesA UUID.
object"broadcast"yes
project_idstringyesA UUID.
modeone of "live", "test"yes
namestringyes
fromstring or nullyes
reply_toarray of stringyes
subjectstring or nullyes
preview_textstring or nullyes
segment_idstring or nullyesA UUID.
topic_idstring or nullyesA UUID.
statusone of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused"yes
documentobject or nullyes
document.version1yes
document.settingsobjectnoDefault {"width":600,"background":"#f4f4f5","font":"system"}.
document.settings.widthintegerno320 to 800. Default 600.
document.settings.backgroundstringnoDefault "#f4f4f5".
document.settings.fontone of "system", "serif", "mono"noDefault "system".
document.settings.footerstringnoAt most 2000 characters.
document.blocksarray of objectyesAt most 200 items.
document.blocks[] (shape 1).type"heading"yes
document.blocks[] (shape 1).levelone of "1", "2", "3"noDefault "1".
document.blocks[] (shape 1).textstringyesAt most 20000 characters.
document.blocks[] (shape 1).styleobjectno
document.blocks[] (shape 1).style.colorstringno
document.blocks[] (shape 1).style.backgroundstringno
document.blocks[] (shape 1).style.alignone of "left", "center", "right"no
document.blocks[] (shape 1).style.paddingintegerno0 to 80.
document.blocks[] (shape 2).type"paragraph"yes
document.blocks[] (shape 2).textstringyesAt most 20000 characters.
document.blocks[] (shape 2).styleobjectno
document.blocks[] (shape 2).style.colorstringno
document.blocks[] (shape 2).style.backgroundstringno
document.blocks[] (shape 2).style.alignone of "left", "center", "right"no
document.blocks[] (shape 2).style.paddingintegerno0 to 80.
document.blocks[] (shape 3).type"image"yes
document.blocks[] (shape 3).srcstringyes
document.blocks[] (shape 3).altstringyesAt most 500 characters.
document.blocks[] (shape 3).hrefstringno
document.blocks[] (shape 3).widthintegerno16 to 1200.
document.blocks[] (shape 3).styleobjectno
document.blocks[] (shape 3).style.colorstringno
document.blocks[] (shape 3).style.backgroundstringno
document.blocks[] (shape 3).style.alignone of "left", "center", "right"no
document.blocks[] (shape 3).style.paddingintegerno0 to 80.
document.blocks[] (shape 4).type"button"yes
document.blocks[] (shape 4).labelstringyes1 to 200 characters.
document.blocks[] (shape 4).hrefstringyes
document.blocks[] (shape 4).styleobjectno
document.blocks[] (shape 4).style.colorstringno
document.blocks[] (shape 4).style.backgroundstringno
document.blocks[] (shape 4).style.alignone of "left", "center", "right"no
document.blocks[] (shape 4).style.paddingintegerno0 to 80.
document.blocks[] (shape 5).type"divider"yes
document.blocks[] (shape 5).styleobjectno
document.blocks[] (shape 5).style.colorstringno
document.blocks[] (shape 5).style.backgroundstringno
document.blocks[] (shape 5).style.alignone of "left", "center", "right"no
document.blocks[] (shape 5).style.paddingintegerno0 to 80.
document.blocks[] (shape 6).type"spacer"yes
document.blocks[] (shape 6).heightintegeryes4 to 200.
document.blocks[] (shape 7).type"html"yes
document.blocks[] (shape 7).htmlstringyesAt most 200000 characters.
document.blocks[] (shape 8).type"columns"yes
document.blocks[] (shape 8).columnsarray of objectyesAt most 3 items.
document.blocks[] (shape 8).columns[].blocksarray of objectyesAt most 20 items.
document.blocks[] (shape 8).styleobjectno
document.blocks[] (shape 8).style.colorstringno
document.blocks[] (shape 8).style.backgroundstringno
document.blocks[] (shape 8).style.alignone of "left", "center", "right"no
document.blocks[] (shape 8).style.paddingintegerno0 to 80.
htmlstring or nullyes
textstring or nullyes
throttle_per_minuteintegeryes
ab_testobject or nullyes
ab_test.variantsarray of objectyes
ab_test.variants[].keyone of "a", "b"yes
ab_test.variants[].subjectstringyesAt most 998 characters.
ab_test.sample_percentintegeryes5 to 50.
ab_test.window_minutesintegeryes15 to 1440.
ab_test.metricone of "opens", "clicks"noDefault "opens".
ab_test.winnerone of "a", "b", null or nullyes
ab_test.decided_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
ab_test.window_ends_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
ab_test.resultsarray of objectyes
ab_test.results[].keyone of "a", "b"yes
ab_test.results[].subjectstringyes
ab_test.results[].recipientsintegeryes
ab_test.results[].sentintegeryes
ab_test.results[].openedintegeryes
ab_test.results[].clickedintegeryes
statsobjectyes
stats.recipientsintegeryes
stats.sentintegeryes
stats.deliveredintegeryes
stats.openedintegeryes
stats.clickedintegeryes
stats.bouncedintegeryes
stats.complainedintegeryes
stats.unsubscribedintegeryes
stats.skippedintegeryes
stats.failedintegeryes
stats.pendingintegeryes
errorstring or nullyes
scheduled_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
started_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
sent_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
created_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
updated_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b \
  -H "Authorization: Bearer $MINKET_API_KEY"

Update a draft broadcast

PATCH /v1/broadcasts/{id}

Operation updateBroadcast, SDK minket.broadcasts.update. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Request body

FieldTypeRequiredDescription
namestringno1 to 200 characters.
fromstringnoAn email address, optionally with a display name as Name <address>. 3 to 998 characters.
reply_tostring or array of string or nullnoOne address, or an array of up to 50.
subjectstring or nullnoAt most 998 characters.
preview_textstring or nullnoAt most 500 characters.
segment_idstring or nullnoA UUID.
topic_idstring or nullnoA UUID.
documentobject or nullno
document.version1yes
document.settingsobjectnoDefault {"width":600,"background":"#f4f4f5","font":"system"}.
document.settings.widthintegerno320 to 800. Default 600.
document.settings.backgroundstringnoDefault "#f4f4f5".
document.settings.fontone of "system", "serif", "mono"noDefault "system".
document.settings.footerstringnoAt most 2000 characters.
document.blocksarray of objectyesAt most 200 items.
document.blocks[] (shape 1).type"heading"yes
document.blocks[] (shape 1).levelone of "1", "2", "3"noDefault "1".
document.blocks[] (shape 1).textstringyesAt most 20000 characters.
document.blocks[] (shape 1).styleobjectno
document.blocks[] (shape 1).style.colorstringno
document.blocks[] (shape 1).style.backgroundstringno
document.blocks[] (shape 1).style.alignone of "left", "center", "right"no
document.blocks[] (shape 1).style.paddingintegerno0 to 80.
document.blocks[] (shape 2).type"paragraph"yes
document.blocks[] (shape 2).textstringyesAt most 20000 characters.
document.blocks[] (shape 2).styleobjectno
document.blocks[] (shape 2).style.colorstringno
document.blocks[] (shape 2).style.backgroundstringno
document.blocks[] (shape 2).style.alignone of "left", "center", "right"no
document.blocks[] (shape 2).style.paddingintegerno0 to 80.
document.blocks[] (shape 3).type"image"yes
document.blocks[] (shape 3).srcstringyes
document.blocks[] (shape 3).altstringyesAt most 500 characters.
document.blocks[] (shape 3).hrefstringno
document.blocks[] (shape 3).widthintegerno16 to 1200.
document.blocks[] (shape 3).styleobjectno
document.blocks[] (shape 3).style.colorstringno
document.blocks[] (shape 3).style.backgroundstringno
document.blocks[] (shape 3).style.alignone of "left", "center", "right"no
document.blocks[] (shape 3).style.paddingintegerno0 to 80.
document.blocks[] (shape 4).type"button"yes
document.blocks[] (shape 4).labelstringyes1 to 200 characters.
document.blocks[] (shape 4).hrefstringyes
document.blocks[] (shape 4).styleobjectno
document.blocks[] (shape 4).style.colorstringno
document.blocks[] (shape 4).style.backgroundstringno
document.blocks[] (shape 4).style.alignone of "left", "center", "right"no
document.blocks[] (shape 4).style.paddingintegerno0 to 80.
document.blocks[] (shape 5).type"divider"yes
document.blocks[] (shape 5).styleobjectno
document.blocks[] (shape 5).style.colorstringno
document.blocks[] (shape 5).style.backgroundstringno
document.blocks[] (shape 5).style.alignone of "left", "center", "right"no
document.blocks[] (shape 5).style.paddingintegerno0 to 80.
document.blocks[] (shape 6).type"spacer"yes
document.blocks[] (shape 6).heightintegeryes4 to 200.
document.blocks[] (shape 7).type"html"yes
document.blocks[] (shape 7).htmlstringyesAt most 200000 characters.
document.blocks[] (shape 8).type"columns"yes
document.blocks[] (shape 8).columnsarray of objectyesAt most 3 items.
document.blocks[] (shape 8).columns[].blocksarray of objectyesAt most 20 items.
document.blocks[] (shape 8).styleobjectno
document.blocks[] (shape 8).style.colorstringno
document.blocks[] (shape 8).style.backgroundstringno
document.blocks[] (shape 8).style.alignone of "left", "center", "right"no
document.blocks[] (shape 8).style.paddingintegerno0 to 80.
htmlstring or nullnoAt most 1048576 characters.
textstring or nullnoAt most 1048576 characters.
throttle_per_minuteintegerno1 to 10000.
ab_testobject or nullno
ab_test.variantsarray of objectyes
ab_test.variants[].keyone of "a", "b"yes
ab_test.variants[].subjectstringyesAt most 998 characters.
ab_test.sample_percentintegeryes5 to 50.
ab_test.window_minutesintegeryes15 to 1440.
ab_test.metricone of "opens", "clicks"noDefault "opens".

Response

200 Success: Broadcast.

FieldTypeRequiredDescription
idstringyesA UUID.
object"broadcast"yes
project_idstringyesA UUID.
modeone of "live", "test"yes
namestringyes
fromstring or nullyes
reply_toarray of stringyes
subjectstring or nullyes
preview_textstring or nullyes
segment_idstring or nullyesA UUID.
topic_idstring or nullyesA UUID.
statusone of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused"yes
documentobject or nullyes
document.version1yes
document.settingsobjectnoDefault {"width":600,"background":"#f4f4f5","font":"system"}.
document.settings.widthintegerno320 to 800. Default 600.
document.settings.backgroundstringnoDefault "#f4f4f5".
document.settings.fontone of "system", "serif", "mono"noDefault "system".
document.settings.footerstringnoAt most 2000 characters.
document.blocksarray of objectyesAt most 200 items.
document.blocks[] (shape 1).type"heading"yes
document.blocks[] (shape 1).levelone of "1", "2", "3"noDefault "1".
document.blocks[] (shape 1).textstringyesAt most 20000 characters.
document.blocks[] (shape 1).styleobjectno
document.blocks[] (shape 1).style.colorstringno
document.blocks[] (shape 1).style.backgroundstringno
document.blocks[] (shape 1).style.alignone of "left", "center", "right"no
document.blocks[] (shape 1).style.paddingintegerno0 to 80.
document.blocks[] (shape 2).type"paragraph"yes
document.blocks[] (shape 2).textstringyesAt most 20000 characters.
document.blocks[] (shape 2).styleobjectno
document.blocks[] (shape 2).style.colorstringno
document.blocks[] (shape 2).style.backgroundstringno
document.blocks[] (shape 2).style.alignone of "left", "center", "right"no
document.blocks[] (shape 2).style.paddingintegerno0 to 80.
document.blocks[] (shape 3).type"image"yes
document.blocks[] (shape 3).srcstringyes
document.blocks[] (shape 3).altstringyesAt most 500 characters.
document.blocks[] (shape 3).hrefstringno
document.blocks[] (shape 3).widthintegerno16 to 1200.
document.blocks[] (shape 3).styleobjectno
document.blocks[] (shape 3).style.colorstringno
document.blocks[] (shape 3).style.backgroundstringno
document.blocks[] (shape 3).style.alignone of "left", "center", "right"no
document.blocks[] (shape 3).style.paddingintegerno0 to 80.
document.blocks[] (shape 4).type"button"yes
document.blocks[] (shape 4).labelstringyes1 to 200 characters.
document.blocks[] (shape 4).hrefstringyes
document.blocks[] (shape 4).styleobjectno
document.blocks[] (shape 4).style.colorstringno
document.blocks[] (shape 4).style.backgroundstringno
document.blocks[] (shape 4).style.alignone of "left", "center", "right"no
document.blocks[] (shape 4).style.paddingintegerno0 to 80.
document.blocks[] (shape 5).type"divider"yes
document.blocks[] (shape 5).styleobjectno
document.blocks[] (shape 5).style.colorstringno
document.blocks[] (shape 5).style.backgroundstringno
document.blocks[] (shape 5).style.alignone of "left", "center", "right"no
document.blocks[] (shape 5).style.paddingintegerno0 to 80.
document.blocks[] (shape 6).type"spacer"yes
document.blocks[] (shape 6).heightintegeryes4 to 200.
document.blocks[] (shape 7).type"html"yes
document.blocks[] (shape 7).htmlstringyesAt most 200000 characters.
document.blocks[] (shape 8).type"columns"yes
document.blocks[] (shape 8).columnsarray of objectyesAt most 3 items.
document.blocks[] (shape 8).columns[].blocksarray of objectyesAt most 20 items.
document.blocks[] (shape 8).styleobjectno
document.blocks[] (shape 8).style.colorstringno
document.blocks[] (shape 8).style.backgroundstringno
document.blocks[] (shape 8).style.alignone of "left", "center", "right"no
document.blocks[] (shape 8).style.paddingintegerno0 to 80.
htmlstring or nullyes
textstring or nullyes
throttle_per_minuteintegeryes
ab_testobject or nullyes
ab_test.variantsarray of objectyes
ab_test.variants[].keyone of "a", "b"yes
ab_test.variants[].subjectstringyesAt most 998 characters.
ab_test.sample_percentintegeryes5 to 50.
ab_test.window_minutesintegeryes15 to 1440.
ab_test.metricone of "opens", "clicks"noDefault "opens".
ab_test.winnerone of "a", "b", null or nullyes
ab_test.decided_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
ab_test.window_ends_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
ab_test.resultsarray of objectyes
ab_test.results[].keyone of "a", "b"yes
ab_test.results[].subjectstringyes
ab_test.results[].recipientsintegeryes
ab_test.results[].sentintegeryes
ab_test.results[].openedintegeryes
ab_test.results[].clickedintegeryes
statsobjectyes
stats.recipientsintegeryes
stats.sentintegeryes
stats.deliveredintegeryes
stats.openedintegeryes
stats.clickedintegeryes
stats.bouncedintegeryes
stats.complainedintegeryes
stats.unsubscribedintegeryes
stats.skippedintegeryes
stats.failedintegeryes
stats.pendingintegeryes
errorstring or nullyes
scheduled_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
started_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
sent_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
created_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
updated_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X PATCH https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b \
  -H "Authorization: Bearer $MINKET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"subject":"What is new this October"}'

Delete a draft broadcast

DELETE /v1/broadcasts/{id}

Drafts, canceled and failed broadcasts; a scheduled one is canceled first.

Operation deleteBroadcast, SDK minket.broadcasts.delete. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Response

200 Success: object.

FieldTypeRequiredDescription
object"broadcast"yes
idstringyes
deletedtrueyes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X DELETE https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b \
  -H "Authorization: Bearer $MINKET_API_KEY"

Send or schedule a broadcast

POST /v1/broadcasts/{id}/send

Sends a draft now or at scheduled_at, and resumes a paused one. When sending starts the audience is resolved to a recipient snapshot (subscribed, not suppressed); consent and suppression are checked again for each recipient, and sends are throttled per domain.

Operation sendBroadcast, SDK minket.broadcasts.send. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Request body

FieldTypeRequiredDescription
scheduled_atstringnoAt most 100 characters.

Response

202 Queued: object.

FieldTypeRequiredDescription
object"broadcast"yes
idstringyesA UUID.
statusone of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused"yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X POST https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b/send \
  -H "Authorization: Bearer $MINKET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scheduled_at":"tomorrow at 9am"}'

Cancel a scheduled or sending broadcast

POST /v1/broadcasts/{id}/cancel

Operation cancelBroadcast, SDK minket.broadcasts.cancel. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Response

200 Success: object.

FieldTypeRequiredDescription
object"broadcast"yes
idstringyesA UUID.
statusone of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused"yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X POST https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b/cancel \
  -H "Authorization: Bearer $MINKET_API_KEY"

Duplicate a broadcast

POST /v1/broadcasts/{id}/duplicate

A new draft named <name> (copy) with the broadcast's sender, subject, audience, content, throttle and A/B test settings, whatever its status. Nothing about sending carries over.

Operation duplicateBroadcast, SDK minket.broadcasts.duplicate. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Response

201 Created: Broadcast.

FieldTypeRequiredDescription
idstringyesA UUID.
object"broadcast"yes
project_idstringyesA UUID.
modeone of "live", "test"yes
namestringyes
fromstring or nullyes
reply_toarray of stringyes
subjectstring or nullyes
preview_textstring or nullyes
segment_idstring or nullyesA UUID.
topic_idstring or nullyesA UUID.
statusone of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused"yes
documentobject or nullyes
document.version1yes
document.settingsobjectnoDefault {"width":600,"background":"#f4f4f5","font":"system"}.
document.settings.widthintegerno320 to 800. Default 600.
document.settings.backgroundstringnoDefault "#f4f4f5".
document.settings.fontone of "system", "serif", "mono"noDefault "system".
document.settings.footerstringnoAt most 2000 characters.
document.blocksarray of objectyesAt most 200 items.
document.blocks[] (shape 1).type"heading"yes
document.blocks[] (shape 1).levelone of "1", "2", "3"noDefault "1".
document.blocks[] (shape 1).textstringyesAt most 20000 characters.
document.blocks[] (shape 1).styleobjectno
document.blocks[] (shape 1).style.colorstringno
document.blocks[] (shape 1).style.backgroundstringno
document.blocks[] (shape 1).style.alignone of "left", "center", "right"no
document.blocks[] (shape 1).style.paddingintegerno0 to 80.
document.blocks[] (shape 2).type"paragraph"yes
document.blocks[] (shape 2).textstringyesAt most 20000 characters.
document.blocks[] (shape 2).styleobjectno
document.blocks[] (shape 2).style.colorstringno
document.blocks[] (shape 2).style.backgroundstringno
document.blocks[] (shape 2).style.alignone of "left", "center", "right"no
document.blocks[] (shape 2).style.paddingintegerno0 to 80.
document.blocks[] (shape 3).type"image"yes
document.blocks[] (shape 3).srcstringyes
document.blocks[] (shape 3).altstringyesAt most 500 characters.
document.blocks[] (shape 3).hrefstringno
document.blocks[] (shape 3).widthintegerno16 to 1200.
document.blocks[] (shape 3).styleobjectno
document.blocks[] (shape 3).style.colorstringno
document.blocks[] (shape 3).style.backgroundstringno
document.blocks[] (shape 3).style.alignone of "left", "center", "right"no
document.blocks[] (shape 3).style.paddingintegerno0 to 80.
document.blocks[] (shape 4).type"button"yes
document.blocks[] (shape 4).labelstringyes1 to 200 characters.
document.blocks[] (shape 4).hrefstringyes
document.blocks[] (shape 4).styleobjectno
document.blocks[] (shape 4).style.colorstringno
document.blocks[] (shape 4).style.backgroundstringno
document.blocks[] (shape 4).style.alignone of "left", "center", "right"no
document.blocks[] (shape 4).style.paddingintegerno0 to 80.
document.blocks[] (shape 5).type"divider"yes
document.blocks[] (shape 5).styleobjectno
document.blocks[] (shape 5).style.colorstringno
document.blocks[] (shape 5).style.backgroundstringno
document.blocks[] (shape 5).style.alignone of "left", "center", "right"no
document.blocks[] (shape 5).style.paddingintegerno0 to 80.
document.blocks[] (shape 6).type"spacer"yes
document.blocks[] (shape 6).heightintegeryes4 to 200.
document.blocks[] (shape 7).type"html"yes
document.blocks[] (shape 7).htmlstringyesAt most 200000 characters.
document.blocks[] (shape 8).type"columns"yes
document.blocks[] (shape 8).columnsarray of objectyesAt most 3 items.
document.blocks[] (shape 8).columns[].blocksarray of objectyesAt most 20 items.
document.blocks[] (shape 8).styleobjectno
document.blocks[] (shape 8).style.colorstringno
document.blocks[] (shape 8).style.backgroundstringno
document.blocks[] (shape 8).style.alignone of "left", "center", "right"no
document.blocks[] (shape 8).style.paddingintegerno0 to 80.
htmlstring or nullyes
textstring or nullyes
throttle_per_minuteintegeryes
ab_testobject or nullyes
ab_test.variantsarray of objectyes
ab_test.variants[].keyone of "a", "b"yes
ab_test.variants[].subjectstringyesAt most 998 characters.
ab_test.sample_percentintegeryes5 to 50.
ab_test.window_minutesintegeryes15 to 1440.
ab_test.metricone of "opens", "clicks"noDefault "opens".
ab_test.winnerone of "a", "b", null or nullyes
ab_test.decided_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
ab_test.window_ends_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
ab_test.resultsarray of objectyes
ab_test.results[].keyone of "a", "b"yes
ab_test.results[].subjectstringyes
ab_test.results[].recipientsintegeryes
ab_test.results[].sentintegeryes
ab_test.results[].openedintegeryes
ab_test.results[].clickedintegeryes
statsobjectyes
stats.recipientsintegeryes
stats.sentintegeryes
stats.deliveredintegeryes
stats.openedintegeryes
stats.clickedintegeryes
stats.bouncedintegeryes
stats.complainedintegeryes
stats.unsubscribedintegeryes
stats.skippedintegeryes
stats.failedintegeryes
stats.pendingintegeryes
errorstring or nullyes
scheduled_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
started_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
sent_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
created_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
updated_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X POST https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b/duplicate \
  -H "Authorization: Bearer $MINKET_API_KEY"

Send a test copy to up to five addresses

POST /v1/broadcasts/{id}/test

Separate emails with the broadcast's current content, outside its analytics. Addresses that are contacts get their own variables.

Operation testBroadcast, SDK minket.broadcasts.test. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Request body

FieldTypeRequiredDescription
toarray of stringyesAt most 5 items.

Response

202 Queued: object.

FieldTypeRequiredDescription
object"broadcast"yes
idstringyesA UUID.
statusone of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused"yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X POST https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b/test \
  -H "Authorization: Bearer $MINKET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to":["jane@example.com"]}'

List a broadcast's recipients and their status

GET /v1/broadcasts/{id}/recipients

Newest contact first. event keeps the recipients whose email had that event (unsubscribed: who left since; suppressed: skipped or refused as suppressed) and adds count for opens and clicks, clicked_links for clicks and bounce_type for bounces. email matches part of the address.

Operation listBroadcastRecipients, SDK minket.broadcasts.recipients. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.
limitqueryintegerno Default 20.
afterquerystringnoA UUID.
beforequerystringnoA UUID.
statusqueryone of "pending", "sent", "skipped", "failed"no
eventqueryone of "sent", "delivered", "opened", "clicked", "bounced", "complained", "unsubscribed", "suppressed"no
emailquerystringno
bounce_typequeryone of "permanent", "transient", "undetermined"no

Response

200 Success: object.

FieldTypeRequiredDescription
object"list"yes
dataarray of objectyes
data[].contact_idstringyesA UUID.
data[].emailstringyes
data[].email_idstring or nullyesA UUID.
data[].variantone of "a", "b", null or nullyes
data[].statusone of "pending", "sent", "skipped", "failed"yes
data[].skipped_reasonstring or nullyes
data[].sent_atstring (date-time) or nullyesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
data[].countintegerno
data[].clicked_linksarray of objectno
data[].clicked_links[].urlstringyes
data[].clicked_links[].clicksintegeryes
data[].bounce_typeone of "permanent", "transient", "undetermined"no
has_morebooleanyes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b/recipients \
  -H "Authorization: Bearer $MINKET_API_KEY"

GET /v1/broadcasts/{id}/links

Most clicked first, with clicks (each recipient once a day per link) and unique_clicks (recipients). Page with a link's id as after or before.

Operation listBroadcastLinks, SDK minket.broadcasts.links. Keys: full access. Test keys work on test-mode data.

NameInTypeRequiredDescription
idpathstringyesA UUID.
limitqueryintegerno Default 20.
afterquerystringno
beforequerystringno

200 Success: object.

FieldTypeRequiredDescription
object"list"yes
dataarray of objectyes
data[].idstringyes
data[].urlstringyes
data[].clicksintegeryes
data[].unique_clicksintegeryes
has_morebooleanyes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Updated