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 |
Next steps
Send Your First Message
New to Telnyx messaging? Start here
Receive Webhooks
Handle delivery confirmations and inbound messages
Rate Limiting
Understand messaging throughput limits
API Reference
Full API parameter documentation