How to Process Video with FFmpeg in Zapier
Process video with FFmpeg from a Zap: send the job with Webhooks by Zapier, catch the result with Catch Hook, and pass the output link to the next step.
To process video with FFmpeg in Zapier, send the job to the Xora API with a Webhooks by Zapier action, and catch the result in a second Zap that starts with Catch Hook. The encode runs in the cloud, and the Zap only sends and receives small JSON bodies.
This guide shows the action settings, a ready-to-paste body, and the callback Zap. Webhooks by Zapier is on Zapier’s paid plans (Professional, Team and Enterprise), not on Free. For the same setup in other tools, see FFmpeg in n8n and FFmpeg in Make.com.
1. Send the job: Webhooks by Zapier > Custom Request
Add a Webhooks by Zapier action and choose Custom Request. It lets you send the JSON body exactly as written:
| Field | Value |
|---|---|
| Method | POST |
| URL | https://api.xora.sh/v1/jobs |
| Data | The JSON body below |
| Headers | Authorization = Bearer YOUR_XORA_API_KEY, Content-Type = application/json |
The body
{ "mode": "recipe", "input": { "url": "https://example.com/raw_input.mov" }, "output": { "format": "mp4" }, "recipe": { "name": "webReady" }, "webhookUrl": "https://hooks.zapier.com/hooks/catch/123/abc/"}Insert the file URL from the trigger step in place of the example URL, for example a link from Google Drive, Dropbox or a form upload. The URL must be one that Xora can download. The response is { id, state }.
Raw FFmpeg arguments
{ "mode": "ffmpeg", "input_files": { "in_1": "https://example.com/raw_input.mov" }, "output_files": { "out_1": "thumbnail.jpg" }, "ffmpeg": { "args": ["-ss", "5", "-i", "{{in_1}}", "-frames:v", "1", "-q:v", "2", "{{out_1}}"] }, "webhookUrl": "https://hooks.zapier.com/hooks/catch/123/abc/"}Check the test result of the step once to see that {{in_1}} and {{out_1}} were sent as written. Output names can contain only letters, numbers and underscores, plus an extension. More commands: FFmpeg cheat sheet.
2. Get the result: Catch Hook
- Create a second Zap with the Webhooks by Zapier trigger Catch Hook, and copy its URL.
- Put that URL in
webhookUrlin the job body. - Run one job, so Zapier can find a sample of the callback.
- When the job ends, Xora sends a
POSTwithdata.jobId,data.stateanddata.progress. For a completed job,data.output.signedUrlis the download link; for a failed job,data.errorsays why. - Add a Filter or Paths step on
data.state, then send the link to Slack, email, a spreadsheet or your storage.
The webhook request has no signature, so keep the Catch Hook URL private. If you must be sure that a callback is real, get the job with GET /v1/jobs/{id} before you act on it. See the webhooks guide.
3. Common errors
| Error | Cause | Fix |
|---|---|---|
401 | The API key or the Authorization header is missing. | Check the header in the action. |
400 VALIDATION_ERROR | A field in the body is wrong, or the body is not valid JSON. | Read error.message; it names the field. |
402 LIMIT_EXCEEDED | The plan’s credits are used up. | Wait for the monthly reset or change plan. |
| The job fails at once | Xora cannot download the input URL. | Use a direct file URL that is public or signed, not a preview page. |
Failed and rejected Xora jobs cost nothing. See error handling.
4. What it costs
Xora bills credits for machine time and output size. The Free plan includes 25 credits every month with no card, and Build is $15 a month for 400 credits. Zapier counts tasks separately, on your Zapier plan. See pricing.
Related
- How to run FFmpeg in Make.com scenarios.
- How to run FFmpeg in n8n workflows.
- Generate video thumbnails from a URL.
Frequently asked questions
Can Zapier run FFmpeg?
Zapier has no FFmpeg action and cannot run a binary. Send the job to an FFmpeg API with Webhooks by Zapier, and catch the result with a second Zap that starts with Catch Hook.
Is Webhooks by Zapier available on the Free plan?
No. Zapier's help pages list Webhooks by Zapier on the Professional, Team and Enterprise plans, not on Free.
How do I get the FFmpeg result back into Zapier?
Make a second Zap with the Webhooks by Zapier trigger Catch Hook, and put its URL in the job's webhookUrl field. When the job ends, Xora sends the job ID, the state and, for a completed job, a signed URL for the output.
Can I send raw FFmpeg arguments from Zapier?
Yes. Use the Custom Request action with a JSON body that has mode ffmpeg, input_files, output_files and an args array. Each array element goes to FFmpeg as one argument.