WaveSpeedAI APIPikaPika V2.2 Pikaframes

Pika V2.2 Pikaframes

Pika V2.2 Pikaframes

Playground

Try it on WavespeedAI!

Create precise keyframe-to-video sequences with Pika V2.2 Pikaframes. Upload up to 5 keyframes, set per-transition prompts and durations, and interpolate smooth motion for storyboards, camera moves, and style-consistent animation. Supports total runtimes up to 25 seconds. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Pika V2.2 — Pickaframes (Image-to-Video)

Pika V2.2 Pickaframes turns one or more still images into a short, animated video. You provide keyframe images plus a global description, optionally set per-segment transitions, and the model fills in motion, camera moves, and in-between frames for social videos, ads, and simple storyboard clips.


Highlights

  • Image-driven animation – Start from 1+ still images and let the model create smooth motion and transitions.
  • Timeline control via transitions – Use per-segment durations to decide how long the animation lingers between images.
  • Production-ready quality – Supports up to 1080p output for most major platforms.
  • Prompt-guided style – A single high-level prompt controls look, atmosphere, and camera behaviour.

Parameters

  • images (required)

    • Upload one or more images or paste URLs.
    • Single image: the model animates around that scene (camera moves, small changes).
    • Multiple images: they act as keyframes; the video evolves from the first to the last in order.
  • prompt (required) Global description of the clip: content, motion, and style. Example: TV screen flickering in a cozy kitchen, soft camera shake, warm cinematic lighting.

  • transitions (optional) A list of segments; each item has:

    • duration – segment length in seconds
    • prompt (optional) – local override or refinement for this segment only

    If transitions are provided, total video length is roughly the sum of all durations. If no transitions are set, a 5-second clip is generated by default.

  • resolution Output quality tier, for example 720p or 1080p.

  • seed

    • −1: random each run (exploration).
    • Any fixed integer: reproducible layout and motion.

Output format: MP4 video at the chosen resolution.


Pricing

Billing depends on effective duration and resolution. Each run is charged for at least 5 seconds.

  • billed_duration

    • If transitions are set: max(sum of all transition durations, 5)
    • If no transitions: 5
  • resolution_factor

    • 0.5 for resolutions up to and including 720p
    • 0.75 for 1080p

Reference prices

ResolutionBilled lengthTotal priceApprox. per-second
≤ 720p5 s0.20 USD0.040 USD / s
≤ 720p10 s0.40 USD0.040 USD / s
≤ 720p15 s0.60 USD0.040 USD / s
1080p5 s0.30 USD0.060 USD / s
1080p10 s0.60 USD0.060 USD / s
1080p15 s0.90 USD0.060 USD / s

Any clip shorter than 5 seconds is still billed as 5 seconds.


How to Use

  1. Write the global prompt In the prompt field, describe the overall scene and motion in one or two sentences (for example: TV screen flickering, reflections on the counter, slight handheld camera feel).

  2. Add images

    • Under images, upload at least one frame or paste image URLs.
    • Click Add Item to append more keyframes; they are used in order from top to bottom.
  3. Configure transitions (optional but recommended for multi-image stories)

    • In transitions, click Add Item.
    • Set duration in seconds for how long the animation should spend between the current and next keyframe.
    • Optionally add a local prompt to nudge that segment’s motion or style.
    • Add multiple transition items if you want a longer sequence; total length is their duration sum.
  4. Choose resolution

    • Use 720p for quick iteration and previews.
    • Switch to 1080p once you are happy with the motion and want a final render.
  5. Set seed if needed

    • Keep −1 when exploring different variations.
    • Use a fixed integer when you want to lock in a specific behaviour for future runs.
  6. Run and download

    • Check the estimated cost shown on the Run button (for example, 0.20 USD for 5 seconds at 720p).
    • Click Run, wait for processing, then download your generated MP4 from the result panel.

Tips

  • Use images with similar aspect ratios to avoid stretching during transitions.
  • To mimic flickering or jump cuts, use two very similar images with short transition durations.
  • Iterate with short, cheap runs first, then extend durations and upgrade resolution for the final version.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result


# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/pika/v2.2-pikaframes" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
    "resolution": "720p",
    "seed": -1
}'

# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringNo-The positive prompt for the generation.
imagesarrayYes[]2 ~ 5 itemsURL of ref images to use while generating the video.
transitionsarrayNo--Configuration for each transition. Length must be len(image_urls) - 1. Total duration of all transitions must not exceed 25 seconds. If not provided, uses default 5-second transitions with the global prompt
resolutionstringNo720p720p, 1080pThe resolution of the generated video.
seedintegerNo-1-1 ~ 2147483647The random seed to use for the generation. -1 means a random seed will be used.

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.outputsarrayArray of URLs to the generated content (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.has_nsfw_contentsarrayArray of boolean values indicating NSFW detection for each output
data.statusstringStatus of the task: created, processing, completed, or failed
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, the ID of the prediction to get
data.modelstringModel ID used for the prediction
data.outputsstringArray of URLs to the generated content (empty when status is not completed).
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
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
© 2025 WaveSpeedAI. All rights reserved.