Subtitle API
Video in, styled captioned video out
ZapCap renders finished, styled captioned videos through an API. Send a video URL, choose a caption style, and get a burned-in MP4 — or a transparent overlay — back. Not a transcript API. Not a generic video automation API.
Three APIs you might be choosing between
If you're shipping captions to viewers, only one of these returns a video they can actually watch.
OPTION 01
- Returns text or SRT
- You handle timing
- You handle styling
- You handle rendering
OPTION 02
- Returns timed text file
- No styling
- Ignored on social
- You handle burn-in
OPTION 03 · YOU ARE HERE
- Returns finished MP4
- Styled captions baked in
- Transparent / green-screen
- Webhook-native
OPTION 04
- Full video generation
- Build templates
- JSON timeline assembly
- Captions are one element
Captioned videos in a few calls
Upload a clip, fire a task, get a webhook. We handle transcription, styling, and rendering — you get the MP4 when it's ready.
- 1
Upload your video
POST the file to /videos. We stream it to storage and hand you back a videoId.
POSTPOST /videos - 2
Create the captioning task
One POST starts transcription, styling and rendering with your chosen template. Add a notification webhook to skip polling.
POSTPOST /videos/:id/task - 3
Receive the webhook
We POST status updates to your endpoint as the render moves through transcribing → rendering → completed.
HOOKPOST → your URL - 4
Download the finished render
Burned-in subtitles, served from a global CDN. No watermark. MP4 ready for any social platform.
GETGET renderUrl
POST /videos·Upload your video
Same clip, four caption styles, one field change
Switch the templateId in the request body. ZapCap returns a fully rendered MP4 — no client-side compositing.
Source is a 9:16 vertical clip. Captions render into the final frames — downstream platforms don't need subtitle-track support.
Style with one field
Override at the leaf.
Send a templateId for one of our presets, or override individual renderOptions for full control. Animation, emoji, keyword highlighting, position, font and color all toggle independently.
- Templates — Beast, Hormozi, Tracy, Devin, plus 25 more (29 presets). Each preset captures a complete look.
- Animation — word-by-word pops, karaoke fill, fade in/out, scale bumps.
- Keyword emphasis — flag punchwords; ZapCap colors / scales / boxes them automatically.
- Layout — font, color, stroke, shadow, max words per cue, vertical position with safe-zone math.
- Aspect ratios — render 9:16, 1:1, 16:9 from one source.
{
"templateId": "46d20d67-255c-4c6a-b971-31fddcfea7f0",
"renderOptions": {
"subsOptions": {
"emphasizeKeywords": true,
"animation": true,
"displayWords": 3
},
"styleOptions": {
"fontUppercase": true,
"fontShadow": "l"
}
}
}Auto-transcribe — or bring your own
Auto-transcribe
ZapCap transcribes, splits, and times captions automatically. Edit any cue, approve the transcript, and trigger a render against it.
- Inspect the transcript on the task status, edit via PUT /videos/:id/task/:taskId/transcript
- Edit cues before render, no extra credit cost
- Reuse one transcript across multiple template variants
Bring your own transcript
Send approved cues — from your translation vendor, internal CMS, or Whisper pipeline — and skip transcription entirely.
- Supported via the SRT-to-burned-in workflow
- Preserve approved product names, claims, disclaimers
- Render the same transcript into N styles for A/B variants
Pick the format your downstream pipeline wants
Burned-in MP4
Captions permanently rendered into the source frames. The right choice for TikTok, Reels, Shorts, ad creative, and anywhere subtitle tracks get ignored.
Transparent overlay
Caption layer only, alpha-channel preserved. Drop it on a timeline in Premiere, Final Cut, DaVinci, or CapCut — no chroma key needed.
Green-screen layer
When the editor or live tool doesn't support alpha. Key out the green in OBS, switcher, or NLE.
Need an accessibility track too? Burned-in captions are best for social distribution; pair with SRT/VTT export where viewer controls are required.
Translate, restyle, re-render
Set language on the task and ZapCap transcribes, translates, and lays out captions for that target. CJK and Thai use language-aware line-breaking — not whitespace splitting.
- Source video in one language, output captions in another
- A dictionary of brand terms biases transcription toward your product names
- Language-specific guides: Chinese, Japanese, Thai
Per-minute, usage-based credits
Pay for what you render. Transparent overlays and high-resolution exports use different multipliers — see pricing for the full table.
- Top up credits to keep tasks flowing in production
- Volume credits available at scale
- No per-seat fee — pay for renders, not users
Indicative starting rate. Final pricing depends on render mode and output format.
A European e-commerce group cut localized caption variant production from days to hours by moving captioning to the ZapCap API
Multi-market product videos now flow through one webhook-driven pipeline. Approved transcripts in, brand-styled MP4s out — across markets, with consistent caption styling.
Render styled subtitles from one task endpoint
ZapCap is plain HTTP: upload a video, create a captioning task, then collect the burned-in MP4, transparent overlay, or green-screen layer from status or webhook delivery.
- POST /videos or /videos/url creates the source video record
- POST /videos/{videoId}/task accepts templateId, language, transcript, and renderOptions
- GET /videos/{videoId}/task/{taskId} returns status, transcript, and downloadUrl
VIDEO_ID=$(curl -s -X POST "https://api.zapcap.ai/videos/url" \
-H "x-api-key: $ZAPCAP_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://cdn.example.com/source.mp4"}' | jq -r .id)
TASK_ID=$(curl -s -X POST "https://api.zapcap.ai/videos/$VIDEO_ID/task" \
-H "x-api-key: $ZAPCAP_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "d46bb0da-cce0-4507-909d-fa8904fb8ed7",
"autoApprove": true,
"language": "en",
"renderOptions": {
"subsOptions": { "animation": true, "displayWords": 3 }
}
}' | jq -r .taskId)About the Subtitle API
A Subtitle API is an HTTP interface for adding subtitles to video programmatically. ZapCap is a styled subtitle rendering API — it accepts a video and returns a captioned MP4 (or a transparent overlay), with the captions baked into the frames. That is different from a transcription API (which returns text) or a subtitle-file API (which returns SRT/VTT).
Related caption rendering APIs
Burned-In Subtitles API
Permanent, styled captions baked into an MP4 — for platforms where subtitle tracks get ignored.
Read moreWebhook Video Captioning
Async caption workflows with signed events, retries, and eventId-based dedupe.
Read moreAnimated Captions API
TikTok / Reels / Shorts caption styles at scale — animation rendered into the frames.
Read moreTransparent Subtitle Overlays
Alpha-channel caption layers for editing pipelines. No chroma key, no source transcode.
Read moreSRT to Burned-In Subtitles
The bring-your-own-transcript path: render an approved SRT into a styled MP4 with no retranscription.
Read moreChinese Subtitles API
Render Simplified or Traditional captions with correct CJK line-breaking and font fallback.
Read moreJapanese Subtitles API
Caption Japanese video with kana/kanji-aware wrapping instead of whitespace splitting.
Read moreThai Subtitles API
Lay out Thai captions with dictionary-based word breaking for scripts that lack spaces.
Read moreFor AI video SaaS
Add caption rendering to your product without building ASR, queue workers, and ffmpeg.
Read morevs Submagic API
Caption-API workflow comparison: pricing, output modes, webhook support, transcript reuse.
Read moreStart rendering captions through the API
Create a key on a Pro plan and buy credits in the dashboard.