---
title: "Complete an upload"
method: POST
path: "/videos/upload/complete"
tags: ["Videos"]
---

# Complete an upload

`POST /videos/upload/complete`

## Request

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

Registers a finished upload, captures its dimensions/duration, and returns the video metadata together with the exact credit cost, in the same payload shape as `POST /clips/info`. Pass the returned `video_id` to `POST /clips` to start a clipping submission.

Call this only after the PUT to `upload_url` returned `200`. If the file is missing from storage, this returns `FILE_NOT_FOUND`.

## Request body

- object
  - `video_id` string, required: The `video_id` returned by `POST /videos/upload`.
  - `file_name` string, required: Original file name — used as the video title.
  - `duration` number, required: Video duration in seconds.
  - `width` number, required: Video width in pixels.
  - `height` number, required: Video height in pixels.

## Response `200`

Response for status 200

- object
  - `id` string, required: The registered video. Pass it to `POST /clips` as `video_id`.
  - `title` string, required
  - `description` string, required
  - `author` string, required
  - `platform` string, required
  - `duration` number, required
  - `thumbnail_url` string, required
  - `credits_cost` number, required: Cost of clipping this video. Charged on submit unless `credits_unlimited` is `true`.
  - `credits_original` number, required: Credit cost before any plan discount.
  - `discount_percent` number, required: Discount applied by the current plan (0-100).
  - `force_watermark` boolean, required: `true` if generated clips will carry a CutPro watermark.
  - `current_balance` number, required: Current workspace credit balance.
  - `credits_unlimited` boolean, required: `true` while usage is free for this workspace: the job runs without consuming credits and is never rejected for lack of balance.

## Other responses

- `400`: Response for status 400
- `404`: Response for status 404
- `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)
