Broadcasts API
Marketing sends to a segment: drafts, scheduling, A/B tests and recipients.
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.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | 1 to 200 characters. |
from | string | no | An email address, optionally with a display name as Name <address>. 3 to 998 characters. |
reply_to | string or array of string | no | One address, or an array of up to 50. |
subject | string | no | At most 998 characters. |
preview_text | string | no | At most 500 characters. |
segment_id | string | no | A UUID. |
topic_id | string | no | A UUID. |
document | object | no | |
document. | 1 | yes | |
document. | object | no | Default {"width":600,"background":"#f4f4f5","font":"system"}. |
document. | integer | no | 320 to 800. Default 600. |
document. | string | no | Default "#f4f4f5". |
document. | one of "system", "serif", "mono" | no | Default "system". |
document. | string | no | At most 2000 characters. |
document. | array of object | yes | At most 200 items. |
document. | "heading" | yes | |
document. | one of "1", "2", "3" | no | Default "1". |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "paragraph" | yes | |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "image" | yes | |
document. | string | yes | |
document. | string | yes | At most 500 characters. |
document. | string | no | |
document. | integer | no | 16 to 1200. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "button" | yes | |
document. | string | yes | 1 to 200 characters. |
document. | string | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "divider" | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "spacer" | yes | |
document. | integer | yes | 4 to 200. |
document. | "html" | yes | |
document. | string | yes | At most 200000 characters. |
document. | "columns" | yes | |
document. | array of object | yes | At most 3 items. |
document. | array of object | yes | At most 20 items. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
html | string | no | At most 1048576 characters. |
text | string | no | At most 1048576 characters. |
throttle_per_minute | integer | no | 1 to 10000. |
ab_test | object | no | |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | At most 998 characters. |
ab_test. | integer | yes | 5 to 50. |
ab_test. | integer | yes | 15 to 1440. |
ab_test. | one of "opens", "clicks" | no | Default "opens". |
Response
201 Created: Broadcast.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | A UUID. |
object | "broadcast" | yes | |
project_id | string | yes | A UUID. |
mode | one of "live", "test" | yes | |
name | string | yes | |
from | string or null | yes | |
reply_to | array of string | yes | |
subject | string or null | yes | |
preview_text | string or null | yes | |
segment_id | string or null | yes | A UUID. |
topic_id | string or null | yes | A UUID. |
status | one of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused" | yes | |
document | object or null | yes | |
document. | 1 | yes | |
document. | object | no | Default {"width":600,"background":"#f4f4f5","font":"system"}. |
document. | integer | no | 320 to 800. Default 600. |
document. | string | no | Default "#f4f4f5". |
document. | one of "system", "serif", "mono" | no | Default "system". |
document. | string | no | At most 2000 characters. |
document. | array of object | yes | At most 200 items. |
document. | "heading" | yes | |
document. | one of "1", "2", "3" | no | Default "1". |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "paragraph" | yes | |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "image" | yes | |
document. | string | yes | |
document. | string | yes | At most 500 characters. |
document. | string | no | |
document. | integer | no | 16 to 1200. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "button" | yes | |
document. | string | yes | 1 to 200 characters. |
document. | string | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "divider" | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "spacer" | yes | |
document. | integer | yes | 4 to 200. |
document. | "html" | yes | |
document. | string | yes | At most 200000 characters. |
document. | "columns" | yes | |
document. | array of object | yes | At most 3 items. |
document. | array of object | yes | At most 20 items. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
html | string or null | yes | |
text | string or null | yes | |
throttle_per_minute | integer | yes | |
ab_test | object or null | yes | |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | At most 998 characters. |
ab_test. | integer | yes | 5 to 50. |
ab_test. | integer | yes | 15 to 1440. |
ab_test. | one of "opens", "clicks" | no | Default "opens". |
ab_test. | one of "a", "b", null or null | yes | |
ab_test. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
ab_test. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
stats | object | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
error | string or null | yes | |
scheduled_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
started_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
sent_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
created_at | string (date-time) | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
updated_at | string (date-time) | yes | An 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 -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>"}'const result = await minket.broadcasts.create({
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>"
});minket api createBroadcast --body '{"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>"}'from minket.api.broadcasts import create_broadcast
from minket.models import CreateBroadcastBody
result = create_broadcast.sync(client=client, body=CreateBroadcastBody.from_dict({"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>"}))var body minket.CreateBroadcastJSONRequestBody
res, err := client.CreateBroadcastWithResponse(ctx, body)List broadcasts
GET /v1/broadcasts
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | no | Default 20. |
after | query | string | no | A UUID. |
before | query | string | no | A UUID. |
Response
200 Success: object.
| Field | Type | Required | Description |
|---|---|---|---|
object | "list" | yes | |
data | array of object | yes | |
data[]. | string | yes | A UUID. |
data[]. | "broadcast" | yes | |
data[]. | string | yes | A UUID. |
data[]. | one of "live", "test" | yes | |
data[]. | string | yes | |
data[]. | string or null | yes | |
data[]. | array of string | yes | |
data[]. | string or null | yes | |
data[]. | string or null | yes | |
data[]. | string or null | yes | A UUID. |
data[]. | string or null | yes | A UUID. |
data[]. | one of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused" | yes | |
data[]. | integer | yes | |
data[]. | object or null | yes | |
data[]. | array of object | yes | |
data[]. | one of "a", "b" | yes | |
data[]. | string | yes | At most 998 characters. |
data[]. | integer | yes | 5 to 50. |
data[]. | integer | yes | 15 to 1440. |
data[]. | one of "opens", "clicks" | no | Default "opens". |
data[]. | one of "a", "b", null or null | yes | |
data[]. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
data[]. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
data[]. | array of object | yes | |
data[]. | one of "a", "b" | yes | |
data[]. | string | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | object | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
data[]. | string or null | yes | |
data[]. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
data[]. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
data[]. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
data[]. | string (date-time) | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
data[]. | string (date-time) | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
has_more | boolean | yes |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.
Examples
curl https://api.minket.com/v1/broadcasts \
-H "Authorization: Bearer $MINKET_API_KEY"const result = await minket.broadcasts.list();minket api listBroadcastsfrom minket.api.broadcasts import list_broadcasts
result = list_broadcasts.sync(client=client)res, err := client.ListBroadcastsWithResponse(ctx, &minket.ListBroadcastsParams{})Get a broadcast, with its progress and analytics
GET /v1/broadcasts/{id}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
Response
200 Success: Broadcast.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | A UUID. |
object | "broadcast" | yes | |
project_id | string | yes | A UUID. |
mode | one of "live", "test" | yes | |
name | string | yes | |
from | string or null | yes | |
reply_to | array of string | yes | |
subject | string or null | yes | |
preview_text | string or null | yes | |
segment_id | string or null | yes | A UUID. |
topic_id | string or null | yes | A UUID. |
status | one of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused" | yes | |
document | object or null | yes | |
document. | 1 | yes | |
document. | object | no | Default {"width":600,"background":"#f4f4f5","font":"system"}. |
document. | integer | no | 320 to 800. Default 600. |
document. | string | no | Default "#f4f4f5". |
document. | one of "system", "serif", "mono" | no | Default "system". |
document. | string | no | At most 2000 characters. |
document. | array of object | yes | At most 200 items. |
document. | "heading" | yes | |
document. | one of "1", "2", "3" | no | Default "1". |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "paragraph" | yes | |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "image" | yes | |
document. | string | yes | |
document. | string | yes | At most 500 characters. |
document. | string | no | |
document. | integer | no | 16 to 1200. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "button" | yes | |
document. | string | yes | 1 to 200 characters. |
document. | string | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "divider" | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "spacer" | yes | |
document. | integer | yes | 4 to 200. |
document. | "html" | yes | |
document. | string | yes | At most 200000 characters. |
document. | "columns" | yes | |
document. | array of object | yes | At most 3 items. |
document. | array of object | yes | At most 20 items. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
html | string or null | yes | |
text | string or null | yes | |
throttle_per_minute | integer | yes | |
ab_test | object or null | yes | |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | At most 998 characters. |
ab_test. | integer | yes | 5 to 50. |
ab_test. | integer | yes | 15 to 1440. |
ab_test. | one of "opens", "clicks" | no | Default "opens". |
ab_test. | one of "a", "b", null or null | yes | |
ab_test. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
ab_test. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
stats | object | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
error | string or null | yes | |
scheduled_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
started_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
sent_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
created_at | string (date-time) | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
updated_at | string (date-time) | yes | An 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 https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b \
-H "Authorization: Bearer $MINKET_API_KEY"const result = await minket.broadcasts.get("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b");minket api getBroadcast 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5bfrom minket.api.broadcasts import get_broadcast
result = get_broadcast.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client)res, err := client.GetBroadcastWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b")Update a draft broadcast
PATCH /v1/broadcasts/{id}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | no | 1 to 200 characters. |
from | string | no | An email address, optionally with a display name as Name <address>. 3 to 998 characters. |
reply_to | string or array of string or null | no | One address, or an array of up to 50. |
subject | string or null | no | At most 998 characters. |
preview_text | string or null | no | At most 500 characters. |
segment_id | string or null | no | A UUID. |
topic_id | string or null | no | A UUID. |
document | object or null | no | |
document. | 1 | yes | |
document. | object | no | Default {"width":600,"background":"#f4f4f5","font":"system"}. |
document. | integer | no | 320 to 800. Default 600. |
document. | string | no | Default "#f4f4f5". |
document. | one of "system", "serif", "mono" | no | Default "system". |
document. | string | no | At most 2000 characters. |
document. | array of object | yes | At most 200 items. |
document. | "heading" | yes | |
document. | one of "1", "2", "3" | no | Default "1". |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "paragraph" | yes | |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "image" | yes | |
document. | string | yes | |
document. | string | yes | At most 500 characters. |
document. | string | no | |
document. | integer | no | 16 to 1200. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "button" | yes | |
document. | string | yes | 1 to 200 characters. |
document. | string | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "divider" | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "spacer" | yes | |
document. | integer | yes | 4 to 200. |
document. | "html" | yes | |
document. | string | yes | At most 200000 characters. |
document. | "columns" | yes | |
document. | array of object | yes | At most 3 items. |
document. | array of object | yes | At most 20 items. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
html | string or null | no | At most 1048576 characters. |
text | string or null | no | At most 1048576 characters. |
throttle_per_minute | integer | no | 1 to 10000. |
ab_test | object or null | no | |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | At most 998 characters. |
ab_test. | integer | yes | 5 to 50. |
ab_test. | integer | yes | 15 to 1440. |
ab_test. | one of "opens", "clicks" | no | Default "opens". |
Response
200 Success: Broadcast.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | A UUID. |
object | "broadcast" | yes | |
project_id | string | yes | A UUID. |
mode | one of "live", "test" | yes | |
name | string | yes | |
from | string or null | yes | |
reply_to | array of string | yes | |
subject | string or null | yes | |
preview_text | string or null | yes | |
segment_id | string or null | yes | A UUID. |
topic_id | string or null | yes | A UUID. |
status | one of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused" | yes | |
document | object or null | yes | |
document. | 1 | yes | |
document. | object | no | Default {"width":600,"background":"#f4f4f5","font":"system"}. |
document. | integer | no | 320 to 800. Default 600. |
document. | string | no | Default "#f4f4f5". |
document. | one of "system", "serif", "mono" | no | Default "system". |
document. | string | no | At most 2000 characters. |
document. | array of object | yes | At most 200 items. |
document. | "heading" | yes | |
document. | one of "1", "2", "3" | no | Default "1". |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "paragraph" | yes | |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "image" | yes | |
document. | string | yes | |
document. | string | yes | At most 500 characters. |
document. | string | no | |
document. | integer | no | 16 to 1200. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "button" | yes | |
document. | string | yes | 1 to 200 characters. |
document. | string | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "divider" | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "spacer" | yes | |
document. | integer | yes | 4 to 200. |
document. | "html" | yes | |
document. | string | yes | At most 200000 characters. |
document. | "columns" | yes | |
document. | array of object | yes | At most 3 items. |
document. | array of object | yes | At most 20 items. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
html | string or null | yes | |
text | string or null | yes | |
throttle_per_minute | integer | yes | |
ab_test | object or null | yes | |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | At most 998 characters. |
ab_test. | integer | yes | 5 to 50. |
ab_test. | integer | yes | 15 to 1440. |
ab_test. | one of "opens", "clicks" | no | Default "opens". |
ab_test. | one of "a", "b", null or null | yes | |
ab_test. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
ab_test. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
stats | object | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
error | string or null | yes | |
scheduled_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
started_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
sent_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
created_at | string (date-time) | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
updated_at | string (date-time) | yes | An 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 -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"}'const result = await minket.broadcasts.update("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", {
subject: "What is new this October"
});minket api updateBroadcast 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b --body '{"subject":"What is new this October"}'from minket.api.broadcasts import update_broadcast
from minket.models import UpdateBroadcastBody
result = update_broadcast.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client, body=UpdateBroadcastBody.from_dict({"subject":"What is new this October"}))var body minket.UpdateBroadcastJSONRequestBody
res, err := client.UpdateBroadcastWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", body)Delete a draft broadcast
DELETE /v1/broadcasts/{id}
Drafts, canceled and failed broadcasts; a scheduled one is canceled first.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
Response
200 Success: object.
| Field | Type | Required | Description |
|---|---|---|---|
object | "broadcast" | yes | |
id | string | yes | |
deleted | true | yes |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.
Examples
curl -X DELETE https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b \
-H "Authorization: Bearer $MINKET_API_KEY"const result = await minket.broadcasts.delete("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b");minket api deleteBroadcast 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5bfrom minket.api.broadcasts import delete_broadcast
result = delete_broadcast.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client)res, err := client.DeleteBroadcastWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b")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.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
scheduled_at | string | no | At most 100 characters. |
Response
202 Queued: object.
| Field | Type | Required | Description |
|---|---|---|---|
object | "broadcast" | yes | |
id | string | yes | A UUID. |
status | one 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 -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"}'const result = await minket.broadcasts.send("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", {
scheduled_at: "tomorrow at 9am"
});minket api sendBroadcast 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b --body '{"scheduled_at":"tomorrow at 9am"}'from minket.api.broadcasts import send_broadcast
from minket.models import SendBroadcastBody
result = send_broadcast.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client, body=SendBroadcastBody.from_dict({"scheduled_at":"tomorrow at 9am"}))var body minket.SendBroadcastJSONRequestBody
res, err := client.SendBroadcastWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", body)Cancel a scheduled or sending broadcast
POST /v1/broadcasts/{id}/cancel
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
Response
200 Success: object.
| Field | Type | Required | Description |
|---|---|---|---|
object | "broadcast" | yes | |
id | string | yes | A UUID. |
status | one 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 -X POST https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b/cancel \
-H "Authorization: Bearer $MINKET_API_KEY"const result = await minket.broadcasts.cancel("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b");minket api cancelBroadcast 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5bfrom minket.api.broadcasts import cancel_broadcast
result = cancel_broadcast.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client)res, err := client.CancelBroadcastWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b")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.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
Response
201 Created: Broadcast.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | A UUID. |
object | "broadcast" | yes | |
project_id | string | yes | A UUID. |
mode | one of "live", "test" | yes | |
name | string | yes | |
from | string or null | yes | |
reply_to | array of string | yes | |
subject | string or null | yes | |
preview_text | string or null | yes | |
segment_id | string or null | yes | A UUID. |
topic_id | string or null | yes | A UUID. |
status | one of "draft", "scheduled", "queued", "sending", "testing", "sent", "canceled", "failed", "paused" | yes | |
document | object or null | yes | |
document. | 1 | yes | |
document. | object | no | Default {"width":600,"background":"#f4f4f5","font":"system"}. |
document. | integer | no | 320 to 800. Default 600. |
document. | string | no | Default "#f4f4f5". |
document. | one of "system", "serif", "mono" | no | Default "system". |
document. | string | no | At most 2000 characters. |
document. | array of object | yes | At most 200 items. |
document. | "heading" | yes | |
document. | one of "1", "2", "3" | no | Default "1". |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "paragraph" | yes | |
document. | string | yes | At most 20000 characters. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "image" | yes | |
document. | string | yes | |
document. | string | yes | At most 500 characters. |
document. | string | no | |
document. | integer | no | 16 to 1200. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "button" | yes | |
document. | string | yes | 1 to 200 characters. |
document. | string | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "divider" | yes | |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
document. | "spacer" | yes | |
document. | integer | yes | 4 to 200. |
document. | "html" | yes | |
document. | string | yes | At most 200000 characters. |
document. | "columns" | yes | |
document. | array of object | yes | At most 3 items. |
document. | array of object | yes | At most 20 items. |
document. | object | no | |
document. | string | no | |
document. | string | no | |
document. | one of "left", "center", "right" | no | |
document. | integer | no | 0 to 80. |
html | string or null | yes | |
text | string or null | yes | |
throttle_per_minute | integer | yes | |
ab_test | object or null | yes | |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | At most 998 characters. |
ab_test. | integer | yes | 5 to 50. |
ab_test. | integer | yes | 15 to 1440. |
ab_test. | one of "opens", "clicks" | no | Default "opens". |
ab_test. | one of "a", "b", null or null | yes | |
ab_test. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
ab_test. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
ab_test. | array of object | yes | |
ab_test. | one of "a", "b" | yes | |
ab_test. | string | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
ab_test. | integer | yes | |
stats | object | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
stats. | integer | yes | |
error | string or null | yes | |
scheduled_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
started_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
sent_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
created_at | string (date-time) | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
updated_at | string (date-time) | yes | An 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 -X POST https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b/duplicate \
-H "Authorization: Bearer $MINKET_API_KEY"const result = await minket.broadcasts.duplicate("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b");minket api duplicateBroadcast 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5bfrom minket.api.broadcasts import duplicate_broadcast
result = duplicate_broadcast.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client)res, err := client.DuplicateBroadcastWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b")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.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
to | array of string | yes | At most 5 items. |
Response
202 Queued: object.
| Field | Type | Required | Description |
|---|---|---|---|
object | "broadcast" | yes | |
id | string | yes | A UUID. |
status | one 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 -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"]}'const result = await minket.broadcasts.test("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", {
to: [
"jane@example.com"
]
});minket api testBroadcast 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b --body '{"to":["jane@example.com"]}'from minket.api.broadcasts import test_broadcast
from minket.models import TestBroadcastBody
result = test_broadcast.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client, body=TestBroadcastBody.from_dict({"to":["jane@example.com"]}))var body minket.TestBroadcastJSONRequestBody
res, err := client.TestBroadcastWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", body)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.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
limit | query | integer | no | Default 20. |
after | query | string | no | A UUID. |
before | query | string | no | A UUID. |
status | query | one of "pending", "sent", "skipped", "failed" | no | |
event | query | one of "sent", "delivered", "opened", "clicked", "bounced", "complained", "unsubscribed", "suppressed" | no | |
email | query | string | no | |
bounce_type | query | one of "permanent", "transient", "undetermined" | no |
Response
200 Success: object.
| Field | Type | Required | Description |
|---|---|---|---|
object | "list" | yes | |
data | array of object | yes | |
data[]. | string | yes | A UUID. |
data[]. | string | yes | |
data[]. | string or null | yes | A UUID. |
data[]. | one of "a", "b", null or null | yes | |
data[]. | one of "pending", "sent", "skipped", "failed" | yes | |
data[]. | string or null | yes | |
data[]. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
data[]. | integer | no | |
data[]. | array of object | no | |
data[]. | string | yes | |
data[]. | integer | yes | |
data[]. | one of "permanent", "transient", "undetermined" | no | |
has_more | boolean | yes |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.
Examples
curl https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b/recipients \
-H "Authorization: Bearer $MINKET_API_KEY"const result = await minket.broadcasts.recipients("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b");minket api listBroadcastRecipients 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5bfrom minket.api.broadcasts import list_broadcast_recipients
result = list_broadcast_recipients.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client)res, err := client.ListBroadcastRecipientsWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", &minket.ListBroadcastRecipientsParams{})List the links a broadcast's recipients clicked
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.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
limit | query | integer | no | Default 20. |
after | query | string | no | |
before | query | string | no |
Response
200 Success: object.
| Field | Type | Required | Description |
|---|---|---|---|
object | "list" | yes | |
data | array of object | yes | |
data[]. | string | yes | |
data[]. | string | yes | |
data[]. | integer | yes | |
data[]. | integer | yes | |
has_more | boolean | yes |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.
Examples
curl https://api.minket.com/v1/broadcasts/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b/links \
-H "Authorization: Bearer $MINKET_API_KEY"const result = await minket.broadcasts.links("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b");minket api listBroadcastLinks 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5bfrom minket.api.broadcasts import list_broadcast_links
result = list_broadcast_links.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client)res, err := client.ListBroadcastLinksWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", &minket.ListBroadcastLinksParams{})