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

# Schedule recurring runs

> Process new content automatically on a cadence.

A **schedule** runs one of a reporter's workflows on a cadence over a set of
collections. New videos in those collections get synced and processed
automatically — no manual triggering.

## 1. Create the schedule

```bash theme={null}
curl -X POST https://api.clipping.cc/v1/reporters/rep_123/schedules \
  -H "Authorization: Bearer ck_live_…" -H "Content-Type: application/json" \
  -d '{
        "name": "Daily AI digest",
        "workflow_id": "wf_123",
        "interval_hours": 24,
        "collection_ids": ["col_123"],
        "enabled": true,
        "max_videos_per_channel": 5,
        "max_age_hours": 48
      }'
```

| Field                    | Meaning                                            |
| ------------------------ | -------------------------------------------------- |
| `workflow_id`            | Which workflow to run (required).                  |
| `interval_hours`         | How often the schedule is due.                     |
| `collection_ids`         | Collections whose channels get synced + processed. |
| `max_videos_per_channel` | Cap per channel per run.                           |
| `max_age_hours`          | Ignore videos older than this.                     |
| `enabled`                | Toggle without deleting.                           |

## 2. Run it now (optional)

Don't want to wait for the cadence? Trigger immediately — it's
[asynchronous](/en/async-operations):

```bash theme={null}
curl -X POST https://api.clipping.cc/v1/reporters/rep_123/schedules/sch_123/run \
  -H "Authorization: Bearer ck_live_…"
```

```json theme={null}
{ "status": "dispatched", "schedule_id": "sch_123" }
```

<Note>
  Only one run per schedule executes at a time — triggering a second while one is
  running is a no-op (it won't double-process).
</Note>

## 3. Review runs

```bash theme={null}
# recent runs for the reporter
curl "https://api.clipping.cc/v1/reporters/rep_123/schedule/runs?limit=20" \
  -H "Authorization: Bearer ck_live_…"

# one run, with enriched per-item events
curl "https://api.clipping.cc/v1/reporters/rep_123/schedule/runs/42" \
  -H "Authorization: Bearer ck_live_…"
```

Each scheduled run also creates [executions](/en/async-operations) you can list
with `GET /v1/reporters/{id}/executions`.

## Managing collections on a schedule

Attach or detach collections without recreating the schedule:

```bash theme={null}
curl -X POST https://api.clipping.cc/v1/reporters/rep_123/schedules/sch_123/collections \
  -H "Authorization: Bearer ck_live_…" -H "Content-Type: application/json" \
  -d '{ "collection_id": "col_456" }'
```
