---
title: "Monitor a channel"
method: POST
path: "/monitors"
tags: ["Monitoring"]
---

# Monitor a channel

`POST /monitors`

## Request

- Base URL: `https://api.cut.pro/api/v1`
- URL: `https://api.cut.pro/api/v1/monitors`
- Auth: API key in header `X-Api-Key`

Starts watching a YouTube, Twitch or Kick channel from its URL. A `live` monitor clips each broadcast while it airs, charged per 10-minute batch; a `video` monitor clips each new upload. It is born on unless `enabled` is `false`, which is how a 24/7 stream is set up once and then switched with `start` and `stop`. Refusals: `400`, `402`, `403`, `404`, `409 ALREADY_MONITORING`, and `429` (10 per minute, because it looks the channel up on the platform).

## Request body

- object
  - `channel` string, required: Channel URL, e.g. `https://www.youtube.com/@handle`, `https://www.twitch.tv/login` or `https://kick.com/slug`
  - `type` 'live' | 'video', required
  - `enabled` boolean: Start monitoring right away. Defaults to `true`
  - `strategy_id` string: ID of a clipping strategy. On create, omit to use the default AI settings
  - `template_id` string, nullable: ID of an edit template from `GET /templates`; `null` = none
  - `video_min_duration` union
    - string, integer
    - integer
  - `video_max_duration` union
    - string, integer
    - integer
  - `days_of_week` union[]
    - union
      - string, integer
      - integer
  - `hours_of_day` array[]
    - union[]
      - union
        - string, integer
        - integer

## Response `201`

Response for status 201

- object
  - `id` string, required
  - `type` 'live' | 'video', required
  - `platform` 'youtube' | 'twitch' | 'kick', required
  - `username` string, required
  - `display_name` string, nullable, required
  - `avatar_url` string, nullable, required
  - `enabled` boolean, required
  - `enabled_at` string, nullable, required: ISO 8601 timestamp of when the current monitoring period started; `null` while off. Stopping is refused for the first 10 minutes after it.
  - `strategy_id` string, required: Clipping strategy applied to every clip
  - `template_id` string, nullable, required: Edit template applied to every clip; `null` = none
  - `video_min_duration` number, nullable, required: `video` only: shorter uploads are skipped, in seconds
  - `video_max_duration` number, nullable, required: `video` only: longer uploads are skipped, in seconds
  - `days_of_week` number[], required: `video` only: days an upload is accepted, 0 = Sunday; empty = every day
  - `hours_of_day` array[], required: `video` only: `[from, to]` hour ranges an upload is accepted, in the workspace owner's timezone
    - number[]

## Other responses

- `400`: Response for status 400
- `402`: Response for status 402
- `403`: Response for status 403
- `404`: Response for status 404
- `409`: Response for status 409
- `429`: Response for status 429

---

[API](https://skmtc.dev/cut/apis/cutpro-api.md) · [All operations](https://skmtc.dev/cut/apis/cutpro-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cut/apis/cutpro-api/revisions/89d0bafe529c?raw)
