---
title: "Submit a video for clipping"
method: POST
path: "/clips"
tags: ["Submissions"]
---

# Submit a video for clipping

`POST /clips`

## Request

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

Queues a video for AI clipping. Credits are deducted immediately upon submission. Returns the submission `id` to track progress.

Poll `GET /clips/{videoId}/submissions/{submissionId}` until `status` is `completed` or `failed`, then retrieve the generated clips from `GET /clips/{videoId}/submissions/{submissionId}/clips`.

## Request body

- object
  - `video_id` string, required: The `video_id` returned by `POST /clips/info`
  - `source_language` 'auto' | 'en' | 'pt'
  - `strategy_id` string, nullable: ID of a saved clipping strategy. Omit or pass `null` to use default AI settings
  - `timeframe` object, nullable: Restrict clipping to a portion of the video. Omit to process the full video
    - `start` number, required: Process from this offset in seconds (inclusive)
    - `end` number, required: Process up to this offset in seconds (exclusive)
  - `template_id` string, nullable: ID of an edit template from `GET /templates` to auto-apply to every generated clip. An unknown one answers `404 TEMPLATE_NOT_FOUND` before anything is charged
  - `translate_to` string: Language code (ISO 639-1, e.g. `en`, `es`) to translate the clips' captions into. Costs more than the plain job, and `credits_charged` reports what was taken; the surcharge is refunded when the video turns out to be spoken in that language already. Omit to keep the strategy's own setting, or pass `""` for no translation.

## Response `201`

Response for status 201

- object
  - `id` string, required: ID of the created submission. Poll it for progress
  - `video_id` string, required: ID of the source video
  - `status` 'queued', required
  - `credits_charged` number, required: Credits actually deducted from your balance. `0` when the clip was free, including while this workspace has unlimited usage

## 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
- `500`: Response for status 500

---

[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)
