API & Claude
Let Claude — or your own scripts — upload videos to a channel, write their YouTube title, description and tags, send them to your team for review, and publish them. Available on the Studio plan and above. Examples below use a sample travel channel, Pocket Atlas.
Connect Claude (claude.ai, desktop & mobile)
- In Claude open Settings → Connectors → Add custom connector.
- Name: VideoUpload · URL:
https://www.videoupload.team/mcp - Click Connect, sign in to VideoUpload, pick the workspace and click Allow.
Then just ask, for example:
"Upload https://www.dropbox.com/s/…/lisbon-trams.mp4?dl=1 to Pocket Atlas, title it 'Lisbon by Tram in One Day', write a description and tags, and publish it as unlisted." "Which Pocket Atlas videos are still processing?" "Make the Lisbon video public."
Claude publishes as unlisted unless you ask for public, and only changes a video to public when you ask. Disconnect anytime on your workspace's Claude & API page.
Claude Code
Create a key on your workspace's Claude & API page (owners and admins), then:
claude mcp add --transport http videoupload https://www.videoupload.team/mcp \ --header "Authorization: Bearer vu_live_k1a2b3c4d5e6_…"
Or leave out the header — Claude Code will open the VideoUpload sign-in in your browser instead.
API keys
Every request sends Authorization: Bearer vu_live_…. A key belongs to one workspace and acts as the admin who created it — it stops working if they leave the workspace or stop being an admin. Limit: 120 requests per minute per key. Errors look like { "error": { "code": "…", "message": "…" } }.
Endpoints
List channels
curl https://www.videoupload.team/api/v1/channels \ -H "Authorization: Bearer vu_live_k1a2b3c4d5e6_…"
Create a video and upload its file
With source_url, VideoUpload downloads the file from a public https link. Without it, the response has a tus endpoint and headers to upload the file yourself (resumable).
curl -X POST https://www.videoupload.team/api/v1/videos \
-H "Authorization: Bearer vu_live_k1a2b3c4d5e6_…" -H "Content-Type: application/json" \
-d '{
"channel_id": "ch_pocket_atlas",
"title": "Lisbon by Tram in One Day",
"source_url": "https://www.dropbox.com/s/abc/lisbon-trams.mp4?dl=1"
}'Check status
status is one of waiting_for_file, uploading, processing, ready, publishing, scheduled, published, failed.
curl https://www.videoupload.team/api/v1/videos/VIDEO_ID -H "Authorization: Bearer vu_live_k1a2b3c4d5e6_…" curl "https://www.videoupload.team/api/v1/videos?channel_id=ch_pocket_atlas&status=processing" -H "Authorization: Bearer vu_live_k1a2b3c4d5e6_…"
Set the YouTube details
curl -X PATCH https://www.videoupload.team/api/v1/videos/VIDEO_ID \
-H "Authorization: Bearer vu_live_k1a2b3c4d5e6_…" -H "Content-Type: application/json" \
-d '{
"title": "Lisbon by Tram in One Day",
"description": "Riding the famous Tram 28 from Martim Moniz to Prazeres…",
"tags": ["lisbon", "tram 28", "portugal travel"],
"privacy": "unlisted",
"publish_at": "2026-11-01T15:00:00Z",
"thumbnail_url": "https://example.com/lisbon-thumb.jpg"
}'Send for review
Moves the card to the channel's review stage and notifies the workspace's owners and admins.
curl -X POST https://www.videoupload.team/api/v1/videos/VIDEO_ID/submit \
-H "Authorization: Bearer vu_live_k1a2b3c4d5e6_…" -H "Content-Type: application/json" \
-d '{ "message": "First cut ready" }'Publish to YouTube (owners & admins)
curl -X POST https://www.videoupload.team/api/v1/videos/VIDEO_ID/publish \
-H "Authorization: Bearer vu_live_k1a2b3c4d5e6_…" -H "Content-Type: application/json" \
-d '{ "privacy": "unlisted" }'
curl -X POST https://www.videoupload.team/api/v1/videos/VIDEO_ID/visibility \
-H "Authorization: Bearer vu_live_k1a2b3c4d5e6_…" -H "Content-Type: application/json" \
-d '{ "privacy": "public" }'YouTube rules
- Titles up to 100 characters, descriptions up to 5,000, tags up to 500 characters in total; no < or >.
- Schedules must be at least 10 minutes ahead. A scheduled video stays private until its time.
- Thumbnails: public https JPG or PNG, up to 2 MB.
- While Google finishes reviewing VideoUpload's YouTube access, YouTube keeps videos published through VideoUpload private. Responses include a
youtube_notewhile this applies.
Questions? support@videoupload.team
