---
title: "Upload a reference or source video"
method: POST
path: "/video/upload"
tags: ["Videos"]
---

# Upload a reference or source video

`POST /video/upload`

## Request

- Base URL: `https://api.wondercraft.ai/v1`
- URL: `https://api.wondercraft.ai/v1/video/upload`
- Auth: API key in header `X-API-KEY`
- TypeScript: <https://skmtc.dev/wondercraft/apis/wondercraft-public-api/docs/video/upload/post.ts> (a function with typed inputs; its response is checked against the schema)

Uploads an MP4 or MOV video (up to 100 MB and 60 seconds) to use as a reference clip or as the
video to edit. Returns a `video_id` to pass in `reference_video_ids` or as `source_video_id`.
Requires a valid `X-API-KEY` header.

Throws:
- 400 if the file is not an MP4 or MOV video, has no video stream, or is longer than 60 seconds
- 413 if the file is larger than 100 MB

## Request body `multipart/form-data`

- BodyUploadVideoVideoUploadPost
  - `video` string, binary, required: MP4 or MOV video, up to 100 MB and 60 seconds

## Response `200`

Successful Response

- UploadVideoResponse
  - `video_id` string, uuid, required: Pass as `reference_video_ids` or `source_video_id` when generating
  - `duration_ms` integer, required: Video length in milliseconds
  - `width` integer, required: Video width in pixels
  - `height` integer, required: Video height in pixels

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-16** `200f24d7f14b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/wondercraft/apis/wondercraft-public-api/changes/video/upload/post.md)

---

[API](https://skmtc.dev/wondercraft/apis/wondercraft-public-api.md) - [All operations](https://skmtc.dev/wondercraft/apis/wondercraft-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wondercraft/apis/wondercraft-public-api/revisions/200f24d7f14b?raw)
