YouTube Upload API
This section details how to upload videos to YouTube using the API. It supports standard video uploads with extensive metadata customization including privacy settings, scheduling, and COPPA compliance.
Base URL
https://api.multi-upload-tool.com/api/v1
Authentication
All requests require an API Token in the header:
x-api-token: YOUR_API_TOKEN
Requirements
YouTube Video Requirements
- File Size: Maximum: 256 GB
- Accepted MIME Types:
video/*,application/octet-stream - Important: Custom thumbnails are not supported for YouTube Shorts; they only apply to standard YouTube videos.
Upload Video
Upload a video file to a connected YouTube channel.
Endpoint
POST /upload/youtube
Content-Type
multipart/form-data
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected YouTube account. |
file | File | Yes | The video file to upload. |
title | string | Yes | The title of the video. |
description | string | No | The description of the video. |
tags | string | string[] | No | Comma-separated tags or array of strings. |
categoryId | string | No | YouTube category ID (e.g., “22” for People & Blogs). Default: 22. |
privacyStatus | string | No | Visibility: public (default), private, or unlisted. |
scheduledDate | string | No | ISO 8601 date string for scheduled publishing. Note: Setting this forces privacyStatus to private initially. |
thumbnail | File | No | Custom thumbnail image file. |
thumbnail_url | string | No | URL of the thumbnail image (alternative to file). |
embeddable | boolean | No | Whether the video can be embedded on other sites. Default: true. |
license | string | No | youtube (Standard) or creativeCommon. Default: youtube. |
publicStatsViewable | boolean | No | Whether view counts are publicly visible. Default: true. |
madeForKids | boolean | No | Whether the video is made for kids (COPPA compliance). Default: false. |
selfDeclaredMadeForKids | boolean | No | Self-declaration for COPPA. |
containsSyntheticMedia | boolean | No | Whether content is AI-generated or synthetic. Default: false. |
hasPaidProductPlacement | boolean | No | Whether the video contains paid promotion. Default: false. |
defaultLanguage | string | No | ISO 639-1 language code (e.g., en, fr). |
defaultAudioLanguage | string | No | ISO 639-1 language code for audio. |
allowedCountries | string | No | Comma-separated list of allowed country codes (ISO 3166-1 alpha-2). |
blockedCountries | string | No | Comma-separated list of blocked country codes. |
recordingDate | string | No | Date when the video was recorded (ISO 8601). |
notifySubscribers | boolean | No | Whether to notify subscribers about the upload. Default: true. |
Example Request
curl -X POST https://api.multi-upload-tool.com/api/v1/upload/youtube \
-H "x-api-token: YOUR_API_TOKEN" \
-F "accountId=acc_123456789" \
-F "file=@/path/to/video.mp4" \
-F "title=My Amazing Video" \
-F "description=Check out this cool content!" \
-F "privacyStatus=public" \
-F "tags=vlog,lifestyle,travel" \
-F "madeForKids=false" \
-F "containsSyntheticMedia=true"Example Response
{
"success": true,
"message": "Upload queued successfully",
"data": {
"uploadId": "upl_987654321",
"status": "pending",
"jobId": "job_123"
}
}