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
Schedule a recurring message
Setschedule.type to "recurring" and add intervalType and interval to repeat the message on a defined cadence.
Recurring schedule fields
Interval type examples
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.