BATCH PROCESSING

Process Thousands of
Videos. One API Call.

Submit a batch of up to 10,000 videos with individual editing instructions for each. V100 parallelizes across our GPU cluster, manages the queue, and fires webhooks as each job completes. No infrastructure to manage. No workers to scale.

10K
Videos per batch
200+
Parallel workers
99.9%
Completion rate
3x
Auto-retry on failure

How Batch Processing Works

1

Submit Batch

POST an array of jobs to /v1/batch. Each job specifies a source video URL, natural language instructions, and output preferences. You get back a batch ID immediately -- no waiting for validation.

2

Parallel Execution

Jobs are distributed across our GPU cluster using a weighted priority queue. Short videos and simple operations get fast-tracked. Large transcoding jobs are routed to high-memory workers. Up to 200 jobs execute concurrently per account (higher limits available on Enterprise).

3

Webhook Callbacks

As each individual job completes, V100 sends a POST to your webhook URL with the job ID, output URL, processing stats, and status. You also receive a final "batch_complete" event when every job in the batch has finished (or failed after retries).

4

Automatic Retries

Failed jobs retry up to 3 times with exponential backoff. Common transient failures (source URL timeout, temporary GPU memory pressure) resolve automatically. Permanent failures (corrupt source file, unsupported codec) are flagged with detailed error codes in the webhook payload.

Batch API Example

Process 500 meeting recordings overnight: remove silence, add captions, export as MP4.

batch-process.js
import { V100 } from 'v100-sdk';
import { listObjects } from './s3-helpers.js';

const v100 = new V100(process.env.V100_API_KEY);

// List all meeting recordings from this week
const videos = await listObjects('meetings-bucket', 'recordings/2026-03/');

// Build batch jobs array
const jobs = videos.map(video => ({
  source: `s3://meetings-bucket/${video.key}`,
  instructions: 'Remove silence over 1 second, remove filler words, add English captions',
  output: { format: 'mp4', resolution: 'source' },
  metadata: { original_key: video.key } // passed through to webhook
}));

// Submit entire batch
const batch = await v100.batch.create({
  jobs,
  webhook: 'https://your-app.com/api/v100/batch-complete',
  priority: 'normal' // or 'high' for 2x faster scheduling
});

console.log(`Batch ${batch.id}: ${batch.total_jobs} jobs queued`);
// "Batch batch_8f2c1a: 487 jobs queued"

// Check status anytime
const status = await v100.batch.status(batch.id);
// { completed: 203, processing: 48, queued: 236, failed: 0 }

Enterprise Use Cases

Content Libraries

Media companies with thousands of legacy videos that need captions, format conversion, or remastering. Process your entire back-catalog over a weekend without provisioning a single server.

UGC Platforms

User-generated content platforms that need to normalize audio levels, add watermarks, generate thumbnails, and create preview clips for every upload -- automatically, at upload time.

EdTech

Online course platforms with hundreds of lecture recordings that need silence removal, captioning in multiple languages, and chapter markers derived from transcript topics.

Sales & Revenue Ops

Automatically process every recorded sales call: transcribe, remove dead air, extract key moments ("pricing discussion", "objection handling"), and push clips to CRM records.

Process at Scale

Free tier includes 60 minutes of processing. Enterprise plans for unlimited batch jobs.

Get API Key — Free Tier

Related