Skip to main content

POST /api/v1/videos/upload

Upload a video file to the engine. The returned video_id is required when creating a processing job.
This endpoint uses multipart/form-data. Do not set Content-Type: application/json on this request — let your HTTP client set the multipart boundary automatically.
Supported formats: mp4, mov, avi, mkv, webm

Request parameters

file
file
required
The video file to upload. Must be one of the supported container formats: mp4, mov, avi, mkv, or webm.
template_video_id
string
The video_id of a previously uploaded video to use as a style template. When provided, the engine extracts the visual and audio style from this video and applies it during job processing.
webhook_url
string
A URL the engine will send a POST request to when processing for this video completes. The payload uses the standard response envelope with the job result as data.

Response fields

success
boolean
required
true on successful upload.
message
string
required
Human-readable confirmation message.
data
object
required

Example request

curl --request POST \
  --url http://{host}/api/v1/videos/upload \
  --form "file=@/path/to/video.mp4" \
  --form "template_video_id=vid_abc123" \
  --form "webhook_url=https://example.com/webhooks/clipzy"

Example response

{
  "success": true,
  "message": "Video uploaded successfully",
  "data": {
    "video_id": "vid_abc123",
    "filename": "my-video.mp4",
    "file_size_bytes": 52428800,
    "uploaded_at": "2024-04-05T10:30:00Z",
    "storage_url": "internal://storage/videos/vid_abc123",
    "metadata": {
      "width": 1920,
      "height": 1080,
      "duration_seconds": 60.0,
      "frame_rate": 30.0,
      "codec": "h264",
      "bitrate_kbps": 8000,
      "format": "mp4"
    }
  }
}