The cheapest I2V API for developers: POST any photo and a motion prompt, get back a 5-second 720p MP4. One HTTP call. $0.20 per video (200 credits) — lower than Runway, Pika, and Kaiber per generated clip. Paid plans start at $10 for 10,000 credits.
Most image-to-video APIs are priced as consumer subscription products, not developer tools. Runway and Pika bundle credits into monthly tiers optimised for their web editors — not for API throughput. PixelAPI is priced purely on per-call economics: 200 credits = $0.20 per 5-second clip at the $10/10K starter rate, with no monthly seat fee. At scale (Scale plan, 100K+ credits), the per-credit cost drops further. No hidden video-specific surcharges, no minimum monthly commitment, no watermarks.
Sign up, purchase a plan, and POST your image. The endpoint returns a generation_id; poll until status=completed, then download the 5-second MP4 from output_url.
# Step 1 — submit image + prompt (multipart form)
curl -X POST https://api.pixelapi.dev/v1/seedance/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@photo.jpg" \
-F "prompt=gentle breeze, natural movement" \
-F "resolution=720p" \
-F "camera_fixed=true"
# Response: {"generation_id": "uuid", "status": "processing", "estimated_seconds": 120, ...}
# Step 2 — poll until completed
curl https://api.pixelapi.dev/v1/seedance/UUID \
-H "Authorization: Bearer YOUR_API_KEY"
# Response: {"status": "completed", "output_url": "https://..."}
pip install pixelapi
---
from pixelapi import PixelAPI
import time
client = PixelAPI(api_key="YOUR_API_KEY")
# Submit image-to-video job
result = client.image_to_video(
image="photo.jpg",
prompt="gentle breeze, natural movement",
resolution="720p",
camera_fixed=True
)
# Poll for completion
while result.status != "completed":
time.sleep(10)
result = result.refresh()
result.save("output.mp4") # 5-second 720p MP4
npm install pixelapi
---
import { PixelAPI } from "pixelapi";
import { writeFileSync } from "fs";
const client = new PixelAPI({ apiKey: process.env.PIXELAPI_KEY });
const job = await client.imageToVideo({
image: "./photo.jpg",
prompt: "gentle breeze, natural movement",
resolution: "720p",
cameraFixed: true,
});
const result = await job.waitForCompletion(); // auto-polls
await result.save("output.mp4"); // 5-second 720p MP4
composer require pixelapi/pixelapi
---
<?php
use PixelAPI\Client;
$client = new Client(getenv("PIXELAPI_KEY"));
$job = $client->imageToVideo([
"image" => "photo.jpg",
"prompt" => "gentle breeze, natural movement",
"resolution" => "720p",
"camera_fixed" => true,
]);
$result = $job->waitForCompletion();
file_put_contents("output.mp4", $result->getBody());
gem install pixelapi
---
require "pixelapi"
client = PixelAPI::Client.new(api_key: ENV["PIXELAPI_KEY"])
job = client.image_to_video(
image: "photo.jpg",
prompt: "gentle breeze, natural movement",
resolution: "720p",
camera_fixed: true
)
result = job.wait_for_completion
File.binwrite("output.mp4", result.body)
go get github.com/pixelapi/pixelapi-go
---
import "github.com/pixelapi/pixelapi-go"
client := pixelapi.New("YOUR_API_KEY")
job, err := client.ImageToVideo(pixelapi.I2VParams{
Image: "photo.jpg",
Prompt: "gentle breeze, natural movement",
Resolution: "720p",
CameraFixed: true,
})
if err != nil { panic(err) }
result, err := job.WaitForCompletion()
if err != nil { panic(err) }
result.Save("output.mp4")
| Provider | Plan required | Per 5-second clip | Output |
|---|---|---|---|
| PixelAPI | Paid ($10/mo starter) | $0.20 | 720p MP4 |
| Runway | Standard+ ($12/mo) | see runway.com/pricing | MP4 |
| Pika | Creator+ ($8/mo) | see pika.art/pricing | MP4 |
| Kaiber | Paid tier | see kaiber.ai/pricing | MP4 |
Rival per-clip pricing was not publicly verifiable at time of writing (October 2026) — see each provider's pricing page for current rates. PixelAPI pricing: 200 credits × $0.001/credit = $0.20 per 5-second clip at Starter plan rates.
The completed job returns a direct download URL (output_url) pointing to your rendered MP4. 720p resolution, H.264 encoded, ready for web, mobile, and social media publishing.
With camera_fixed=true (default), the camera holds still and only scene elements animate — hair moves, water ripples, leaves sway. No unwanted camera drift or zoom artifacts.
When a portrait or product photo is supplied, the pipeline locks face, outfit, and body shape from the source image. Useful for social content, product demos, and marketing without re-shooting.
Describe the movement you want in natural language — "slow pan right", "fire flickering", "crowd cheering". The prompt steers both the type and intensity of motion in the output clip.
| Parameter | Type | Default | Notes |
|---|---|---|---|
image | file (form) | — | Required for I2V. JPEG or PNG input. |
prompt | string | — | Required. 1–2000 chars. Describe desired motion. |
resolution | string | 720p | 720p only for I2V (1080p is coerced to 720p when image is provided). |
duration | int | 5 | Currently fixed at 5 seconds. |
camera_fixed | bool | true | Lock camera for natural subject motion. Set false for dynamic camera movement. |
The cheapest I2V API is used in production for these creative and marketing workflows:
Animate product photos into 5-second clips for Instagram Reels, TikTok, and YouTube Shorts.
Bulk-animate client product shots for campaign assets at a fraction of video-shoot cost.
Chain image generation + I2V to go from text brief to animated social asset in seconds.
Bring product photos to life in marketplace listings to improve click-through rates.
Automated video thumbnails for catalogue listings — one API call per image at $0.20.
Schedule overnight I2V jobs across an entire photo catalogue using the generation status endpoint.
More use-case guides: all industries →
Animate product images on upload — webhook-triggered, zero manual effort.
Connect any photo source to I2V generation with a no-code Zap.
Drag-and-drop I2V in Make scenarios — chain with image editing and delivery.
CMS-triggered video generation for Webflow product detail pages.
pip install pixelapi — auto-polling, retry-on-429, binary MP4 return.
npm install pixelapi — Promise-based, streams the MP4 directly to disk.
Runway bundles credits into subscription tiers aimed at editors, not API developers. PixelAPI charges per-call with no monthly seat fee.
Pika's top-up credits don't transfer to their API. PixelAPI uses one credit pool across web and API, with straightforward per-call billing.
Kaiber focuses on the consumer editing experience. PixelAPI is built for programmatic generation — REST endpoints, SDK support, and SLA-backed uptime.
Full documentation for all image-to-video parameters, status polling, and batch workflows.
60 requests/minute on Starter, 120 on Pro, and 300 on Scale. Parallel concurrent video jobs: 10 / 20 / 50 respectively (see parallel processing docs). Exceeding the rate limit returns HTTP 429 with a Retry-After header. Recommended: exponential backoff starting at 2s, doubling on each retry up to 30s. The Python and Node SDKs handle this automatically.
# Python SDK — auto-retries 429 with exponential backoff
from pixelapi import PixelAPI
client = PixelAPI(api_key="...", max_retries=4)
job = client.image_to_video(image="photo.jpg", prompt="gentle breeze")
result = job.wait_for_completion() # auto-polls; auto-retries on 429
result.save("output.mp4")
Video jobs that fail are auto-detected and auto-refunded — you are never charged for a job that does not produce a downloadable MP4. The status=failed response includes an error_message with the reason.
PixelAPI charges $0.20 per 5-second 720p MP4 (200 credits at $0.001/credit). Runway and Pika price image-to-video through subscription credit bundles aimed at consumer editors — direct API cost comparison depends on usage volume and plan tier. PixelAPI's per-call price is fixed regardless of plan.
POST a multipart/form-data request to https://api.pixelapi.dev/v1/seedance/generate with the image field containing your photo file and prompt describing the desired motion. Poll GET /v1/seedance/{generation_id} until status=completed, then download the MP4 from output_url. The Quick Start above has code in 6 languages.
JPEG and PNG. The API normalizes the input to RGB PNG internally. RGBA/transparent PNG inputs are flattened against a white background before processing.
A 5-second 720p H.264 MP4 video. The output_url field in the completed status response points to the downloadable file. There is currently no other output resolution or container format for I2V.
Default is camera_fixed=true — the camera stays still and only scene content animates. Pass camera_fixed=false to allow the pipeline to add camera movement. For product and portrait shots, fixed camera is almost always the right choice.
Yes. When an image is provided, an identity-preservation instruction is applied automatically: the pipeline keeps the exact face, hairstyle, skin tone, body shape, and outfit from the input image. No identity swap, no added people, no outfit replacement.
Typically 60–180 seconds for a 5-second 720p clip. The submission response includes an estimated_seconds field. Poll the status endpoint every 10–15 seconds to avoid unnecessary requests.
No. Video generation requires a paid PixelAPI plan. Free trial credits cover image tools; video generation is a premium feature. Paid plans start at $10 for 10,000 credits — enough for 50 generated videos.
60 requests/minute on Starter, 120 on Pro, 300 on Scale. Concurrent parallel video jobs: 10 / 20 / 50. Higher limits are available for batch pipelines — contact support@pixelapi.dev with your expected volume.
Credits are automatically refunded for failed jobs — you are never charged for a clip that doesn't complete. Check the error_message in the status response for the specific failure reason.
Yes. PixelAPI is a registered Indian business and issues GST invoices — 18% IGST for international clients, CGST/SGST for domestic. Invoice download is built into the dashboard.