Pika V2.1 I2V API Documentation

Pika V2.1 I2V API Documentation

Playground

Try it on WaveSpeedAI!

Pika V2.1 turns images into high-quality videos, supporting multiple output sizes and advanced prompt optimization for precise control. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Transform images into stunning videos with Pika V2.1 — the latest image-to-video model from Pika Labs. This updated version delivers improved motion quality, better temporal consistency, and enhanced visual fidelity for professional-grade video generation.

Looking for faster generation? Try Pika V2.0 Turbo I2V for speed-optimized output.

Why It Looks Great

  • Latest version: V2.1 brings improved motion and visual quality over previous versions.
  • Enhanced consistency: Better temporal coherence for smoother, more stable videos.
  • 720p HD output: Sharp, professional-quality video in landscape or portrait.
  • Natural motion: Creates fluid, believable movement from static images.
  • Extended duration: Generate up to 10 seconds of video.
  • Prompt Enhancer: Built-in tool to refine your motion descriptions.
  • Safety Checker: Optional content filtering for appropriate output.

Parameters

ParameterRequiredDescription
imageYesSource image to animate (upload or public URL).
promptYesText description of the motion and action you want.
sizeNoOutput dimensions: 1280×720 (landscape) or 720×1280 (portrait). Default: 1280×720.
durationNoVideo length: 5 or 10 seconds. Default: 5.
Enable Safety CheckerNoToggle content safety filtering.

How to Use

  1. Upload your image — drag and drop or paste a public URL.
  2. Write your prompt — describe the motion, action, and atmosphere.
  3. Use Prompt Enhancer (optional) — click to enrich your description.
  4. Choose size — select landscape (1280×720) or portrait (720×1280).
  5. Set duration — choose 5 or 10 seconds.
  6. Run — click the button to generate.
  7. Download — preview and save your video.

Pricing

Per 5-second billing based on duration.

DurationCalculationCost
5 seconds5 ÷ 5 × $0.20$0.20
10 seconds10 ÷ 5 × $0.20$0.40

Size Options

SizeOrientationBest For
1280×720LandscapeYouTube, presentations, desktop viewing
720×1280PortraitTikTok, Instagram Reels, Stories, mobile

Best Use Cases

  • Cinematic Content — Create movie-quality video from still images.
  • Social Media Videos — Generate engaging content for any platform.
  • Storytelling — Bring emotional moments and narratives to life.
  • Marketing & Advertising — Transform product shots into dynamic videos.
  • Creative Projects — Add professional motion to photography and artwork.

Example Prompts

  • “Woman feeding stray cats in an alley, sunset sky above, cats meowing, urban kindness”
  • “Cinematic slow-motion hair flip, wind blowing, golden hour backlight”
  • “Ocean waves gently lapping at the shore, peaceful rhythm, ambient motion”
  • “Character turns to face camera, subtle expression change, dramatic lighting”
  • “Steam rising from hot coffee cup, cozy morning atmosphere, soft focus background”

Model Comparison

ModelVersionSpeedBest For
Pika V2.1 I2VLatestStandardMaximum quality, improved consistency
Pika V2.0 Turbo I2VPreviousFastRapid iteration, speed priority

Pro Tips for Best Results

  • V2.1 excels at temporal consistency — use it for smooth, professional results.
  • Describe both subject motion and environmental elements for richer output.
  • Include cinematic language: “slow-motion”, “dramatic lighting”, “cinematic”.
  • Match orientation to platform: portrait for TikTok/Reels, landscape for YouTube.
  • Start with 5-second videos to test, then extend to 10 seconds for final delivery.
  • Use V2.1 for final deliverables, V2.0 Turbo for rapid testing.

Notes

  • Duration options are 5 or 10 seconds.
  • If using a URL, ensure it is publicly accessible.
  • Enable Safety Checker for content that will be publicly shared.
  • V2.1 delivers improved quality over V2.0 with the same pricing.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed",
  "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
  "size": "1280*720",
  "duration": 5
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/pika/v2.1-i2v" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The positive prompt for the generation.
imagestringYes-The image for generating the output.
sizestringNo1280*7201280*720, 720*1280The size of the generated media in pixels (width*height).
durationintegerNo55, 10The duration of the generated media in seconds.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.