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

# Scheduling

> Schedule V-Run Python workflows with standard cron expressions and IANA timezones — perfect for ETL pipelines, daily reports, and recurring automation.

Scheduled triggers let you run workflows automatically at recurring intervals — hourly checks, daily reports, weekly data syncs, and more.

## Setting up a schedule

Configure a schedule in the `config.yaml` of your workflow:

```yaml theme={null}
triggers:
  schedule:
    enabled: true
    cron: "0 9 * * *"
    timezone: "UTC"
    payload:
      target_url: "https://example.com"
```

| Field      | Required    | Description                                                              |
| ---------- | ----------- | ------------------------------------------------------------------------ |
| `enabled`  | Yes         | Set to `true` to activate the schedule.                                  |
| `cron`     | Yes         | A standard five-field cron expression.                                   |
| `timezone` | No          | IANA timezone (defaults to UTC).                                         |
| `payload`  | Conditional | Input values for the run. Required if your workflow has required inputs. |

## Cron expression reference

```
┌───────────── minute (0–59)
│ ┌───────────── hour (0–23)
│ │ ┌───────────── day of month (1–31)
│ │ │ ┌───────────── month (1–12)
│ │ │ │ ┌───────────── day of week (0–6, Sunday = 0)
│ │ │ │ │
* * * * *
```

### Common examples

| Expression     | Description                          |
| -------------- | ------------------------------------ |
| `0 9 * * *`    | Every day at 9:00 AM                 |
| `*/15 * * * *` | Every 15 minutes                     |
| `0 0 * * 1`    | Every Monday at midnight             |
| `0 8,20 * * *` | Twice daily at 8 AM and 8 PM         |
| `0 0 1 * *`    | First day of every month at midnight |

## Managing schedules

### Pausing a schedule

Set `enabled: false` in the config YAML to pause a schedule without removing the configuration. Re-enable it later by setting it back to `true`. The change takes effect on the next commit.

### Schedule payload

If your workflow has required inputs, you must provide a `payload` in the schedule config. These values are passed as inputs on each scheduled run:

```yaml theme={null}
triggers:
  schedule:
    enabled: true
    cron: "0 */6 * * *"
    timezone: "America/New_York"
    payload:
      api_endpoint: "https://api.example.com/data"
      format: "json"
```

<Note>
  Scheduled runs consume credits like any other run. Check the [cost tracking](/features/cost-and-credits) page to monitor spending.
</Note>
