E-Commerce Video Processing API: Build Your Product Video Pipeline

March 16, 2026 ยท RenderIO

E-commerce needs video at scale

Product pages with video convert 80% better than static images. TikTok Shop requires video for every listing. Amazon encourages product video. Instagram Shopping is video-first.

The problem isn't creating one video. It's processing thousands. Every product needs:

  • Videos resized for each platform

  • Watermarks for different sales channels

  • Compressed versions for fast loading

  • Multiple variations for A/B testing

A video editor can handle 10-20 products per day. An API handles 10,000.

Why use a video processing API

Building video processing in-house means:

  • Installing FFmpeg on your servers

  • Managing CPU-intensive workloads that spike and idle

  • Handling file storage and delivery

  • Building queuing systems for batch operations

  • Scaling infrastructure as your catalog grows

Or you can send an HTTP request and get a processed video back.

RenderIO runs FFmpeg on Cloudflare's edge network. You send a command, it processes the video, you get a download URL. No servers, no scaling, no infrastructure.

Core operations for e-commerce

Resize for platforms

Each sales channel has different requirements:

# TikTok Shop: 9:16, 1080x1920
curl -X POST https://renderio.dev/api/v1/run-ffmpeg-command \
  -H "X-API-KEY: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "ffmpeg_command": "-i {in_video} -vf \"scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:white\" -c:v libx264 -crf 20 -movflags +faststart {out_video}",
    "input_files": { "in_video": "https://cdn.example.com/product-original.mp4" },
    "output_files": { "out_video": "product-tiktok.mp4" }
  }'
# Amazon: 16:9, 1920x1080, max 5GB
curl -X POST https://renderio.dev/api/v1/run-ffmpeg-command \
  -H "X-API-KEY: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "ffmpeg_command": "-i {in_video} -vf \"scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:white\" -c:v libx264 -crf 18 -movflags +faststart {out_video}",
    "input_files": { "in_video": "https://cdn.example.com/product-original.mp4" },
    "output_files": { "out_video": "product-amazon.mp4" }
  }'
# Instagram Shopping: 1:1, 1080x1080
curl -X POST https://renderio.dev/api/v1/run-ffmpeg-command \
  -H "X-API-KEY: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "ffmpeg_command": "-i {in_video} -vf \"crop=min(iw\\,ih):min(iw\\,ih),scale=1080:1080\" -c:v libx264 -crf 20 -movflags +faststart {out_video}",
    "input_files": { "in_video": "https://cdn.example.com/product-original.mp4" },
    "output_files": { "out_video": "product-instagram.mp4" }
  }'

Add watermarks

Protect product videos on different channels:

curl -X POST https://renderio.dev/api/v1/run-ffmpeg-command \
  -H "X-API-KEY: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "ffmpeg_command": "-i {in_video} -i {in_logo} -filter_complex \"[1:v]scale=120:-1,format=rgba,colorchannelmixer=aa=0.4[logo];[0:v][logo]overlay=W-w-20:H-h-20[v]\" -map \"[v]\" -map 0:a -c:v libx264 -crf 20 -c:a copy {out_video}",
    "input_files": {
      "in_video": "https://cdn.example.com/product.mp4",
      "in_logo": "https://cdn.example.com/brand-logo.png"
    },
    "output_files": { "out_video": "product-watermarked.mp4" }
  }'

The colorchannelmixer=aa=0.4 makes the watermark 40% transparent. Professional without being intrusive.

Compress for fast loading

Product pages need fast-loading video. Compress without visible quality loss:

curl -X POST https://renderio.dev/api/v1/run-ffmpeg-command \
  -H "X-API-KEY: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "ffmpeg_command": "-i {in_video} -c:v libx264 -crf 28 -preset slow -vf \"scale=720:-2\" -c:a aac -b:a 96k -movflags +faststart {out_video}",
    "input_files": { "in_video": "https://cdn.example.com/product-hd.mp4" },
    "output_files": { "out_video": "product-web.mp4" }
  }'

This produces a 720p video with aggressive compression. File size typically drops 70-80% while maintaining acceptable quality for product pages.

Create thumbnails

Extract the best frame for product listing thumbnails:

curl -X POST https://renderio.dev/api/v1/run-ffmpeg-command \
  -H "X-API-KEY: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "ffmpeg_command": "-i {in_video} -vf \"select=eq(pict_type\\,I),scale=800:-1\" -frames:v 1 {out_thumb}",
    "input_files": { "in_video": "https://cdn.example.com/product.mp4" },
    "output_files": { "out_thumb": "thumbnail.jpg" }
  }'

This extracts the first I-frame (keyframe), which is typically the clearest frame in the video.

Building the complete pipeline

One product, all platforms

async function processProductVideo(productId, videoUrl, logoUrl) {
  const platforms = [
    {
      name: "tiktok",
      command: `-i {in_video} -i {in_logo} -filter_complex "[1:v]scale=80:-1,format=rgba,colorchannelmixer=aa=0.3[logo];[0:v]scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:white[bg];[bg][logo]overlay=W-w-20:20[v]" -map "[v]" -map 0:a? -c:v libx264 -crf 22 -c:a aac -movflags +faststart {out_video}`,
    },
    {
      name: "amazon",
      command: `-i {in_video} -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:white" -c:v libx264 -crf 18 -movflags +faststart {out_video}`,
    },
    {
      name: "instagram",
      command: `-i {in_video} -i {in_logo} -filter_complex "[1:v]scale=80:-1,format=rgba,colorchannelmixer=aa=0.3[logo];[0:v]crop=min(iw\\,ih):min(iw\\,ih),scale=1080:1080[bg];[bg][logo]overlay=W-w-15:H-h-15[v]" -map "[v]" -map 0:a? -c:v libx264 -crf 20 -movflags +faststart {out_video}`,
    },
    {
      name: "web-compressed",
      command: `-i {in_video} -c:v libx264 -crf 28 -preset slow -vf "scale=720:-2" -c:a aac -b:a 96k -movflags +faststart {out_video}`,
    },
  ];

  const jobs = platforms.map(platform =>
    fetch("https://renderio.dev/api/v1/run-ffmpeg-command", {
      method: "POST",
      headers: {
        "X-API-KEY": process.env.RENDERIO_API_KEY,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        ffmpeg_command: platform.command,
        input_files: {
          in_video: videoUrl,
          in_logo: logoUrl,
        },
        output_files: { out_video: `${productId}-${platform.name}.mp4` },
      }),
    }).then(r => r.json())
  );

  return Promise.all(jobs);
}

4 API calls per product. 4 platform-ready videos. All processing in parallel.

Batch process catalog

async function processCatalog(products) {
  const BATCH_SIZE = 100;

  for (let i = 0; i < products.length; i += BATCH_SIZE) {
    const batch = products.slice(i, i + BATCH_SIZE);

    await Promise.all(
      batch.map(p =>
        processProductVideo(p.id, p.videoUrl, p.logoUrl)
      )
    );

    console.log(`Processed ${Math.min(i + BATCH_SIZE, products.length)}/${products.length} products`);
  }
}

1,000 products x 4 platforms = 4,000 API calls. On RenderIO's Pro plan at $49/month (5,000 commands), that's well within budget.

Integration with e-commerce platforms

Shopify

Use Shopify's Admin API to upload processed videos back to product listings:

// After RenderIO processing completes
const processedVideoUrl = completedCommand.output_files["product-web.mp4"];

await shopify.product.update(productId, {
  media: [{
    alt: "Product video",
    mediaContentType: "VIDEO",
    originalSource: processedVideoUrl,
  }],
});

WooCommerce

Upload via REST API:

const response = await woocommerce.post("products/" + productId, {
  meta_data: [{
    key: "product_video_url",
    value: processedVideoUrl,
  }],
});

Pricing for e-commerce

Catalog sizePlatformsAPI calls/monthPlanCost/month
30 products4120Starter$9
250 products41,000Growth$29
1,250 products45,000Pro$49
5,000 products420,000Business$99

Zero egress fees because RenderIO runs on Cloudflare R2. No hidden storage costs. No bandwidth charges.

Processing e-commerce video at scale? The Pro plan at $49/mo handles 5,000 commands per month. Explore our video automation API or get your API key and start building your pipeline.

Your product catalog is your content pipeline. Every SKU becomes video content across every platform. Automatically.