Introduction
FFHub is cloud FFmpeg as a REST API. Send a command, get the output URL.
FFHub turns FFmpeg into a REST API. You send a normal ffmpeg command, we run it on managed cloud workers, you get back a URL to the output file. No servers to set up, no codecs to install, no ops.
Use it with AI (fastest path)
The fastest way to integrate FFHub is to hand the docs to an LLM and let it write your client code. Paste the prompt below into ChatGPT, Claude.ai, Gemini, or your IDE assistant (Cursor / Claude Code / etc.). It already references our llms.txt so the model has the right context.
I want to integrate the FFHub video processing API into my project.
Context for you:
- Project overview: https://www.ffhub.io/llms.txt
- API spec: https://api.ffhub.io/openapi.json
What I want to do: <describe your task — e.g. "convert MP4 to MP3 at 192kbps", "extract a thumbnail at 5 seconds", "compress a video to under 10 MB">
Language / runtime: <Node.js / Python / Go / Bash / ...>
Please write a complete, runnable script that:
1. If I have a local file: POST /v1/uploads/sign to get a presigned URL, then PUT the file directly to that URL. Use the returned public_url as the FFmpeg input.
2. POST /v1/tasks with a `command` field containing the FFmpeg arguments and the input URL.
3. Poll the task by GET /v1/tasks/{id} until status is succeeded or failed, then download from outputs[0].url.
Read my API key from the FFHUB_API_KEY environment variable.
Try it in Postman
A public Postman workspace is the fastest way to kick the tires:
- FFHub public workspace — fork it into your own Postman, plug in your access token, run requests in seconds.
OpenAPI spec
The full machine-readable spec is at api.ffhub.io/openapi.json — covers task management, account info, and the upload-signing endpoint. Paste the URL into Postman, Bruno, or Insomnia, or feed it into openapi-generator / openapi-typescript to scaffold a typed client in any language.
All endpoints take a Bearer access token created at /dashboard/api-keys. GET /v1/tasks/{id} is currently callable without a token for backward compatibility with older ffhub-cli releases — we plan to require authentication in a future release.
What you can do
- Transcode and convert: any-to-any, MP4 / WebM / HLS / GIF, codec switching
- Compress and resize: shrink files, change bitrate or resolution
- Edit: trim, merge, crop, rotate, add watermarks or subtitles
- Extract: audio, frames, thumbnails, metadata
- Anything else
ffmpegcan do — we just run your command
How billing works
- 1 credit = 5 seconds of processing time, billed per second
- $1 ≈ 1,000 credits
- Free credits on signup, no subscription, credits never expire
You only pay for actual processing time, not queue time.
Browse the docs
Pick the path that fits how you plan to use FFHub:
Getting started — read these in order if you've never used FFHub.
- Quickstart — submit your first task in 3 minutes (curl + Node.js + Python).
- Upload files — turn a local file into a URL the API can read (multipart, base64, or remote URL).
Code examples — when you want to copy-paste working code.
- Examples — common FFmpeg recipes (transcode, compress, trim, extract audio, watermark).
- SDK & code examples — the same tasks in Node.js / Python / Go.
- Video compression — H.264 vs H.265 vs VP9, CRF tuning, two-pass.
Integrations — when you don't want to write HTTP code at all.
- CLI tool —
npm install -g ffhub, run jobs from your terminal, local files upload automatically. - n8n community node — drop FFHub into n8n visual workflows.
- Claude Code skill — use FFHub from Claude Code as a managed FFmpeg toolbox.
If you want a higher-level overview before diving into endpoints, the FFmpeg API guide covers what the API is for, how it compares to running FFmpeg yourself, and which use cases it's built for.
Support
- GitHub — ffhub-io/ffmpeg-cookbook for issues and recipes
- Email — [email protected]
- Feedback — share what's broken or what you want at /dashboard/feedback