Skywork AI Skyreels V3 Reference To Video API Documentation

Skywork AI Skyreels V3 Reference To Video API Documentation

Playground

Try it on WaveSpeedAI!

SkyReels V3 Reference to Video is a fast AI reference-to-video generation model that creates videos from 1 to 4 reference images and a text prompt. Ready-to-use REST inference API for character-consistent videos, product visuals, branded storytelling, social media clips, advertising creatives, and professional reference-based video generation workflows with simple integration, no coldstarts, and affordable pricing.

Features

Skywork AI SkyReels V3 Reference-to-Video generates videos from one to four reference images and a natural-language prompt. It is designed for image-guided video creation where the reference images help preserve identity, appearance, style, or scene elements while the prompt controls motion, action, camera behavior, and overall direction.


Why Choose This?

  • Reference-guided video generation Use uploaded images to anchor characters, products, or visual style in the generated video.

  • Multi-image support Upload 1–4 reference images for stronger control over appearance and consistency.

  • Prompt-driven motion Describe the scene, action, camera movement, or avatar behavior in natural language.

  • Flexible aspect ratios Choose from 16:9, 9:16, or 1:1 depending on your target platform and composition needs.

  • Simple duration control Generate clips from 5 to 10 seconds with straightforward pricing.

  • Production-ready API Suitable for character-driven clips, product videos, stylized social content, and reference-based storytelling workflows.


Parameters

ParameterRequiredDescription
promptYesText prompt describing the scene, action, camera, or avatar behavior.
imagesYesReference image URLs. Upload 1–4 images.
aspect_ratioNoAspect ratio of the generated video. Supported values: 16:9, 9:16, 1:1. Default: 16:9.
durationNoGenerated video duration in seconds. Range: 5–10. Default: 5.

How to Use

  1. Upload your reference images — provide 1–4 images to guide identity, look, or scene consistency.
  2. Write your prompt — describe the motion, action, atmosphere, camera movement, or presentation style you want.
  3. Choose aspect ratio — use 16:9, 9:16, or 1:1 based on the final placement.
  4. Set duration — choose a clip length between 5 and 10 seconds.
  5. Submit — run the model and download the generated video.

Example Prompt

A cinematic product reveal with smooth camera movement, soft studio lighting, subtle reflections, premium commercial style, and stable visual consistency with the reference images


Pricing

Pricing is based on duration.

DurationCost
5s$0.20
6s$0.24
7s$0.28
8s$0.32
9s$0.36
10s$0.40

Best Use Cases

  • Character consistency — Keep the same person, face, or style across a generated clip.
  • Product videos — Use product photos as references for short commercial-style motion content.
  • Reference-based storytelling — Anchor visual identity while prompting new action or camera movement.
  • Social media creatives — Generate vertical, square, or widescreen short-form clips from still references.
  • Visual prototyping — Explore motion directions from a fixed set of images.

Pro Tips

  • Use clear, high-quality reference images for better visual consistency.
  • If identity matters, keep the reference images visually aligned in style and subject.
  • Be specific in the prompt about motion, camera movement, and mood.
  • Start with 5s to validate the concept, then extend to a longer duration if needed.
  • Use 9:16 for mobile-first content and 16:9 for widescreen layouts.

Notes

  • Both prompt and images are required.
  • images supports 1 to 4 reference images.
  • duration supports 5 to 10 seconds.
  • aspect_ratio defaults to 16:9.
  • Pricing depends only on duration.

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",
  "images": [
    "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
  ],
  "aspect_ratio": "16:9",
  "duration": 5
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/skywork-ai/skyreels-v3/reference-to-video" \
  -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=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 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) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-Text prompt describing the scene, action, camera, or avatar behavior.
imagesarray<string>Yes-0 ~ 4 itemsReference image URLs. Upload 1 to 4 images.
aspect_ratiostringNo16:916:9, 9:16, 1:1Aspect ratio of the generated video.
durationintegerNo55 ~ 10Generated or extended video duration 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.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

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.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
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.