---
title: "Create a clip from a time range"
method: POST
path: "/jobs/{id}/clips"
---

# Create a clip from a time range

`POST /jobs/{id}/clips`

## Request

- Base URL: `https://katto.tech/api/v1`
- URL: `https://katto.tech/api/v1/jobs/{id}/clips`
- Auth: HTTP bearer

Creates a NEW clip from the job's source video, between start_seconds and end_seconds (seconds of the SOURCE video, e.g. from GET /jobs/{id}/transcript). Same rules as the editor's Create clip: 3-180 s, at most 10 created clips per video, one clip in preparation at a time (409), and only while the source is kept (7 days after the job, else 410). Does NOT consume video quota. The clip is rendered asynchronously and appended to the job's clips: poll GET /jobs/{id}/clips until a clip with clip_index = expected_clip_index appears. Requires write scope.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `start_seconds` number, required
  - `end_seconds` number, required
  - `aspect` '9:16' | '1:1' | '16:9': Defaults to the job's setting.
  - `auto_reframe` boolean: false = plain center crop instead of following the speaker.

## Response `202`

Clip queued

- object
  - `status` string
  - `job_id` string, uuid
  - `start_seconds` number
  - `end_seconds` number
  - `duration_seconds` number
  - `title` string
  - `has_captions` boolean: false when no stored word timings cover the range: the clip renders without captions.
  - `expected_clip_index` integer
  - `status_url` string, uri

## Other responses

- `400`: Error
- `401`: Error
- `403`: Error
- `404`: Error
- `409`: Error
- `410`: Error
- `429`: Error

---

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