🌟 Introduction
ZapCap is a REST API for programmatically adding high-quality animated subtitles to videos. Process videos in 48 languages with up to 99.9% transcription accuracy, and transform them using 20+ designer templates.
Quick example using jq and curl: Add animated subtitles to a video
# First, upload the video and get the ID
VIDEO_ID=$(curl -X POST "https://api.zapcap.ai/videos" \
-H "x-api-key: YOUR_API_KEY" \
-F "file=@video.mp4" | jq -r .id)
# Then create the task using the video ID
curl -X POST "https://api.zapcap.ai/videos/$VIDEO_ID/task" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "template_id",
"autoApprove": true
}'For complete examples in Node.js, Python, and curl, see our caption-a-video guide
Why Choose ZapCap?
- High-Performance Processing: Process 4k videos in minutes
- Enterprise-Ready: Scale to thousands of videos with 99.9% uptime SLA
- Developer-First: Well-documented REST API with official SDKs for Node.js
- Production-Tested: Powers subtitle generation for Fortune 500 companies and leading content creators
🛠 Core Features
📝 Advanced Transcription Engine
- 99.9% accuracy across 48 languages
- Automatic punctuation and formatting
- Custom vocabulary handling (coming soon)
🎨 Powerful Template System
// Customize templates programmatically
{
"renderOptions": {
"subsOptions": {
"emoji": true,
"animation": true,
"emphasizeKeywords": true
},
"styleOptions": {
"fontSize": 46,
"fontColor": "#ffffff"
}
}
}
⚡ Built for Scale
- Asynchronous processing with webhooks
- Regional edge processing
- Automatic content delivery via CDN
🎯 Common Use Cases
1. Content Management Systems
Automatically generate subtitles when videos are uploaded to your CMS:
// Example webhook integration
app.post('/webhook', (req, res) => {
const { videoUrl } = req.body;
await zapcap.createTask({
url: videoUrl,
template: TEMPLATE_ID,
language: 'auto'
});
});
2. Video Editing Platforms
Embed subtitle generation directly in your video editor:
// Example React integration
const SubtitleButton = () => {
const addSubtitles = async (videoId) => {
const task = await zapcap.createTask({
videoId,
template: TEMPLATE_ID,
autoApprove: true,
});
// Poll for completion
};
};
3. Social Media Automation
Automatically create social-ready versions of your videos:
// Example automation script
async function createSocialVariants(videoUrl) {
return Promise.all(
formats.map((format) =>
zapcap.createTask({
url: videoUrl,
template: TEMPLATE_ID,
})
)
);
}
🚀 Get Started
- Get your API key
- Follow our 5-minute quickstart
- Explore the full API reference