Prerequisites
- A Telnyx account
- A Messaging Profile with an assigned phone number
- An API key
How scheduled messaging works
When you schedule a message, Telnyx stores it and delivers it at the specified time. Here’s how it works:- You send a request with a
send_attimestamp set in the future - Telnyx validates the request and returns a message resource with
status: "scheduled" - At the scheduled time (accurate to the minute), Telnyx sends the message
- Standard webhooks fire as the message is processed and delivered
Scheduling constraints:
send_atmust be at least 5 minutes in the futuresend_atmust be no more than 5 days in the future- Scheduling accuracy is up to 1 minute
- Maximum of 1 million scheduled messages at any given time
Schedule a message
You can schedule messages using either endpoint:POST /v2/messages— The standard send endpoint, with thesend_atparameter addedPOST /v2/messages/schedule— A dedicated scheduling endpoint with the same parameters
/v2/messages with send_at.
Choose your send time
The
send_at field requires an ISO 8601 formatted datetime string in UTC. For example:2026-02-15T14:30:00Z— February 15, 2026 at 2:30 PM UTC2026-02-14T09:00:00-08:00— February 14, 2026 at 9:00 AM PST
Time zone tip: Always convert your desired delivery time to UTC, or include the UTC offset. Messages are delivered based on the UTC time you specify, not the recipient’s local time zone.
Response
A successful response returns the message withstatus: "scheduled":
id — you’ll need it to retrieve or cancel the scheduled message.
Retrieve a scheduled message
Check the status of a scheduled message withGET /v2/messages/{id}:
The retrieve endpoint can only access messages created within the last 10 days. For older messages, generate an MDR report.
Cancel a scheduled message
Cancel a message that hasn’t been sent yet withDELETE /v2/messages/{id}:
Cancellation rules:
- The message must have
status: "scheduled" - The
send_attime must be more than 1 minute in the future - Once a message begins sending, it cannot be cancelled
Webhooks
Scheduled messages trigger the same messaging webhooks as immediate messages. The webhook sequence is:message.sent— Fires when the message is sent at the scheduled timemessage.finalized— Fires when delivery is confirmed or fails
Example webhook payload for a scheduled message
Example webhook payload for a scheduled message
Use cases
Appointment reminders
Appointment reminders
Schedule reminders 24 hours before an appointment:
Python
Time-zone-aware campaigns
Time-zone-aware campaigns
Send marketing messages during business hours in each recipient’s time zone:
Python
Limits and rate limiting
- Scheduling window: 5 minutes to 5 days in the future
- Maximum scheduled messages: 1 million at any given time
- Accuracy: Messages are sent within 1 minute of the scheduled time
- Rate limits: The same rate limits apply to scheduled messages as to immediate messages — both when creating the scheduled message and when it’s sent
Comparison with other providers
| Feature | Telnyx | Twilio | Vonage |
|---|---|---|---|
| Scheduling window | 5 min – 5 days | 15 min – 35 days | Not natively supported |
| Cancellation | ✅ Up to 1 min before send time | ✅ Up to 1 hour before send time | N/A |
| Dedicated endpoint | ✅ /v2/messages/schedule | ❌ Same endpoint only | N/A |
| Requires Messaging Service | ❌ Optional | ✅ Required | N/A |
| Additional cost | ❌ Free | ❌ Free | N/A |
| Accuracy | ~1 minute | ~15 minutes | N/A |