Obtain an OAuth 2.0 access token with the youtube.upload scope for the channel owner's account.
Initiate a resumable upload session by sending a POST request to the resumable upload endpoint with the video resource metadata (snippet, status) in the request body and uploadType=resumable in the query string.
Capture the upload URI returned in the Location response header.
Upload the video file bytes in one or more PUT requests to the upload URI, setting Content-Range headers appropriately for each chunk.
Confirm completion when the API returns a 200 or 201 response containing the new video resource with its id.
Note that videos.insert costs 100 quota units per call (updated December 4, 2025).
Known gotchas
videos.insert costs 100 quota units as of December 4, 2025 — not the previously documented 1,600.
The upload URI from the Location header is single-use and expires; do not reuse it across sessions.
Uploaded videos may be placed in 'processing' status and will not be immediately playable; poll the videos.list endpoint to track processing state.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp