Skip to content

Input Staging

By default, Xora stages every input: it copies your file from the URL you provide into engine storage, then processes from that copy. This is reliable for any HTTPS origin.

For hosts that support HTTP byte-range requests (most CDNs, S3/R2 presigned URLs, and many file servers), you can set stageInput: false to skip staging. ffmpeg reads your original URL directly, which is often much faster for lightweight jobs like extract audio or thumbnails.

Good candidatesKeep default (true or omit)
extractAudio, thumbnail, webReady, proxyUnknown or flaky origins
Long transcodes from range-capable CDNsOrigins without Accept-Ranges: bytes
Large files you already host on S3/R2When you need a durable copy in engine storage

Add stageInput: false to any job body (recipe or ffmpeg):

Terminal window
curl -X POST https://api.xora.sh/v1/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "recipe",
"input": { "url": "https://cdn.example.com/interview.mp4" },
"output": { "format": "mp3" },
"recipe": { "name": "extractAudio" },
"stageInput": false
}'

Store stageInput in the preset body, or override it when running the preset:

{
"presetId": "preset_abc123",
"input": { "url": "https://cdn.example.com/video.mp4" },
"stageInput": false
}
stageInputOrigin supports rangesSteps
true (default)anyprobestage_input → transcode
falseyesprobe → transcode (direct URL)
falsenoprobestage_input → transcode (fallback)

Parallel chunk jobs (long transcodes) also benefit: chunk workers range-read your URL instead of a staged copy when staging is skipped.