Message routes: broadcast, schedule
The Message Verbs broadcast, schedule as api.sb routes, with inputs, result, refusals and an example.
Reference for Message, one group of Message routes.
Message.broadcast
Broadcast sends one Message to an Audience, now or at a set time, split by Variant when an Experiment runs. Verb page.
POST /{namespace}/ messages/ {message}/ broadcastPath: message. Body, as JSON: the other inputs. Emits Message.broadcasted.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
message | Message | required | The Message to send. |
audience | Audience | required | Who receives it. |
at | datetime | When it goes out; omitted, now. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
messages | list of Message | required | One sent Message per Contact. |
message | Message | required | The Message broadcast. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ messages/ message_3Dg8ysSOyQ/ broadcast \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"audience": "audience_vmVkEYrXCN"}'{
"api": "https: //api.sb/ leaseline.app",
"messages": [
{
"$id": "https: //api.sb/ leaseline.app/ messages/ message_3Dg8ysSOyQ",
"$type": "Message",
"medium": "email",
"direction": "inbound",
"body": "Example body"
}
],
"message": {
"$id": "https: //api.sb/ leaseline.app/ messages/ message_3Dg8ysSOyQ",
"$type": "Message",
"medium": "email",
"direction": "inbound",
"body": "Example body"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Message.broadcast",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Message.schedule
Schedule holds a Message until a set time and sends it then, unless it is canceled first. Verb page.
POST /{namespace}/ messages/ {message}/ schedulePath: message. Body, as JSON: the other inputs. Emits Message.scheduled.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
message | Message | required | The Message to hold. |
at | datetime | required | When it goes out. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
message | Message | required | The scheduled Message. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ messages/ message_3Dg8ysSOyQ/ schedule \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"at": "2026-10-22T12: 00: 00Z"}'{
"api": "https: //api.sb/ leaseline.app",
"message": {
"$id": "https: //api.sb/ leaseline.app/ messages/ message_3Dg8ysSOyQ",
"$type": "Message",
"medium": "email",
"direction": "inbound",
"body": "Example body"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Message.schedule",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}