Vimeo automation · runs weekly
Add captions to Vimeo videos in bulk
You finished a batch of training videos and the caption files are ready. Vimeo takes them one video at a time, so someone opens each video, picks a language and a type, and uploads.
Cotlet does it in your own Vimeo account with search_videos, get_video and upload_captions, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Can Vimeo do this on its own?
Vimeo has no bulk caption upload in the app. The API can upload a text track, but it takes three calls per track (create the track, upload the file, set it active) and a token with the upload and edit scopes (checked 17 Oct 2026). Paid plans also get automatic captions for videos uploaded after 25 May 2022, which are machine transcripts, not your own files.
How you do it in Vimeo today
- Open Library and click the video.
- Click the Languages button in the toolbar to the left of the player.
- Click the + button at the top of the languages window.
- Upload the file from your computer.
- Use the dropdown menus next to the file name to choose the Language and the Type, Subtitle or Caption.
- Click Upload. Then repeat for the next video and the next language.
How to add captions to Vimeo videos in bulk
Find videos in my Vimeo library that have no captions. For each one, upload the WebVTT file with the same name from my captions folder as English captions. List the videos with no matching file. - 01
Find videos without captions
search_videos pages through the library, and get_video shows whether each video already has a text track in your language. A video that has one is skipped, so a rerun never doubles a track.
- 02
Match files to videos
The agent pairs each video with the caption file that carries its title or ID. A video with no matching file is reported at the end, not guessed.
- 03
Check the file
Before upload the agent checks the format. A WebVTT file must start with WEBVTT, an SRT file must start with the first cue number, and both must be UTF-8. A file that fails is reported with the reason.
- 04
Upload with language and type
upload_captions sets the Language and the Type for each file, Caption or Subtitle, the same two choices as the dropdowns in the Languages window. Every call asks for your OK until you switch confirmation off for upload_captions.
- 05
Report the rest
The agent lists what it uploaded, what it skipped because a track existed, and what had no file.
What you get back
Videos checked: 12
Captions uploaded (English): 9
- Onboarding 01 to Onboarding 07
- Pricing walkthrough
- Security overview
Skipped, track already there: 1 (Welcome video)
No file found: 2
- Admin training part 1
- Admin training part 2 Other ways to ask
- Upload the Spanish subtitles for the same videos, type Subtitle, and change nothing else.
- Every Friday, list videos uploaded this week that still have no captions and tell me.
- Check my caption files for format errors and upload nothing.
What Vimeo allows, and what to know first
- Vimeo accepts SRT and WebVTT caption files and recommends WebVTT.
- Caption files must be UTF-8 for special characters to display correctly.
- A WebVTT file must start with WEBVTT and use timecodes like 00:00:00.000. An SRT file uses a comma in the timecode, 00:00:00,000.
- The "Unexpected Text Track Upload Type" error means the file is not SRT or WebVTT.
- Every Vimeo plan has captions, but some options depend on the plan. Vimeo also sells captions through Rev from the same Languages tab.
upload_captions asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.
Sources: Vimeo Help: How to add captions or subtitles to my video · Vimeo Help: Troubleshooting caption file types · Vimeo developers: Working with Text Track Uploads
Call upload_captions from a script
curl -X POST https://cotlet.dev/api/v1/vimeo/videos/912345601/captions \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"language":"en","type":"caption","content":"WEBVTT\n\n00:00:00.000 --> 00:00:03.500\nWelcome to the onboarding series.\n"}' {
"video_id": "912345601",
"language": "en",
"type": "caption",
"format": "webvtt",
"active": true
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is vimeo_write → upload_captions. Example data.
Schedule it in n8n, Make, Zapier or cronVimeo tools this automation uses
| Tool | Parameters |
|---|---|
| search_videos | query, tag, folder_id, cursor |
| get_video | video_id |
| upload_captions | video_id, language, type, content |
Frequently asked questions
Is it safe to connect Vimeo to Cotlet?
Yes. You sign in to Vimeo yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Vimeo once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.
Give your agent access to Vimeo.
Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Vimeo.