When evaluating the i2v API vs Runway for programmatic photo animation, the difference comes down to price and simplicity. PixelAPI's image-to-video API turns a still photo into a 1080p MP4 clip with one multipart POST — no GUI, no subscription credits that reset monthly, no per-second billing surprises. $0.055 per 5-second clip — 4.5× cheaper than Runway Gen-4 Turbo and more than 10× cheaper than Runway Gen-4 — with automatic credit refunds for any failed generation. The same API key that animates photos also handles background removal, image editing, audio, and 3D — one account, one dashboard.
Runway is a capable video platform with a well-documented REST API. The gap opens at pricing and billing model. Runway Gen-4 Turbo charges $0.05 per second of generated video — that is $0.25 for a 5-second clip, before any subscription overhead. Runway Gen-4 runs $0.12/second ($0.60/5s). At PixelAPI's flat $0.055 per 5-second MP4, you generate the same video for a fraction of the cost and with no per-second variance affecting your budget projections.
Runway bills by the second of generated video. A 5-second clip at Gen-4 Turbo costs $0.25 regardless of queue time; at Gen-4 it costs $0.60. PixelAPI's flat $0.055 per clip means your cost scales predictably — no surprises when renders run long or resolution affects throughput.
At $0.055 versus Runway Gen-4 Turbo's $0.25 per 5-second clip, a batch of 1,000 animated product photos costs $55 on PixelAPI versus $250 on Runway Turbo — a $195 difference that compounds fast at scale. Compare plans to see the full volume pricing.
The same PixelAPI key that animates a photo also removes its background, upscales it, restores faces, generates audio, and builds 3D assets. Engineering teams managing multiple AI providers often consolidate onto PixelAPI to simplify vendor management and billing.
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 the polling loop automatically with built-in retry on 429.
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 golden-hour lighting, subtle parallax 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 golden-hour lighting, subtle parallax 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 golden-hour lighting, subtle parallax 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 golden-hour lighting",
"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 golden-hour lighting",
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 golden-hour lighting",
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 | Plans |
|---|---|---|---|---|
| PixelAPI | REST API (developer-first) | $0.055 | 720p · 1080p | Starter $10/mo · Pro $50/mo · Scale $200/mo |
| Runway Gen-4 Turbo | REST API | $0.25 ($0.05/sec × 5s) | Varies by model | Credits at $0.01/credit; subscription tiers from $15/mo |
| Runway Gen-4 | REST API | $0.60 ($0.12/sec × 5s) | Varies by model | Credits at $0.01/credit; same subscription tiers |
| Pika | Subscription (limited API beta) | see pika.art/pricing | 480p · 720p · 1080p | Subscription-only; limited free tier |
| Kaiber | Subscription (web + beta API) | see kaiber.ai/pricing | Varies by model | Paid from $29/mo; no per-call API pricing |
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, making a 5-second clip $0.25 and $0.60 respectively. Pika and Kaiber use subscription credit models 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 on our CDN. Download it, push it to your own storage bucket, or embed it directly in your application. No expiry on the download link within 24 hours of generation.
Set resolution=720p for fast rendering and smaller file sizes, or resolution=1080p for production-quality social and catalog videos. Both cost the same: 55 credits ($0.055) per generation.
Each generation produces a 5-second MP4. Chain multiple generations for longer sequences, or merge clips programmatically using downstream tooling. The async job pattern makes batching straightforward.
Pass camera_fixed=true to lock the virtual camera and animate only the subject — ideal for product photos and portraits. Pass false (default) for natural camera drift, zoom, and parallax — great for cinematic establishing shots.
The Image-to-Video API powers these production-grade workflows. Each links to a setup guide:
Animate product photos into short-form clips for Instagram Reels, TikTok, and YouTube Shorts — triggered automatically on every new image upload.
Batch-animate client product shoots into video ads. Integrate with CMS upload events 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 tier.
Trigger video generation from a webhook on content approval. Fire-and-forget async job completes in the background without blocking your server.
Convert an entire product image database into a video library overnight with a simple batch loop and the Python SDK.
Connect the Image-to-Video API to the tools your team already uses:
Trigger video animation from any Zapier-connected app — Google Drive, Dropbox, Airtable — with no code and no server required.
Build multi-step scenarios that animate images, post to social channels, and update databases in one automated flow.
Auto-animate product images on upload via a Shopify webhook and write the MP4 URL back to the product metafield.
CMS-driven video generation for collection items. Animate the hero image and embed the MP4 directly on the product page.
Server-side route handler that submits an i2v job and streams the output URL back to the browser via SSE or polling endpoint.
WordPress plugin pattern for animating product images on publish and storing the result in the WP media library.
Kaiber is consumer-first with a beta API on subscription pricing. PixelAPI is developer-first with flat per-clip pricing, no monthly seat fees, and SDKs for 6 languages.
Replicate charges per-second of compute time with variable billing. PixelAPI charges a flat $0.055 per 5-second clip regardless of render duration — 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 single billing dashboard for all media types.
The same PixelAPI key covers image and video — no second account or second billing setup when you expand from image editing to video generation.
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 credits on failure
job = client.video.animate(image="product.jpg", prompt="cinematic zoom, warm light")
result = client.video.wait(job.generation_id)
result.save("output.mp4")
If a video generation fails for any reason, the job transitions to status=failed and your credits are automatically refunded. Retrying is always safe — each submission creates an independent job with its own generation ID. Contact [email protected] for volume arrangements above the default limits.
Both PixelAPI and Runway offer REST APIs for image-to-video generation. The key differences are price and billing model. PixelAPI charges a flat $0.055 per 5-second clip — 4.5× cheaper than Runway Gen-4 Turbo ($0.25/5s at $0.05/sec) and more than 10× cheaper than Runway Gen-4 ($0.60/5s at $0.12/sec). PixelAPI also bundles image editing, background removal, audio, and 3D under the same API key, eliminating multiple accounts and billing setups for teams building multi-modal AI pipelines.
$0.055 per 5-second MP4 video (55 credits at $0.001/credit). Runway Gen-4 Turbo costs $0.25/5s and Gen-4 costs $0.60/5s. At 1,000 clips/month: PixelAPI = $55, Runway Turbo = $250, Runway Gen-4 = $600. Paid plans start at $10/month (10,000 credits ≈ 181 videos).
Most image-to-video generations complete in 90–150 seconds. The API is async: 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. Both resolutions cost the same: 55 credits ($0.055) per generation. There is no additional charge for higher resolution.
The API returns an output_url pointing to an MP4 file hosted on our CDN. Download it, transfer it to your own S3 bucket, or serve it directly from your application. The URL is available in the GET /v1/seedance/{id} response once status=completed.
Yes. Video generation 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. Useful for product photos and portraits where you want subject motion but not camera movement. Pass false (default) for natural cinematic camera behavior.
Default: 60 requests/minute on Starter, 600 requests/minute on Pro and Scale. 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. Each retry is a new independent job.