2026-10-09 · 4 min read

Caption videos in Zapier with Webhooks by Zapier

If a Zap already produces or receives a video, the caption step does not need a custom integration. The caption.sh API is three HTTP calls, and Webhooks by Zapier can make all of them.

The Zap

  • Webhooks by Zapier, Custom Request: POST https://api.caption.sh/v1/videos with a JSON body holding the video URL. The response is a 202 with a job_id.
  • Delay For, then Webhooks by Zapier, GET https://api.caption.sh/v1/jobs/{job_id}. Add a Filter step that only continues when status is done.
  • Webhooks by Zapier, GET https://api.caption.sh/v1/jobs/{job_id}/result. Zapier can hand the returned file to Google Drive, Slack or a social app in the next step.

Authentication

Create an API key in the caption.sh dashboard. In the Custom Request step add a header named Authorization with the value Bearer followed by your key. Zapier does not have a shared secret store for this, so use a dedicated key for the Zap and rotate it if you share the Zap with someone.

The submit body

{
  "source_url": "{{video_url}}",
  "options": { "max_words": 3 }
}

Set Data Pass-Through to false and send the body as raw JSON with a Content-Type header of application/json. The video has to be reachable by URL. If an earlier step gave you a file instead, use the upload flow: the submit call returns a signed upload URL, you PUT the bytes to it, and the job starts when the upload finishes.

Waiting without extra tasks

Zapier has no loop, so a fixed Delay For step is the simple choice. Pick a delay that fits your clip length, check the status once, and let the Filter stop the Zap if the job is not done. If you need retries, run a second Zap on a schedule that checks open jobs. A 402 on the submit means the prepaid balance is empty and a 422 means the input was rejected, so neither is worth retrying.

When this is the wrong tool

caption.sh burns captions into the video. It does not export SRT or VTT sidecar files. If a later step needs a transcript file, get it from a transcription step and use caption.sh for the version people watch on a feed.

Try it

Judge the output in the playground at caption.sh first, then build the three steps above. The reference is at caption.sh/docs and the OpenAPI spec is at api.caption.sh/openapi.json.

Back to all articles