The BlueBubbles SDK lets you schedule messages to be sent once at a specific future time, or repeatedly on an hourly, daily, weekly, monthly, or yearly cadence. All scheduling operations live onDocumentation Index
Fetch the complete documentation index at: https://bluebubbles.anmho.com/llms.txt
Use this file to discover all available pages before exploring further.
client.messages and communicate with the server’s built-in scheduler. Once registered, the server handles delivery autonomously — your app doesn’t need to stay connected.
Scheduled messages require BlueBubbles Server 1.4.0 or later. Upgrade your server before using any of the methods in this guide.
Schedule a one-time message
UsescheduleAMessage() to queue a message for delivery at a specific future timestamp. Set schedule.type to "once" and provide a milliseconds-since-epoch value in scheduledFor.
If a one-time scheduled message is missed — for example because the BlueBubbles Server was offline at the scheduled time — the message will not be sent. It will not be retried. Use recurring schedules if reliability across restarts matters for your use case.
Request body fields
| Field | Type | Description |
|---|---|---|
type | string | Action type. Always "send-message" |
payload | object | Message parameters, mirroring the sendText() body (chatGuid, message, method, etc.) |
scheduledFor | number | Delivery time as milliseconds since Unix epoch. Must be in the future |
schedule | object | Scheduling configuration. For one-time: { "type": "once" } |
Schedule a recurring message
Setschedule.type to "recurring" and add intervalType and interval to repeat the message on a defined cadence.
Recurring schedule fields
| Field | Type | Description |
|---|---|---|
type | string | "recurring" |
intervalType | string | How to measure the interval. One of: hourly, daily, weekly, monthly, yearly |
interval | number | How many units between sends. 1 means every day, 2 means every other day, etc. |
Interval type examples
intervalType | interval | Behavior |
|---|---|---|
hourly | 2 | Every 2 hours |
daily | 1 | Every day |
weekly | 2 | Every 2 weeks |
monthly | 1 | Every month |
yearly | 1 | Every year |
When a recurring message fires, the server calculates the next scheduled time before sending the current message. This keeps the cadence consistent even if delivery takes a moment. If a recurring message is missed because the server was offline, it will not be sent for that interval — the next fire time is rescheduled to the next occurrence in the future.
List all scheduled messages
getScheduledMessages() returns all scheduled messages, including past ones. Use this to display pending schedules or audit delivery history.
Fetch a single scheduled message
UsegetScheduledMessageById() to retrieve the details of one specific scheduled message by its numeric ID:
Update a scheduled message
updateAScheduledMessageById() replaces the payload or timing of an existing scheduled message. Pass the same request body shape as scheduleAMessage():
- Update a one-time message
- Update a recurring message
Delete a scheduled message
UsedeleteScheduledMessageById() to cancel and remove a scheduled message before it fires:
scheduleAMessage() if needed.