Upload Video
upload_videoUpload a local video file to YouTube with resumable transfer and progress reporting, then set title, privacy, tags, category, and optional scheduling.
Instructions
Upload a video file from disk (resumable, reports progress).
Category and languages left out are copied from your most recent public upload (among your last 150), so the video matches the rest of your channel; with none, the category is 22 (People & Blogs). YouTube keeps processing the video after this returns, and its duration and statistics appear only once that ends. Checking whether processing has finished tells you when, or why it failed.
Quota: 1607 units.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Path to the local video file. | |
| tags | No | Keyword tags. YouTube may store them in a different order. | |
| title | Yes | Video title. | |
| privacy | No | Privacy status. Must be private when publish_at is set. | private |
| language | No | Language of the title and description, e.g. en-US. | |
| ai_content | No | Whether AI made realistic content: a real person saying or doing something they didn't, altered footage of a real event or place, a realistic scene that didn't happen, or music that's the video's focus. Not for scripts, captions, or obviously unreal content. | |
| my_channel | No | Which of your logged-in channels to work on: UC… ID, @handle or exact title. Omit for the default channel. | |
| publish_at | No | Schedule publication at this date or datetime; YouTube makes the video public then. | |
| category_id | No | Category ID (see the video categories listing). | |
| description | No | Video description. | |
| made_for_kids | No | Whether the video is made for kids (COPPA). | |
| audio_language | No | Language spoken in the video, e.g. en-US. | |
| paid_promotion | No | Whether the video includes paid promotion: a sponsorship, product placement, or endorsement. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| url | Yes | ||
| tags | No | In the order YouTube stores them, which may differ from yours. | |
| stats | No | ||
| title | No | ||
| privacy | No | ||
| duration | No | ||
| language | No | Language of the title and description, e.g. en-US. | |
| ai_content | No | Declared to contain realistic AI-made content, as set by this upload or update. YouTube doesn't report it when reading a video. | |
| channel_id | No | ||
| publish_at | No | ||
| studio_url | No | Edit page in YouTube Studio; only for videos on channels you're logged in to. | |
| category_id | No | ||
| description | No | ||
| published_at | No | ||
| channel_title | No | ||
| upload_status | No | uploaded, processed, failed, rejected, or deleted. | |
| audio_language | No | Language spoken in the video, e.g. en-US. | |
| paid_promotion | No | Declared to include paid promotion. | |
| duration_seconds | No | ||
| rejection_reason | No | Why YouTube rejected the video, e.g. copyright, duplicate, length, termsOfService. YouTube reports no reason for a video kept private because its API project isn't verified. | |
| upload_failure_reason | No | Why a failed upload failed, e.g. codec, conversion, emptyFile, invalidFile, tooSmall. |