How to Run FFmpeg in Make.com Scenarios
Run FFmpeg from Make.com with no server: send the job with the HTTP Make a request module, get the result in a Custom webhook, and map the output URL.
To run FFmpeg from Make.com, send the FFmpeg job to the Xora API with the HTTP > Make a request module, and receive the result in a second scenario that starts with Webhooks > Custom webhook. The encode runs in the cloud, so the scenario only sends and receives small JSON bodies.
This guide shows the module settings, ready-to-paste bodies, and the webhook step. For the same setup in other tools, see FFmpeg in n8n and FFmpeg in Zapier.
1. Send the job: HTTP > Make a request
Add an HTTP module and choose Make a request:
| Field | Value |
|---|---|
| URL | https://api.xora.sh/v1/jobs |
| Method | POST |
| Authentication | Your Xora API key as a Bearer token: Authorization: Bearer YOUR_XORA_API_KEY |
| Body content type | application/JSON |
| Body input method | JSON string |
| Parse response | Yes, so id and state can be mapped |
The body
This body compresses a video with the compress recipe:
{ "mode": "recipe", "input": { "url": "https://example.com/raw_input.mov" }, "output": { "format": "mp4" }, "recipe": { "name": "compress", "crf": 28 }, "webhookUrl": "https://hook.make.com/your-webhook-id"}Map the input URL from an earlier module in place of the example URL, for example a file URL from Google Drive or Dropbox that anyone with the link can read. The response is { id, state }.
Raw FFmpeg arguments
For any other job, send the arguments as an array:
{ "mode": "ffmpeg", "input_files": { "in_1": "https://example.com/raw_input.mov" }, "output_files": { "out_1": "clip_720p.mp4" }, "ffmpeg": { "args": ["-i", "{{in_1}}", "-vf", "scale=-2:720", "-c:v", "libx264", "-crf", "23", "-c:a", "aac", "{{out_1}}"] }, "webhookUrl": "https://hook.make.com/your-webhook-id"}Make also uses double curly braces for mapped values. Type {{in_1}} and {{out_1}} as plain text in the JSON string, and check the module’s output after the first run to see that they 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: Webhooks > Custom webhook
- Create a new scenario. Add Webhooks > Custom webhook as the trigger and copy its URL.
- Put that URL in
webhookUrlin the job body. - Run one job, so Make can detect the data structure 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 Router or a filter on
data.state, then send the link where you need it.
The webhook request has no signature, so keep the webhook 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.
Polling in place of a webhook
If you do not want a second scenario, add a Sleep module and an HTTP Make a request with GET https://api.xora.sh/v1/jobs/{id}, and repeat until the state is completed, failed, rejected or cancelled. A webhook uses fewer operations.
3. Common errors
| Error | Cause | Fix |
|---|---|---|
401 | The API key is missing or wrong. | Check the Bearer token. |
400 VALIDATION_ERROR | A field in the body is wrong, or a placeholder was replaced by Make. | 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. |
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. Make counts operations separately, on your Make plan. See pricing.
Related
- How to run FFmpeg in n8n workflows.
- How to process video with FFmpeg in Zapier.
- How to run FFmpeg in the cloud.
Frequently asked questions
Can Make.com run FFmpeg?
Make has no FFmpeg module, and a scenario cannot run a binary. Send the job to an FFmpeg API with the HTTP Make a request module, and receive the result in a Custom webhook or by polling.
How do I send JSON from Make.com to an API?
In the HTTP Make a request module, set the method to POST, set Body content type to application/JSON, and enter the body as a JSON string or a data structure. Add your API key as a Bearer token.
How do I get the FFmpeg result back into Make?
Create a second scenario that starts with Webhooks > Custom webhook, 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 Make.com?
Yes. Use mode ffmpeg with input_files, output_files and an args array in the JSON string body. Each array element goes to FFmpeg as one argument, so filter graphs need no shell quoting.