REST API · Live · Video

Open Source I2V API

A production REST API that animates any static image into a 5-second MP4 video — one multipart POST, no proprietary SDK required. The open source i2v api api that fits into any pipeline: self-hosted apps, open source repos, SaaS products, and batch automation. $0.20 per 5-second video. 5,000 free trial credits, no credit card required.

$0.20 per video 5-second MP4 output 720p & 1080p 5,000 free credits (trial) No credit card REST / multipart
Get an API key (free trial) Quick start See pricing API docs

What the Open Source I2V API does

Image-to-video (I2V) is the task of generating a short video clip from a single still image. The source image provides the scene: composition, subjects, colors, lighting. The API infers and renders realistic motion — camera drift, environmental movement, subtle subject animation — producing an MP4 that looks like the image came to life.

PixelAPI's I2V endpoint wraps this capability in a simple REST interface with no proprietary client required. POST your image and a text prompt describing the motion. Poll for the result. Download the MP4. It integrates cleanly into open source Python scripts, Node.js servers, PHP back-ends, and any language that can issue an HTTP request.

Quick start — open source I2V API in 6 languages

Sign up, copy your key, and POST your image as multipart/form-data. The endpoint queues the job and returns a generation_id. Poll GET /v1/seedance/{generation_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 "[email protected]" \
  -F "prompt=Gentle ocean waves rolling across the beach" \
  -F "resolution=720p" \
  -F "duration=5" \
  -F "camera_fixed=true"
# Response: {"generation_id":"uuid","status":"processing","credits_used":200}

# 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://...mp4"}
pip install pixelapi
---
import time
from pixelapi import PixelAPI

client = PixelAPI(api_key="YOUR_API_KEY")

# Submit image-to-video job
job = client.image_to_video(
    image="photo.jpg",
    prompt="Gentle ocean waves rolling across the beach",
    resolution="720p",
)

# SDK polls automatically; or poll manually:
while job.status != "completed":
    time.sleep(10)
    job.refresh()

job.save("output.mp4")  # download the 5-second MP4
npm install pixelapi
---
import { PixelAPI } from "pixelapi";
import fs from "fs";

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

const job = await client.imageToVideo({
  image: fs.createReadStream("./photo.jpg"),
  prompt: "Gentle ocean waves rolling across the beach",
  resolution: "720p",
});

// SDK polls and resolves when completed
await job.save("output.mp4");
console.log("Video saved:", job.outputUrl);
composer require pixelapi/pixelapi
---
<?php
use PixelAPI\Client;

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

$job = $client->imageToVideo([
    "image"      => "photo.jpg",
    "prompt"     => "Gentle ocean waves rolling across the beach",
    "resolution" => "720p",
]);

// Poll until done
while ($job->status !== "completed") {
    sleep(10);
    $job->refresh();
}

file_put_contents("output.mp4", $job->download());
gem install pixelapi
---
require "pixelapi"

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

job = client.image_to_video(
  image: "photo.jpg",
  prompt: "Gentle ocean waves rolling across the beach",
  resolution: "720p"
)

job.wait_until_complete   # polls with backoff
File.binwrite("output.mp4", job.download)
go get github.com/pixelapi/pixelapi-go
---
import "github.com/pixelapi/pixelapi-go"

client := pixelapi.New("YOUR_API_KEY")

job, err := client.ImageToVideo(pixelapi.I2VRequest{
    Image:      "photo.jpg",
    Prompt:     "Gentle ocean waves rolling across the beach",
    Resolution: "720p",
})
if err != nil { panic(err) }

result, err := job.Wait() // polls until completed or error
if err != nil { panic(err) }
result.Save("output.mp4")

Pricing — cheaper than Runway, cheaper than Pika

ProviderFree tierPer 5-second videoAPI access
PixelAPI 5,000 credits (trial), no card $0.20 REST · multipart · any language
Runway Limited watermarked exports ~$0.48 (Max plan, Gen-4.5 model) Web UI + limited API beta
Pika Credits via paid packs only ~$1.35 (Creator plan, 720p) Web UI primarily
Kaiber — see kaiber.ai/pricing Web UI

Pricing verified from each rival's public pricing page October 2026. Runway ~$0.48 calculated at Max plan ($76/month, 9,500 credits) for a Gen-4.5 60-credit 5-second clip. Pika ~$1.35 calculated at Creator plan ($35/month, 3,150 credits) for a 122-credit Seedance 2.5 720p video. PixelAPI's per-video price is cost-plus at $0.20 — no subscription required, pay per generation.

What you get back

5-second MP4 video

The output is a standard H.264 MP4 file — compatible with every browser, video editor, social media platform, and CDN. No proprietary format conversion needed.

720p (default) or 1080p

Pass resolution=720p (default) or resolution=1080p to control output quality. Note: I2V jobs are capped at 720p to preserve subject identity.

Hosted output URL

The output_url in the completion response is a direct HTTPS link to the MP4. Download it, pipe it to your CDN, or serve it directly. URLs are valid for 48 hours.

Generation metadata

Each response includes generation_id, processing_ms, and credits_used for billing reconciliation and audit logs.

Request parameters

ParameterTypeDefaultDescription
imagefile (multipart)—Source image (JPEG or PNG). Required for I2V mode.
promptstringrequiredText describing the motion to apply (max 2,000 chars).
resolutionstring720p720p or 1080p. I2V is capped at 720p.
durationinteger5Clip length in seconds. Currently fixed at 5.
camera_fixedbooleantrueLock camera position. Recommended for products and portraits.

Common workflows

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

Social media content

Animate product photos and brand images for Reels, TikTok, and Shorts — without a video team.

Marketing campaigns

Convert client still photography into animated ad creatives at scale.

AI-generated content pipelines

Chain image generation + I2V in a single pipeline: generate the image, then animate it automatically.

E-commerce product animation

Turn flat product photos into short lifestyle clips for listing pages and ads.

Marketplace listings

Animated thumbnails lift click-through rates on product marketplaces.

Agency batch workflows

Process hundreds of client assets overnight via the REST API.

More use-case guides: all industries →

Integrations & SDKs

Zapier

Trigger I2V jobs from any Zapier workflow — no code required.

Make.com

Drag-and-drop image-to-video automation in Make scenarios.

Shopify

Animate product images on upload via Shopify webhook + REST.

Webflow

Generate animated hero videos for Webflow CMS pages.

Python SDK

pip install pixelapi — handles upload, polling, and retry automatically.

Node.js SDK

npm install pixelapi — TypeScript types included, works in Next.js and Express.

Comparison vs alternatives

vs Replicate

Predictable $0.20/video vs Replicate's per-second compute billing. No cold-start wait. Fixed output format.

vs Replicate Edit API

PixelAPI I2V is a dedicated image-to-video endpoint vs Replicate's general-purpose model runner — simpler integration, one price.

vs Runway

PixelAPI at $0.20/video vs Runway Max plan at ~$0.48/video. PixelAPI offers a clean REST API; Runway is primarily a web product with a limited API beta.

vs Pika

PixelAPI at $0.20/video vs Pika at ~$1.35/video on the Creator plan. PixelAPI charges per generation with no monthly subscription required.

Rate limits & error handling

20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale. Parallel concurrent jobs: 3 / 10 / 20 / 50 respectively (see pixelapi.dev/docs/parallel-processing.html). Exceeding the rate limit returns HTTP 429 with a Retry-After header. Recommended: exponential backoff starting at 10s, doubling on each retry up to 120s. The Python and Node.js SDKs handle this automatically.

Video generation is an asynchronous operation. Never poll more frequently than every 10 seconds — the job takes 2–3 minutes minimum and aggressive polling wastes rate-limit quota.

# Python SDK with automatic retry on 429
from pixelapi import PixelAPI
client = PixelAPI(api_key="...", max_retries=4)

job = client.image_to_video(image="photo.jpg", prompt="sunrise timelapse")
# SDK polls with 10s interval and handles 429 backoff automatically
job.wait_until_complete()
job.save("output.mp4")

Common error codes:

HTTP statusError codeMeaning
400invalid_imageImage could not be decoded — check format and file integrity.
400content_policyPrompt or image was rejected by the content safety filter.
402paid_plan_requiredVideo generation requires at least the Starter plan.
402insufficient_creditsBalance too low. Top up at pixelapi.dev/pricing.
429rate_limit_exceededToo many requests. Retry after the Retry-After header value.
503service_unavailableTransient upstream error. Retry after 30s.

Frequently asked questions

What is an open source I2V API?

An I2V (image-to-video) API converts a static image into a short animated video via a REST endpoint. "Open source-compatible" means you can integrate it into open source projects, self-hosted apps, and public repositories — no proprietary runtime or vendor-specific CLI needed. PixelAPI's I2V API accepts any JPEG or PNG and returns a 5-second MP4 with natural motion applied to the scene.

How much does the I2V API cost?

$0.20 per 5-second video (200 credits at $0.001/credit). New accounts get 5,000 free trial credits — enough for 25 test videos — with no credit card required. After the trial, upgrade to Starter ($10) or any paid plan to continue. Credits never expire.

How do I animate an image via the API?

POST your image and a motion prompt to https://api.pixelapi.dev/v1/seedance/generate as multipart/form-data. The API returns a generation_id. Poll GET /v1/seedance/{generation_id} every 10–15 seconds until status=completed, then download the MP4 from output_url. Full code examples in 6 languages are in the Quick Start section above.

What image formats does the API accept?

JPEG and PNG are supported. The API automatically converts RGBA or palette-mode PNGs to RGB before processing. Maximum recommended input resolution is 4096×4096 pixels. Very small images (under 256px on either side) may produce lower-quality motion.

What does the output video look like?

The output is a 5-second MP4 (H.264) at 720p or 1080p. The video applies natural motion to the scene — camera movement, environmental effects, subtle subject animation — while preserving the identity of faces, brands, and objects from the source image. No watermark is added to paid-plan outputs.

How long does video generation take?

Typical generation time is 2–3 minutes for a 720p 5-second clip. The API is asynchronous: submit the job, then poll for results every 10–15 seconds. There is no cold-start delay — the endpoint stays warm. The Python and Node.js SDKs poll automatically.

Do I need a paid plan to use the I2V API?

Video generation requires at least the Starter plan ($10/month or a one-time $10 credit top-up). New accounts get 5,000 free trial credits — enough for 25 test videos — before any payment is needed. The trial requires no credit card and starts automatically on your first API call.

What are the rate limits?

20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale, with 3 / 10 / 20 / 50 concurrent parallel jobs respectively. Exceeding the limit returns HTTP 429 with a Retry-After header. Higher limits are available for batch workflows — email support@pixelapi.dev with your expected volume.

Is there a Python SDK?

Yes — pip install pixelapi. The SDK handles image upload, asynchronous polling, retry on 429, and MP4 download in a single method call. Official SDKs are also available for Node.js (npm install pixelapi), PHP (Composer), Ruby (Gem), and Go (go get).

Can I use the API in a commercial or open source project?

Yes. PixelAPI's terms permit commercial use and integration into open source projects, SaaS products, mobile apps, and enterprise pipelines. GST invoices are issued for all paid accounts — 18% IGST for international clients, CGST/SGST for domestic.

How does PixelAPI compare to Runway or Pika?

PixelAPI costs $0.20 per 5-second video. Runway's cheapest plan (Max, $76/month) works out to approximately $0.48 per Gen-4.5 5-second clip. Pika's Creator plan ($35/month) is approximately $1.35 per 720p video. PixelAPI also offers a straightforward REST API with no subscription lock-in — pay per generation once you've used the free trial.

What happens if the video generation fails?

Failed jobs are detected automatically. Credits are refunded to your account — you never pay for a video that did not complete successfully. The polling endpoint returns an error_message with details so you can diagnose the issue and retry.

Start free — 5,000 credits, no card Read full API docs Compare all plans