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.
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.
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.
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.
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.
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.
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")
| Provider | API type | Per 5-second clip | Resolutions | Free 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.
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.
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).
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.
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.
The Image-to-Video API is the foundation for these production workflows. Each links to a setup guide:
Animate product photos into short-form video for Instagram Reels, TikTok, and YouTube Shorts — automated on every new image upload.
Batch-animate client product shoots into video ads. Integrate with CMS uploads for hands-free video production at scale.
Turn static product photos into looping MP4s for product detail pages. Compatible with Shopify, BigCommerce, and WooCommerce storefronts.
Chain image generation → background removal → image-to-video in a single pipeline. One API key, one billing account, one rate limit.
Trigger video generation from a webhook on content approval. Fire-and-forget async job completes in the background.
Convert a product image database into a video library overnight with a simple batch loop and the Python SDK.
Plug the Image-to-Video API into the tools your team already uses:
Trigger video animation from any Zapier-connected app — Google Drive, Dropbox, Airtable — with no code.
Build multi-step scenarios that animate images, post to social channels, and update databases in one flow.
Auto-animate product images on upload via a Shopify webhook and store the MP4 back to the product metafield.
CMS-driven video generation for collection items. Animate the hero image and embed the MP4 on the product page.
Server-side route handler that submits an i2v job and streams the output URL back to the browser via SSE.
WordPress plugin pattern for animating product images on publish, storing the result in the media library.
Pika is a polished consumer tool. PixelAPI is a developer REST endpoint — predictable per-clip pricing, no subscription lock-in, SDKs for 6 languages.
Replicate charges per-second of compute time. PixelAPI charges a flat $0.055 per 5-second clip regardless of render time — no billing surprises.
fal.ai offers raw model access. PixelAPI adds a managed async layer: job queuing, auto-refunds on failure, polling SDKs, and a billing dashboard.
Same PixelAPI key works across image and video — no second account, no second billing setup when you expand from image editing to video.
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.
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.
$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).
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.
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.
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.
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.
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.
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.
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.
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.