Skip to content

Latest commit

 

History

History
163 lines (135 loc) · 5.36 KB

File metadata and controls

163 lines (135 loc) · 5.36 KB
title API quickstart guide
sidebarTitle Quickstart
description Submit your first ffmpeg job, poll to completion, and download the result. Under 5 minutes from API key to finished MP4.
icon rocket
keywords
rendobar quickstart
ffmpeg api tutorial
first api call
video processing quickstart
ffmpeg job
canonical https://rendobar.com/docs/quickstart
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify({ "@context": "https://schema.org", "@type": "TechArticle", "@id": "https://rendobar.com/docs/quickstart/#article", "headline": "API quickstart guide", "description": "Submit your first ffmpeg job, poll to completion, and download the result. Under 5 minutes from API key to finished MP4.", "datePublished": "2026-03-20", "dateModified": "2026-05-24", "author": { "@type": "Organization", "@id": "https://rendobar.com/#organization" }, "publisher": { "@type": "Organization", "@id": "https://rendobar.com/#organization" }, "isPartOf": { "@id": "https://rendobar.com/#website" } }) }} /> Get an API key, submit an [`ffmpeg`](/job-types/ffmpeg) job, poll until complete, download the output. ## 1. Get an API key Sign up at [app.rendobar.com](https://app.rendobar.com) and create a key from **Settings → API keys**. Keys start with `rb_`. New accounts get $5 in free [credits](/concepts/credits). Prefer the terminal? Skip steps 2–4 and use [the CLI](/cli/overview) instead. ## 2. Submit a job ```bash cURL curl -X POST https://api.rendobar.com/jobs \ -H "Authorization: Bearer rb_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "ffmpeg", "inputs": {}, "params": { "command": "ffmpeg -i https://example.com/video.mp4 -vf scale=1280:720 -c:v libx264 -preset fast -crf 23 output.mp4" } }' ``` ```javascript JavaScript const res = await fetch("https://api.rendobar.com/jobs", { method: "POST", headers: { "Authorization": "Bearer rb_YOUR_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ type: "ffmpeg", inputs: {}, params: { command: "ffmpeg -i https://example.com/video.mp4 -vf scale=1280:720 -c:v libx264 -preset fast -crf 23 output.mp4", }, }), }); const { data } = await res.json(); console.log(data.id); // job_abc123 ``` ```python Python import requests res = requests.post( "https://api.rendobar.com/jobs", headers={"Authorization": "Bearer rb_YOUR_KEY"}, json={ "type": "ffmpeg", "inputs": {}, "params": { "command": "ffmpeg -i https://example.com/video.mp4 -vf scale=1280:720 -c:v libx264 -preset fast -crf 23 output.mp4", }, }, ) print(res.json()["data"]["id"]) # job_abc123 ``` Put input URLs directly in `-i` flags. The output format is inferred from the trailing filename (`output.mp4` → MP4). Response: ```json { "data": { "id": "job_abc123", "status": "waiting" } } ``` ## 3. Poll for completion ```bash curl https://api.rendobar.com/jobs/job_abc123 \ -H "Authorization: Bearer rb_YOUR_KEY" ``` Statuses: `waiting → dispatched → running → complete | failed | cancelled`. See [job lifecycle](/concepts/job-lifecycle) for what each status means. Poll every 1–2 seconds. For push instead of poll, configure a [webhook](/guides/webhooks). ## 4. Download the result When `status` is `complete`, the response contains an `output` object. The file to download is `output.file.url`, signed and valid for one hour: ```json { "data": { "id": "job_abc123", "status": "complete", "output": { "data": null, "file": { "url": "https://r2.rendobar.com/...", "path": "output.mp4", "type": "video", "size": 4194304, "meta": { "format": "mp4", "width": 1280, "height": 720, "durationMs": 30000 } }, "files": [ { "url": "https://r2.rendobar.com/...", "path": "output.mp4", "type": "video", "size": 4194304, "meta": { "format": "mp4", "width": 1280, "height": 720, "durationMs": 30000 } } ], "expiresAt": 1735689600000 }, "cost": { "amount": 50000000, "currency": "USD", "formatted": "$0.05" } } } ``` Every job type returns this same `output` shape: `data` for a computed answer, `file` for the headline result, `files` for the full list. Re-fetch the job to refresh the URLs after they expire. ## What's next - [Rendobar CLI](/cli/overview): skip the curl, run `rb ffmpeg` from your terminal - [Authentication](/authentication): keys, sessions, MCP auth - [FFmpeg](/guides/ffmpeg): full guide with the security model and examples - [Webhooks](/guides/webhooks): push events instead of polling - [Credits and billing](/concepts/credits): plans, balance, billing - [MCP](/mcp/overview): drive Rendobar from an AI agent Need more credits? See [pricing](https://rendobar.com/pricing/) for plan and credit-pack options. ## Related - [Authentication](/authentication): how API keys work across REST, MCP, and CLI - [FFmpeg guide](/guides/ffmpeg): security model, allowed flags, worked examples - [Job lifecycle](/concepts/job-lifecycle): the six statuses and what triggers each - [Pricing and plans](https://rendobar.com/pricing/): Free vs Pro and credit-pack pricing - [All supported FFmpeg operations](https://rendobar.com/features/): full feature index