# Scheduling

> Send at a set time with send_after, or at the same clock time in each device's own time zone with delayed_option.

URL: https://docs.xulo.io/api/scheduling

Without `send_after`, a call starts the send at once and Xulo finishes it in the background.

## At a set time

```json
{
  "send_after": "2026-11-02T09:00:00Z"
}
```

`send_after` is a date and time. Include the offset, such as `Z` or `+03:00`. The call returns `200` with `status: "scheduled"`, and the push goes out when that time arrives. Due sends are checked every minute. When the time arrives, a segment or tag send goes out in the background like a send made now, in chunks of 500 and at the `throttle_rate_per_minute` you set.

A time more than a minute in the past returns 422 with "That time has already passed." A value that is not a time returns 422 with "send_after needs a time."

## At the same clock time on each device

```json
{
  "send_after": "2026-11-02T09:00:00Z",
  "delayed_option": "timezone"
}
```

With `delayed_option: "timezone"`, Xulo reads the date and the clock time of `send_after` in UTC and sends at that clock time in each device's own time zone. The example sends at 09:00 local time on 2 November, everywhere.

- The time zone is the device setting, which the SDK reports. It is not guessed from location or the IP address.
- A device with no time zone is not sent to, and it is not counted in `skipped`.
- Xulo checks every minute. When the clock in a time zone reaches that time on that date, the whole audience in that time zone gets it, sent in the background.
- A time zone whose clock has already passed that time on that date gets it at the next check.
- Each time zone is sent once. The send stays `scheduled` until every time zone in its audience has been sent, then it is `approved`.
- `throttle_rate_per_minute` does not apply to a local-time send.

Any other `delayed_option` returns 422 with "delayed_option is timezone, or leave it out."

## Checking a scheduled send

[Notification stats](https://docs.xulo.io/api/notification-stats) shows `remaining`: the devices in the audience that have not been sent to yet.
