All posts
zapier ffmpeg

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:

FieldValue
MethodPOST
URLhttps://api.xora.sh/v1/jobs
DataThe JSON body below
HeadersAuthorization = 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

  1. Create a second Zap with the Webhooks by Zapier trigger Catch Hook, and copy its URL.
  2. Put that URL in webhookUrl in the job body.
  3. Run one job, so Zapier can find a sample of the callback.
  4. When the job ends, Xora sends a POST with data.jobId, data.state and data.progress. For a completed job, data.output.signedUrl is the download link; for a failed job, data.error says why.
  5. 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

ErrorCauseFix
401The API key or the Authorization header is missing.Check the header in the action.
400 VALIDATION_ERRORA field in the body is wrong, or the body is not valid JSON.Read error.message; it names the field.
402 LIMIT_EXCEEDEDThe plan’s credits are used up.Wait for the monthly reset or change plan.
The job fails at onceXora 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.

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.

Ready to try Xora?

Replace your local FFmpeg binaries with a secure, high-performance cloud API.