# Scheduling messages

Twilio Communications API lets you schedule messages for future delivery to coordinate bulk sends or time-sensitive communications. You can use the `schedule` parameter to specify when messages should be sent, including complex scheduling rules.

## Schedule a message for future delivery

To schedule a message, include the `schedule` object in your API request. The `sendAt` field accepts an array of date-time expressions, which are intersected to create a composite scheduling rule. Twilio optimizes the calculated send time within the constrains defined by the rules you provide.

Use date-time expressions without a time zone to allow Twilio to localize the schedule to each recipient's time zone. The time zone will be determined from the communication address when possible, otherwise UTC (Zulu) is used.

```bash
curl -X POST 'https://comms.twilio.com/preview/Messages' \
--header 'Content-Type: application/json' \
--data '{
   "from": {
       "address": "<Your Purchased Twilio Phone Number>",
       "channel": "SMS"
   },
   "to": [
       {
           "address": "+19143188062",
           "channel": "PHONE",
           "variables": {
               "firstName": "Darth",
               "lastName": "Vader"
           }
       }
   ],
   "content": {
       "text": "Hello Luke, I am your father, {{firstName}} {{lastName}}."
   },
   "schedule": {
       "sendAt": ["2025-03-19T09:30:00Z"]
   }
}' \
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
```

## Next steps

Learn how [Pooling](./comms/pooling) lets you group multiple senders to send messages more reliably and automatically handle delivery failures.
