---
title: "Upload Video From Url"
method: POST
path: "/api/v1/upload/from-url"
---

# Upload Video From Url

`POST /api/v1/upload/from-url`

## 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/upload/from-url`
- Auth: HTTP bearer

Ingest a video from a YouTube URL. The video is probed for metadata via
the YouTube Data API at request time (best-effort); the actual download
runs through an Apify actor inside a Celery task so the HTTP response
returns within a few seconds. Billing, token reservation, and the
response contract are identical to POST /upload.

## Request body

- VideoUploadFromUrlRequest: Request body for POST /api/v1/upload/from-url. Mirrors the Form parameters of POST /api/v1/upload so the frontend can reuse the same options for both upload paths.
  - `source_url` string, uri, required
  - `tags` string, nullable
  - `query` string, nullable
  - `min_duration` number, nullable
  - `include_captions` boolean, nullable
  - `karaoke_captions` boolean, nullable
  - `karaoke_color` string, nullable
  - `orientation` string, nullable
  - `processing_mode` string, nullable
  - `smart_crop_enabled` boolean, nullable
  - `gemini_analysis` boolean, nullable
  - `compilation_format` string, nullable

## 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)
