Skip to content

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.

Text
POST /{namespace}/messages/{message}/broadcast

Path: message. Body, as JSON: the other inputs. Emits Message.broadcasted.

Inputs

InputTypeRequiredDescription
messageMessagerequiredThe Message to send.
audienceAudiencerequiredWho receives it.
atdatetimeWhen it goes out; omitted, now.

Returns

OutputTypeRequiredDescription
messageslist of MessagerequiredOne sent Message per Contact.
messageMessagerequiredThe Message broadcast.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
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"}'
JSON
{
  "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.

Text
POST /{namespace}/messages/{message}/schedule

Path: message. Body, as JSON: the other inputs. Emits Message.scheduled.

Inputs

InputTypeRequiredDescription
messageMessagerequiredThe Message to hold.
atdatetimerequiredWhen it goes out.

Returns

OutputTypeRequiredDescription
messageMessagerequiredThe scheduled Message.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
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"}'
JSON
{
  "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"
  }
}