---
title: "Finish an upload and start clipping"
method: POST
path: "/uploads/{id}/complete"
---

# Finish an upload and start clipping

`POST /uploads/{id}/complete`

## Request

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

Step 2 of clipping a local file. Call after PUTting the file to `upload_url`. Verifies the file landed, charges one video of quota, and queues processing. Requires write scope.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `config` object: Optional pre-clip settings (same as POST /v1/jobs).
    - `genre` string
    - `clipLength` 'lt30' | '30_60' | '60_90' | '90_180'
    - `customPrompt` string
    - `topics` string

## Response `201`

Queued for processing

- object
  - `id` string, uuid
  - `status` string
  - `status_url` string, uri

## Other responses

- `400`: Error
- `401`: Error
- `403`: Error
- `404`: Error
- `409`: 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)
