FatBabyAPIVideo Processing API for Developers
Run allowlisted video operations without raw FFmpeg filters. Upload a file to /v1/video/* endpoints, receive a job, poll /v1/jobs/:jobId, then download. Related audio extract and GIF-from-video endpoints share the same wallet.
Features
What this API actually supports in production today.
- Convert, compress, resize, crop, trim, merge
- Thumbnails, watermarks, mute ranges, overlays
- Audio extract / normalize and GIF from video
- Async job model with progress and downloads
- No arbitrary FFmpeg filter strings on media routes
Common use cases
- User-generated video ingest pipelines
- Social-ready compress/resize presets
- Thumbnail generation for media libraries
- Extract audio tracks for transcription workflows
API endpoints
Base URL https://thefatbaby.com/api. Authenticate with Authorization: Bearer fb_live_YOUR_KEY.
| Method | Path | Summary | Credits |
|---|---|---|---|
POST | /v1/video/convert | Convert video format/codec | Duration-based billing |
POST | /v1/video/compress | Compress bitrate/size | Duration-based billing |
POST | /v1/video/trim | Trim by start/duration | Duration-based billing |
POST | /v1/video/thumbnail | Extract a thumbnail | Lower fixed-style cost |
POST | /v1/audio/extract | Extract audio | Duration-based |
POST | /v1/gif/from-video | Video to GIF | Duration-based |
Examples
Primary endpoint /v1/video/convert · Media ops bill primarily by output duration (and resolution multipliers). Catalog fixed numbers are examples only.
cURL
curl -X POST https://thefatbaby.com/api/v1/video/convert \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mov" -F "format=mp4" -F "video_codec=libx264" # poll GET /v1/jobs/JOB_ID
JavaScript
const form = new FormData();
form.append('file', videoFile);
form.append('format', 'mp4');
const res = await fetch('https://thefatbaby.com/api/v1/video/convert', {
method: 'POST',
headers: { Authorization: 'Bearer fb_live_YOUR_KEY' },
body: form
});
const { job } = await res.json();Python
import requests
r = requests.post(
'https://thefatbaby.com/api/v1/video/convert',
headers={'Authorization': 'Bearer fb_live_YOUR_KEY'},
files={'file': open('clip.mov','rb')},
data={'format': 'mp4', 'video_codec': 'libx264'},
)
print(r.json()['job']['id'])Request
multipart/form-data file=@clip.mov format=mp4 video_codec=libx264
Response
{
"job": { "id": "JOB_ID", "status": "queued" },
"request_id": "req_..."
}Pricing & credits
Expect duration-based credits for convert/compress/trim. Run a short sample clip to estimate cost.
Common errors
- 400 — Unsupported option or missing file
- 402 — insufficient_credits
- job failed — Encoding error — inspect job.error_message
FAQ
Can I send a raw ffmpeg command?
Not on /v1/video/* media routes. Those are allowlisted operations. Legacy /v1/render accepts a validated ffmpeg command inside job folders — see the FFmpeg API page.
How do I download results?
Poll GET /v1/jobs/:jobId until completed, then use the download URL or GET /v1/jobs/:jobId/download?filename=…
Try without code
Use the matching online tool, then automate the same workflow with this API.