Skip to main content
POST
Bulk Create Jobs

Overview

Create up to 100 download jobs in a single API request. All jobs share the same encoding options but can have individual filenames. The response includes a grouping batch_id and individual job_ids; follow each job with GET /jobs/{id}. Use this endpoint for high-volume submission: a bulk request counts as one HTTP request toward the API’s default 1,000 requests per second per authenticated client ceiling (configurable for the deployment/key). All direct API keys in the same organization share that budget across API instances. If you receive 429 with error: "rate_limit_exceeded", respect Retry-After before retrying. Bulk requires a direct API key; it is not available through marketplace authentication. Storage allowances and server capacity checks still apply.

Header Parameters

string
required
Your API key for authentication

Request

array
required
Array of job items (max 100)

Job Item

string
required
Video URL to download
string
Custom filename for this specific job

Shared Options

string
Storage folder prefix for all jobs
string
Output format for all jobs. Video: mp4, mkv, webm, mov. Audio: m4a, mp3, ogg, opus. Default: mp4 on this bulk route. Set format: "m4a" explicitly for audio-only M4A output
string
Video codec for all jobs: copy, h264, h265/hevc, vp9, vp8
string
Audio codec for all jobs: copy, aac, opus, mp3, vorbis. Unknown codecs return 400. Incompatible codec/format combinations are corrected as on POST /jobs (codec auto-correction)
string
Audio bitrate for all jobs: integer kilobits per second from 8k through 512k (for example 128k or 320k)
integer
Video quality CRF for all jobs (0-51)
boolean
default:"false"
Extract audio only for all jobs. Set format explicitly, for example m4a, mp3, ogg, or opus. Re-encoding depends on source codec, requested bitrate and clipping.
boolean
default:"false"
Download subtitles for all jobs
boolean
default:"false"
Download thumbnails for all jobs
string
Quality preset for all jobs: highest, high, medium, low, lowest
string
Video resolution preference for all jobs: best, lowest, 2160, 1440, 1080, 720, 480, 360, 240, 144. A numeric value chooses the best available resolution at or below the value, or the smallest available format if none fits. lowest always requests the smallest available video format. See single-job resolution and audio selection for details.
string
Start timestamp for video clipping (all jobs). Format: HH:MM:SS or seconds.
string
End timestamp for video clipping (all jobs). Format: HH:MM:SS or seconds.
boolean
default:"false"
Enable live stream recording mode for all jobs.
boolean
default:"false"
Record from stream beginning (VOD mode) for all live stream jobs.
integer
Maximum recording duration in seconds for all jobs.
boolean
default:"false"
Wait for scheduled streams to start for all jobs.
string
Webhook URL applied to every job of the batch. Same rules and validation as the single-job webhook_url; each job sends its own completion webhook.

Request Example

Each item in the jobs array only requires a url. The filename is optional - if not provided, the original video title will be used.All other options (folder, format, video_codec, etc.) are applied to all jobs in the batch.

Response

string
Batch ID for tracking all jobs
integer
Number of jobs accepted for queueing/parking. Compare with the submitted count: individual enqueue failures can produce a smaller result
array
List of individual job IDs

Examples

Success Response

Error Responses

Notes

  • Maximum 100 jobs per bulk request
  • All jobs share the same encoding options and folder
  • Each job can have a unique filename
  • webhook_url (optional) is shared by all jobs of the batch; each job sends its own webhook
  • Use /jobs/{id} to poll individual job status
  • The batch_id is for reference only - jobs are processed independently; it does not create a /batch/{id} status resource
  • This route does not accept inline storage, per-item options other than URL/filename, multi-clip clips, or progress webhooks
  • cookies (top-level or per item) is refused with 400: submit each age-restricted video to POST /jobs with its cookies
  • Validation differs from POST /jobs: unknown formats fall back to MP4; do not depend on unknown codecs or clip timestamps being rejected at admission