> ## Documentation Index
> Fetch the complete documentation index at: https://anything.notte.cc/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Schedules

> Run an API on cron, with its arguments pinned.

Set a schedule on the **Schedule** tab of the API's page: a cron expression plus the exact variables the scheduled run should send.

A scheduled run has nobody to fill in a form, so its arguments are frozen with the schedule. Changing the API's defaults later does not change what an existing schedule sends.

## Cron format

Six fields, EventBridge style:

```
minutes  hours  day-of-month  month  day-of-week  year
```

Five fields are rejected, so `0 9 * * *` is invalid here. Exactly one of day-of-month and day-of-week must be `?`.

| Preset                | Expression          |
| --------------------- | ------------------- |
| Every 15 minutes      | `*/15 * ? * * *`    |
| Hourly                | `0 * ? * * *`       |
| Daily at 09:00 UTC    | `0 9 ? * * *`       |
| Weekdays at 09:00 UTC | `0 9 ? * MON-FRI *` |
| First of the month    | `0 9 1 * ? *`       |

<Warning>
  Schedules fire in **UTC**. A job you think of as "9am" set from GMT+2 runs at 11am local. The tab prints the next ten fire times in both zones; check that table, not the expression.
</Warning>

## Digests and monitors

The useful version of a scheduled scraper reports only what changed. Store what you have already seen, compare on the next run, and stay quiet otherwise. See [State and secrets](/docs/state-and-secrets).

Failed scheduled runs appear in the **Runs** tab and on **Activity**. Turn on [self-healing](/docs/build#self-healing) for anything you leave running unattended.
