ffmpeg API — convert, compress, trim, GIF, thumbnail
Pricing
from $20.00 / 1,000 media operations
ffmpeg API — convert, compress, trim, GIF, thumbnail
Run ffmpeg over HTTP: POST a media URL to /convert, /compress, /trim, /gif, /thumbnail or /extract-audio and get the result back. Pay per operation, no infrastructure.
Pricing
from $20.00 / 1,000 media operations
Rating
0.0
(0)
Developer
Synthetic
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
11 hours ago
Last modified
Categories
Share
ffmpeg API — media processing over HTTP
Run ffmpeg in the cloud without any infrastructure. Send a media URL to an endpoint and get the processed file back. Convert, compress, trim, make GIFs, grab thumbnails or extract audio — all pay-per-operation, no server to manage, no ffmpeg to install.
- ⚡ HTTP API (Standby):
POST /<operation>with a JSON body, get a JSON reply with a link to the result - 🔒 Safe by design: you send URLs and parameters, never raw shell commands
- 💵 Pay per operation, from $0.02
- 🤖 Callable from any language, from n8n/Make/Zapier, or from an AI agent
Endpoints
Base URL (Standby): https://synthetic-ia--ffmpeg-api.apify.actor with header Authorization: Bearer <APIFY_TOKEN>.
| Endpoint | Body | Does |
|---|---|---|
POST /convert | { url, format: mp4|webm|mkv|mov } | Transcode to another container/codec |
POST /compress | { url, crf?: 18-40, preset?: ultrafast..slow } | Re-encode smaller (H.264) |
POST /trim | { url, start?, duration? } | Cut a clip (seconds or HH:MM:SS) |
POST /gif | { url, start?, duration?: 0.5-15, fps?: 4-30, width?: 120-1080 } | High-quality GIF from a clip |
POST /thumbnail | { url, time?, width?: 120-1920 } | Still JPG at a moment |
POST /extract-audio | { url, format: mp3|aac|m4a|wav|ogg|flac } | Pull the audio track |
POST /advanced | { inputs:[url,…], filterComplex?, map?, outputFormat, videoCodec?, audioCodec?, crf?, preset?, videoBitrate?, audioBitrate?, fps?, size?, pixFmt? } | Full ffmpeg: any filtergraph + codecs, safely validated |
POST /async | { operation, …params } → { runId } | Start a long job; then GET /status/<runId> |
GET /status/<runId> | — | Poll an async job; returns the result when done |
GET / returns this list as JSON.
Full power — /advanced
Expose (almost) everything ffmpeg can do through a validated interface: pass up to 4 inputs and a filterComplex graph (overlays, concat, scaling, color, speed, watermarks, hstack/vstack…), pick codecs/format/bitrate/fps/size. For safety, file-access filters (movie, subtitles, …) and extra inputs are rejected — you can't read the server's files.
curl -X POST "https://synthetic-ia--ffmpeg-api.apify.actor/advanced" \-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \-d '{"url":"https://example.com/clip.mp4","filterComplex":"[0:v]scale=720:-1,hue=s=0[v]","map":["[v]"],"outputFormat":"mp4","crf":24}'
Long jobs — /async
Heavy transcodes can exceed the 4-minute synchronous window. Start them async and poll:
RID=$(curl -s -X POST ".../async" -H "Authorization: Bearer $APIFY_TOKEN" -d '{"operation":"convert","url":"…","format":"webm"}' | jq -r .runId)curl ".../status/$RID" -H "Authorization: Bearer $APIFY_TOKEN" # → { "status": "SUCCEEDED", "result": { "url": "…" } }
Response
{ "ok": true, "operation": "gif", "url": "https://api.apify.com/v2/key-value-stores/.../records/output/gif-....gif", "contentType": "image/gif", "sizeBytes": 812345, "tookMs": 1840 }
Example
curl -X POST "https://synthetic-ia--ffmpeg-api.apify.actor/gif" \-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \-d '{"url":"https://example.com/clip.mp4","start":"0:03","duration":4,"width":480}'
Prefer a one-off run? Start the Actor normally with input { "operation": "compress", "url": "https://…", "crf": 30 }.
Limits
- Input max 250 MB, http(s) URLs only.
- Synchronous response under 4 minutes — great for clips, thumbnails, GIFs, conversions. For very long transcodes, run it as a normal (async) Actor run.
- No GPU (Apify is CPU-only), so no hardware encoding; H.264/VP9 software encoding is used.
Pricing
Per successful operation, from $0.02 on higher plans (platform usage included). You only pay when an operation succeeds.
FAQ
Can I send raw ffmpeg commands? No — for security you use the endpoints above with parameters. This covers the common operations safely. Need another operation exposed? Open an issue.
Where does the output go? To the run's key-value store; the response gives you a direct URL to download it.