Caption every client in their own style — from one integration
White-label client presets. Webhook delivery into your portal. Per-minute billing
Every client wants their own caption look, and every deliverable has a deadline. ZapCap is the white-label caption-rendering API behind your agency workflow: store a style preset per client, render against it on demand, and deliver finished MP4s straight into your client portal over a webhook.
Many clients, many styles, one deadline at a time
Agency captioning is a multi-tenant problem. Each client has a brand look, a turnaround expectation, and a place they want files delivered. Done in an editor, every clip is a manual ticket; the work scales with headcount, not with the API call it should be.
- Style fragmentation — a different caption look per client, remembered by hand.
- Manual deliverables — every clip exported and uploaded by an editor.
- Client tenancy — keeping one client's files and styling out of another's.
- Portal delivery — finished files have to land in the right client space.
- Approval loops — transcript review before render, per client.
- Margin pressure — caption labour eats the margin on volume work.
Where ZapCap sits in your agency stack
Drop the API behind your white-label portal. Each client maps to a stored style preset; your backend renders against it and routes the finished file back into that client's space.
Per-client presets, delivered to your portal
Look up the client's stored templateId, render against it, and let the webhook drop the finished file into that client's portal space. The agency holds one API key behind a white-label workflow; clients never see ZapCap.
{
"eventId": "evt_8kQ2...",
"taskId": "tsk_2hP4...",
"event": "render.completed",
"renderUrl": "https://cdn.zapcap.../acme-clip.mp4"
}- Map taskId → client when you create the task.
- Verify the x-signature header before fetching renderUrl.
- Dedupe webhook deliveries on eventId.
Lifecycle of a client deliverable
Map each ZapCap status onto the delivery state your portal shows the client — and route the finished file to the right tenant on completion.
Before you onboard your first client
A short list to keep a multi-tenant captioning workflow clean. Tenancy, presets, and delivery in one place.
- Client → templateId mapping Store each client's saved caption preset (a templateId from GET /templates).
- taskId → client mapping So the webhook files every render into the right tenant's portal space.
- White-label server-only API key One agency key, never exposed to clients or client-side code.
- Optional transcript-approval step Let clients review the transcript before render where the brief needs it.
- Portal delivery hook On the webhook, drop the file into the client space and notify the account owner.
- Webhook signature verified Check x-signature on every payload; dedupe on eventId.
- Per-client usage reporting Track render minutes per client for billing and margin.
The agency captioning stack, honestly
In-house multi-tenant pipeline
- 1ASR vendor wiring — accuracy, retries, language coverage.
- 2Per-client style engine — reproduce each brand's caption look.
- 3Tenancy & isolation — keep one client's assets out of another's.
- 4Render workers — ffmpeg / libass, autoscaling for deadlines.
- 5Job tracking — taskId → client, retries, observability.
- 6Portal delivery — route files to the right client space.
- 7Usage reporting — per-client minute counters for billing.
Captioning as a primitive
- 1Stored templateId per client — render against it on demand.
- 2POST /videos/:id/task — one call per deliverable.
- 3Webhook → portal — verify, file by client, notify.
A creative agency wired the ZapCap API into its client portal and now renders each client's captions in their own saved style, delivered automatically over a webhook.
Captioning stopped being an editor ticket per clip and became a stored preset plus an API call. Finished deliverables land in the right client space without a human moving files between folders.
For agencies
Store a templateId per client in your own database — each is a saved caption preset from GET /templates. When you render a deliverable, look up that client's templateId and pass it on the task, so every clip comes back in the right brand look without anyone remembering it by hand.
Build the rest of the agency workflow
AI video SaaS captioning
The same backend pattern, framed for product teams.
Read moreMultilingual subtitle rendering
Offer clients captions in their markets — per-script layout for CJK, Thai, and beyond.
Read moreE-commerce video localization
For agency clients selling cross-border: one master clip, a localized cut per market.
Read moreWebhook video captioning
Event types, signature verification, eventId dedupe, polling fallbacks.
Read moreVideo captioning API
The core capability — workflow, code, and output modes.
Read morevs Submagic
When an end-user editor beats an API for a particular client.
Read morevs Shotstack
When full video assembly is the right pick instead of ZapCap.
Read moreCase study · Agency workflow
How an agency renders per-client captions straight into its portal.
Read moreCaption every client from one integration
Backend-only API, webhook-native, from $0.10/min base usage pricing. Per-client presets in, branded deliverables in your white-label portal out.