Skip to content

Introduction

Xora is a programmatic video transcoding API. Send a URL (or upload a local file), pick a recipe (or write your own FFmpeg command), and get processed media back — all through a single REST endpoint at https://api.xora.sh/v1.

Your app Xora
│ │
├── POST /api/v1/jobs ─────────▶│ (input URL + recipe)
│ │
│◀── 202 { jobId, state } ──────┤ (job accepted)
│ │
│ ... processing ... │
│ │
├── GET /api/v1/jobs/:id ──────▶│ (check status)
│◀── { state, signedUrl } ──────┤ (download when ready)
│ │
  1. Authenticate — use an API key (Authorization: Bearer nte_…) or sign in to the dashboard.
  2. Create a jobPOST /api/v1/jobs with a recipe or custom FFmpeg args.
  3. Wait for completion — poll the job status or receive a webhook.
  4. Download — grab your output from the signed URL, or have it delivered to your own R2 bucket.
FeatureDescription
9 built-in recipesWeb ready, Edit proxy, compress, transcode, resize, trim, extract audio, thumbnail, concat
Probe jobsInspect media with mode: "probe" — enriched ffprobe metadata on the job record
Custom FFmpegPass your own FFmpeg argument array for full control
Direct uploadsUpload local files with a presigned URL when there’s nothing public to point at
PresetsSave and reuse job configurations — run them with a single presetId
Input stagingOptionally skip copying inputs when your URL supports HTTP byte ranges
WebhooksGet notified when jobs complete or fail
BYOB storageRoute outputs to your own Cloudflare R2 bucket
Files APIList, inspect, and delete stored output files
TypeFormats
Videomp4, webm, mov, gif
Audiomp3, aac, wav
Imagejpg, png

Probe jobs return metadata on the job record — see Probe Media Metadata.

See Output Formats for details on which recipes support which formats.

PieceWhat it does
REST APIPOST /api/v1/jobs, GET /api/v1/jobs/:id, uploads, files, presets, tokens, usage
DashboardWeb UI at /app — manage presets, inspect jobs, create API keys