Caption TikTok Shop videos for every market — without colliding with the feed
9:16 safe-zone-aware captions. Translated per market. Backend API
Vertical shop videos lose the message when captions collide with the cart button, the price tag, or the for-you UI. ZapCap is the caption-rendering and translation API that places safe-zone-aware captions and localizes them per market, so cross-border product clips read clearly on every feed.
Vertical video is unforgiving, and you sell across borders
On TikTok Shop the frame is the constraint. A 9:16 product clip has a cart button, a price tag, and feed chrome fighting your caption for the same pixels — and the buyer reads it in a different language. Place the caption wrong and it sits under the cart; translate it wrong and the hook dies in the new market. ZapCap fixes both in one render call, per market.
- UI collision — captions buried under cart, price, and feed chrome.
- Safe-zone discipline — top and bottom thirds change meaning per platform.
- Cross-border copy — the hook must land in the buyer's language, not a literal gloss.
- Vertical re-renders — the same clip re-cut per market by hand.
- CJK / Thai layout — wrapping and line-break rules differ by script.
- Catalog velocity — new products daily, each needing localized cuts now.
Where ZapCap sits in your shop pipeline
Run ZapCap behind your seller tooling as the caption layer for finished 9:16 product clips. Your backend sends one vertical source clip, requests a safe-zone-friendly caption preset per market, and files each localized cut back to the storefront that needs it.
One vertical clip, a localized cut per market
Upload the 9:16 source once, then fire a render task per market with translateTo and a safe-zone-friendly preset. Each localized cut arrives via webhook, ready to upload per storefront.
{
"eventId": "evt_8kQ2...",
"taskId": "tsk_2hP4...",
"event": "render.completed",
"renderUrl": "https://cdn.zapcap.../shop-th.mp4"
}- Map taskId → market / storefront when you create the task.
- Verify the x-signature header before fetching renderUrl.
- Dedupe webhook deliveries on eventId.
Lifecycle of a localized shop cut
Each market is its own task. Track them so sellers can upload each localized cut to the matching storefront the moment it lands.
Before you go cross-border
A short list to keep vertical, localized cuts on-brand and inside the safe zone. Placement, terminology, and delivery in one place.
- Safe-zone caption preset Pick a templateId whose caption position keeps clear of cart, price, and feed UI.
- Tight word count per cue Use subsOptions.displayWords so captions never overflow the 9:16 frame.
- Product terms in your dictionary Feed product and brand names so transcription gets them right before translation.
- Market list as code Drive the cross-border fan-out from one source of truth.
- Per-storefront delivery convention File each renderUrl by market so the right cut reaches the right shop.
- Webhook signature verified Check x-signature on every payload; dedupe on eventId.
- Credit-balance check before a fan-out Cross-border means many renders — confirm balance before queueing.
The vertical localization stack, honestly
In-house shop-video pipeline
- 1ASR + translation wiring — vendors, retries, terminology control.
- 2Safe-zone layout logic — keep captions clear of 9:16 feed UI.
- 3Per-cue word fitting — wrapping for CJK / Thai inside a tall frame.
- 4Render workers — ffmpeg / libass, autoscaling for catalog spikes.
- 5Per-market tracking — one clip, many localized cuts.
- 6Output storage — pre-signed URLs, expiry, cleanup.
- 7Billing meter — per-minute counters across the catalog.
Localized vertical captions as a primitive
- 1POST /videos — upload the 9:16 clip once.
- 2translateTo per task — a safe-zone cut per market.
- 3Webhook handler — verify, file by market, upload.
A cross-border social commerce seller wired the ZapCap API into their seller tooling and localizes every vertical shop clip per market with captions that stay clear of the feed UI
Each new product clip is uploaded once and fanned out into safe-zone-aware, localized cuts per storefront through a webhook handler — instead of an editor manually re-placing captions per market.
For social commerce sellers
Pick a templateId from GET /templates whose caption position sits in the safe zone for vertical feeds, and reuse it across markets. Keeping a tight word count per cue with renderOptions.subsOptions.displayWords also stops captions overflowing the 9:16 frame where the platform UI lives.
Build the rest of the shop pipeline
E-commerce video localization
The broader product-catalog workflow for many SKUs, channels, and storefronts.
Read morePerformance creative localization
Rapid ad-variant testing when a winning creative needs market-specific cuts.
Read moreMultilingual subtitle rendering
The per-script layer behind shop cuts — CJK and Thai wrap correctly inside the vertical frame.
Read moreBurned-in subtitles API
Bake captions into the MP4 so they survive re-uploads and feeds.
Read moreAnimated captions API
The animation and emphasis that make vertical captions pop.
Read morevs JSON2Video
When templated, data-driven assembly is the right pick instead of ZapCap.
Read moreCase study · E-commerce
How a seller localizes every product clip from one master.
Read moreCaption shop videos for every market
Backend-only API, webhook-native, from $0.10/min base usage pricing. Safe-zone-aware captions, localized per market, on every feed.