---
title: "Complete Direct Upload"
method: POST
path: "/api/v1/uploads/{project_id}/complete"
---

# Complete Direct Upload

`POST /api/v1/uploads/{project_id}/complete`

## Request

- Base URL: `https://api.clipmaster.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.clipmaster.app/api/v1/uploads/{project_id}/complete`
- Auth: HTTP bearer

Finish a direct-to-S3 upload: verify the object landed in S3, then
dispatch the processing pipeline.

Idempotency: only valid while the project is UPLOADING — a second call
(double click, retry after success) gets 409 instead of a second pipeline.

## Path parameters

- `project_id` integer, required

## Response `200`

Successful Response

- VideoUploadResponse
  - `project_id` integer, required
  - `task_id` string, nullable
  - `message` string, required
  - `metadata` object, required
  - `progress_url` string, nullable
  - `video_url` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/clipmaster/apis/semantic-video-clip-ai-agent.md) · [All operations](https://skmtc.dev/clipmaster/apis/semantic-video-clip-ai-agent/llms.txt) · [OpenAPI document](https://skmtc.dev/clipmaster/apis/semantic-video-clip-ai-agent/revisions/c9b8333cd22b?raw)
