REST API · Video Generation

i2v API vs Kaiber: Image-to-Video API Comparison

A developer-first image-to-video API that turns a still photo into a 1080p MP4 clip in one HTTP call. Animate product photos, portraits, and marketing visuals programmatically — no UI, no monthly seat fees locked to a web console, no credit resets at the end of the month. $0.055 per 5-second clip on paid plans, with automatic credit refunds for any failed generation. Compare our i2v API vs Kaiber and see why engineering teams building AI video pipelines choose PixelAPI.

$0.055 / 5s clip 720p & 1080p Image-to-video Text-to-video MP4 output Paid plans from $10/mo
Get an API key Quick start See pricing API docs
Video generation is available on Starter ($10/mo), Pro ($50/mo), and Scale ($200/mo) paid plans. Free accounts have access to all image, audio, and 3D APIs. Compare plans →

Why a dedicated i2v API instead of Kaiber

Kaiber is a polished consumer tool for quickly experimenting with AI video through a web interface. But when you need to animate product photos at scale inside your own application — triggered by a webhook, a content scheduler, an e-commerce upload event, or a CI/CD pipeline — you need a REST API with predictable per-call pricing, not a browser tab with subscription credits that reset monthly.

Predictable per-clip billing

Pay $0.055 per 5-second clip. No monthly seat fee for API access, no opaque credit systems that reset at the end of the month. Your video generation cost scales exactly with usage.

Standard REST + multipart

POST your image and text prompt as a multipart form. Get back a generation ID. Poll for completion. Fits into any backend stack — cURL, Axios, Requests, net/http — no proprietary SDK required.

Async by design

Video renders take 90–150 seconds. The endpoint returns immediately with a job ID so your server never blocks. Poll or register a webhook. Python and Node SDKs handle polling loops automatically.

One key for everything

The same API key that animates photos also removes backgrounds, upscales images, generates audio, and runs virtual try-ons. One dashboard, one invoice, one rate limit tier.

Quick start — animate a photo in one call

Sign up, upgrade to a paid plan, and POST your image with a text prompt. The endpoint returns a generation ID immediately; poll GET /v1/seedance/{id} until status=completed, then download the MP4 from output_url.

# Step 1: Submit image-to-video job
curl -X POST https://api.pixelapi.dev/v1/seedance/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "prompt=Slow cinematic zoom, warm lighting, subtle motion" \
  -F "resolution=1080p" \
  -F "duration=5" \
  -F "camera_fixed=false" \
  -F "[email protected]"
# Response: {"generation_id":"uuid","status":"processing","estimated_seconds":120,...}

# Step 2: Poll until completed (every 5 seconds)
curl https://api.pixelapi.dev/v1/seedance/UUID \
  -H "Authorization: Bearer YOUR_API_KEY"
# Response: {"status":"completed","output_url":"https://cdn.pixelapi.dev/videos/uuid.mp4"}
pip install pixelapi
---
import time
from pixelapi import PixelAPI

client = PixelAPI(api_key="YOUR_API_KEY")

# Submit image-to-video job
job = client.video.animate(
    image="product.jpg",
    prompt="Slow cinematic zoom, warm lighting, subtle motion",
    resolution="1080p",
    duration=5,
)
print(f"Job started: {job.generation_id}")

# Poll until done (SDK handles this automatically)
result = client.video.wait(job.generation_id)
result.save("product_animated.mp4")
print(f"Video saved: product_animated.mp4")
npm install pixelapi
---
import { PixelAPI } from "pixelapi";
import { readFileSync } from "fs";

const client = new PixelAPI({ apiKey: process.env.PIXELAPI_KEY });

const result = await client.video.animate({
  image: readFileSync("product.jpg"),
  prompt: "Slow cinematic zoom, warm lighting, subtle motion",
  resolution: "1080p",
  duration: 5,
});

await result.save("product_animated.mp4");
console.log("Video saved:", result.outputUrl);
composer require pixelapi/pixelapi
---
<?php
use PixelAPI\Client;

$client = new Client(getenv("PIXELAPI_KEY"));

$job = $client->video()->animate([
    "image"      => "product.jpg",
    "prompt"     => "Slow cinematic zoom, warm lighting, subtle motion",
    "resolution" => "1080p",
    "duration"   => 5,
]);

$result = $client->video()->wait($job->generation_id);
file_put_contents("product_animated.mp4", $result->download());
gem install pixelapi
---
require "pixelapi"

client = PixelAPI::Client.new(api_key: ENV["PIXELAPI_KEY"])

job = client.video.animate(
  image:      "product.jpg",
  prompt:     "Slow cinematic zoom, warm lighting, subtle motion",
  resolution: "1080p",
  duration:   5
)

result = client.video.wait(job.generation_id)
File.binwrite("product_animated.mp4", result.download)
go get github.com/pixelapi/pixelapi-go
---
import "github.com/pixelapi/pixelapi-go"

client := pixelapi.New("YOUR_API_KEY")

job, err := client.Video.Animate(pixelapi.I2VRequest{
    Image:      "product.jpg",
    Prompt:     "Slow cinematic zoom, warm lighting, subtle motion",
    Resolution: "1080p",
    Duration:   5,
})
if err != nil { panic(err) }

result, err := client.Video.Wait(job.GenerationID)
if err != nil { panic(err) }
result.Save("product_animated.mp4")

Pricing comparison — i2v API vs Kaiber, Runway, and Pika

ProviderAPI typePer 5-second clipResolutionsFree tier
PixelAPI REST API (developer-first) $0.055 720p · 1080p Image APIs free; video on paid plans from $10/mo
Runway Gen-4 Turbo REST API $0.25 ($0.05/sec × 5s) varies 125 credits free (~25s video)
Runway Gen-4 REST API $0.60 ($0.12/sec × 5s) varies 125 credits free
Pika Subscription (limited API beta) see pika.art/pricing 480p · 720p · 1080p Limited free tier
Kaiber Subscription (web + beta API) see kaiber.ai/pricing varies by model Free trial; paid from $29/mo

Pricing verified from each rival's public pricing page May 2026. Runway credits priced at $0.01/credit from the Runway developer portal; Gen-4 Turbo costs 5 credits/second and Gen-4 costs 12 credits/second. Pika and Kaiber use opaque subscription credit systems without transparent per-call API pricing — see their pricing pages for current rates. PixelAPI's per-clip price is set at exactly half the cheapest comparable i2v API rate per our pricing principle.

What you get back

MP4 video — CDN-hosted

The completed response includes an output_url pointing to an MP4 file on our CDN. Download it directly, serve it from your application, or pass it to a storage bucket.

720p or 1080p resolution

Set resolution=720p for fast rendering and smaller files, or resolution=1080p for production-quality social content and catalog videos. Both cost 55 credits ($0.055).

Fixed 5-second clip

Each generation produces a 5-second MP4. Chain multiple generations together for longer sequences, or use the video merge endpoint to stitch clips side-by-side or top-bottom.

Camera control

Pass camera_fixed=true to lock the virtual camera and animate only the subject. Pass false (default) for natural camera drift, zoom, and parallax — great for cinematic shots.

Common workflows

The Image-to-Video API is the foundation for these production workflows. Each links to a setup guide:

Social media content

Animate product photos into short-form video for Instagram Reels, TikTok, and YouTube Shorts — automated on every new image upload.

Marketing agencies

Batch-animate client product shoots into video ads. Integrate with CMS uploads for hands-free video production at scale.

E-commerce catalogs

Turn static product photos into looping MP4s for product detail pages. Compatible with Shopify, BigCommerce, and WooCommerce storefronts.

AI content pipelines

Chain image generation → background removal → image-to-video in a single pipeline. One API key, one billing account, one rate limit.

Campaign automation

Trigger video generation from a webhook on content approval. Fire-and-forget async job completes in the background.

Product catalog video

Convert a product image database into a video library overnight with a simple batch loop and the Python SDK.

Integrations

Plug the Image-to-Video API into the tools your team already uses:

Zapier

Trigger video animation from any Zapier-connected app — Google Drive, Dropbox, Airtable — with no code.

Make.com

Build multi-step scenarios that animate images, post to social channels, and update databases in one flow.

Shopify

Auto-animate product images on upload via a Shopify webhook and store the MP4 back to the product metafield.

Webflow

CMS-driven video generation for collection items. Animate the hero image and embed the MP4 on the product page.

Next.js

Server-side route handler that submits an i2v job and streams the output URL back to the browser via SSE.

WooCommerce

WordPress plugin pattern for animating product images on publish, storing the result in the media library.

Comparison vs alternatives

vs Pika (t2v/i2v)

Pika is a polished consumer tool. PixelAPI is a developer REST endpoint — predictable per-clip pricing, no subscription lock-in, SDKs for 6 languages.

vs Replicate

Replicate charges per-second of compute time. PixelAPI charges a flat $0.055 per 5-second clip regardless of render time — no billing surprises.

vs fal.ai

fal.ai offers raw model access. PixelAPI adds a managed async layer: job queuing, auto-refunds on failure, polling SDKs, and a billing dashboard.

vs Replicate image models

Same PixelAPI key works across image and video — no second account, no second billing setup when you expand from image editing to video.

Rate limits & error handling

Default 60 requests/minute on Starter, 600 on Pro and Scale. Exceeding the limit returns HTTP 429 with a Retry-After header. Recommended: exponential backoff starting at 5s, doubling on each retry up to 60s. The Python and Node SDKs handle this automatically.

# Python SDK auto-retries 429 with backoff
from pixelapi import PixelAPI
client = PixelAPI(api_key="...", max_retries=4)

# Image-to-video — auto-retries on 429, auto-refunds on failure
job = client.video.animate(image="product.jpg", prompt="cinematic zoom")
result = client.video.wait(job.generation_id)
result.save("output.mp4")

If a video generation fails for any reason (including infrastructure-side errors), the job transitions to status=failed and your credits are automatically refunded. You can also register a notify email per job: POST /v1/seedance/{id}/notify with {"email":"[email protected]"} to receive a notification when the video is ready.

Frequently asked questions

What is an i2v API and how does it compare to Kaiber?

An image-to-video (i2v) API lets developers programmatically animate a still photo into an MP4 clip via HTTP — no browser UI required. Kaiber is a consumer-focused AI video platform with a web interface and a beta API that wraps third-party providers at subscription pricing. PixelAPI provides a developer-first REST endpoint at POST /v1/seedance/generate that fits into automation pipelines, CMS workflows, and SaaS backends — with predictable per-clip pricing of $0.055 per 5-second video.

What does the Image-to-Video API cost?

$0.055 per 5-second MP4 video (55 credits at $0.001/credit) — at least 4.5× cheaper than Runway Gen-4 Turbo's API rate of $0.25/5s, and more than 10× cheaper than Runway Gen-4 at $0.60/5s. Paid plans start at $10/month (10,000 credits = ~181 videos per month).

How long does it take to generate a video from an image?

Most image-to-video generations complete in 90–150 seconds. The API is async by design: POST your image and prompt, get back a generation ID immediately, then poll GET /v1/seedance/{id} every 5 seconds until status=completed. The Python and Node SDKs handle this polling loop automatically.

What resolution and duration can I generate?

Supported resolutions are 720p and 1080p. Duration is fixed at 5 seconds per clip. Pass resolution=720p or resolution=1080p in your request. Both resolutions are the same price: 55 credits ($0.055) per generation.

What output format does the Image-to-Video API return?

The API returns a download URL for an MP4 file. The output_url in the completed response points directly to the generated video hosted on our CDN. You can download it, store it in your own S3 bucket, or serve it from your application directly.

Does the i2v API require a paid plan?

Yes. Video generation (image-to-video and text-to-video) is available on paid plans: Starter ($10/month, 10,000 credits), Pro ($50/month, 60,000 credits), and Scale ($200/month, 300,000 credits). Free accounts have full access to all image, audio, and 3D APIs. Upgrade at pixelapi.dev/app.

Is there a Python SDK for the Image-to-Video API?

Yes — pip install pixelapi. Official SDKs are available for Python, Node.js (npm install pixelapi), PHP (Composer), Ruby (Gem), Go (go get github.com/pixelapi/pixelapi-go), and a Java/Kotlin client. All SDKs handle authentication, async polling, retry-on-429, and file download automatically.

Can I lock the camera position during animation?

Yes. Pass camera_fixed=true in your request to lock the virtual camera — preventing any pan, zoom, or drift. This is useful for product photos and portrait animations where you want subtle motion in the subject itself rather than camera movement.

What are the rate limits for the i2v API?

Default rate limits: 60 requests/minute on Starter, 600 requests/minute on Pro and Scale plans. Video generation jobs are processed concurrently. Exceeding limits returns HTTP 429 with a Retry-After header. Contact [email protected] for higher-volume arrangements.

What happens if video generation fails?

Failed generations are auto-detected and credits are automatically refunded — you never pay for an empty or broken result. The response shows status=failed with an error_message, and your credits_remaining is restored to its pre-generation value. Retrying is safe; each submission is a new independent job.

Get started — image APIs free, video on paid plans Read full API docs Compare all plans