Advanced scheduling
Updated: Jun 26, 2026
Copy for LLM
Ads in WhatsApp Status are available via the Marketing API. Learn more about ads in WhatsApp Status.
This guide provides examples for the
schedule_type of CUSTOM.As referenced from the main documentation:
If the
schedule_type is CUSTOM, you must also specify the list of custom schedules, or times when the rule will run. In the schedule list, each individual specification can combine the following fields, with the only requirement that at least one of start_minute or days must exist in each entry.| Field | Description |
|---|---|
start_minute | Time in minutes after 12:00AM. Must be a multiple of 30 minutes.
If start_minute is set and there is no end_minute, start_minute determines
the exact time to run the rule. Otherwise, start_minute determines with
end_minute the range of time to run the rule. If start_minute is not set,
the rule runs SEMI_HOURLY for each day in days. |
end_minute | Time in minutes after 12:00AM. Must be a multiple of 30 minutes
and after start_minute. If set, end_minute determines with
start_minute the range of time to run the rule. If end_minute is
the same as start_minute, the rule runs at that exact time. |
days | List of days to run the rule. Each day must be a value from 0-6.
0 is Sunday, 1 is Monday, ..., 6 is Saturday. If this is not set,
the rule runs on all 7 days based on the start_minute and,
if exists, the end_minute. |
Here’s an example of using Advanced Scheduling to schedule the rule to run every day at 10 AM. Omitting the
days applies the schedule to every day.curl \
-F 'name=Test Advanced Scheduling Rule' \
-F 'schedule_spec={
"schedule_type": "CUSTOM",
"schedule": [
{
"start_minute": 600,
}
]
}' \
-F 'evaluation_spec={
...
}' \
-F 'execution_spec={
...
}' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library
Custom schedule examples
Here’s an example of a rule that runs every 30 minutes only on weekends. By omitting
start_minute, the rule runs as SEMI_HOURLY for the specified days.curl \
-F 'name=Test Advanced Scheduling Rule' \
-F 'schedule_spec={
"schedule_type": "CUSTOM",
"schedule": [
{
"days": [0, 6]
}
]
}' \
-F 'evaluation_spec={
...
}' \
-F 'execution_spec={
...
}' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library
Here’s an example of a rule that only runs on Wednesdays at 2 AM. By omitting
end_minute, the rule runs at one specific time instead of a range of times.curl \
-F 'name=Test Advanced Scheduling Rule' \
-F 'schedule_spec={
"schedule_type": "CUSTOM",
"schedule": [
{
"start_minute": 120,
"days": [3]
}
]
}' \
-F 'evaluation_spec={
...
}' \
-F 'execution_spec={
...
}' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library
The API calculates each individual schedule independently as an OR with the other schedules. Here’s an example of a rule that runs all day on the weekdays, but only from 12-1PM on the weekends. By having an
end_minute here, the range of time runs from the start_minute to end_minute.curl \
-F 'name=Test Advanced Scheduling Rule' \
-F 'schedule_spec={
"schedule_type": "CUSTOM",
"schedule": [
{
"days": [1, 2, 3, 4, 5]
},
{
"start_minute": 720,
"end_minute": 780,
"days": [0, 6]
}
]
}' \
-F 'evaluation_spec={
...
}' \
-F 'execution_spec={
...
}' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library
You can also omit
days in the second schedule specification. This works the same way, because the first specification includes 12-1PM on weekdays.