Alibaba Wan 2.7 Image To Video Spicy

Alibaba Wan 2.7 Image To Video Spicy

Playground

Try it on WaveSpeedAI!

Wan 2.7 Spicy Image to Video is a fast AI image-to-video generation model that converts images into high-quality videos with smooth animations optimized for scalable content generation. Ready-to-use REST inference API for animating images, social media clips, product videos, advertising creatives, creative storytelling, and professional image-to-video workflows with simple integration, no coldstarts, and affordable pricing.

Features

Wan 2.7 Spicy converts images into unlimited high-quality videos with smooth, cinematic motion. It transforms static images into dynamic 720p and 1080p clips with expressive motion, rich color, and natural transitions — perfect for creative storytelling and scalable content generation.


Why It Works Well

  • Unlimited-style generation Optimized for high-quality, smooth animations at scale.

  • Expressive motion Bold, vivid motion and rich tonal contrast with stable temporal coherence.

  • Flexible resolution 720p or 1080p to match your needs.

  • Duration options 5s, 10s, or 15s clips.


Parameters

ParameterRequiredDescription
imageYesThe keyframe or base image to animate (URL or upload)
promptYesDescribe the motion, story, and style
resolutionNo720p (default) or 1080p
durationNo5, 10, or 15 seconds (default: 5)
shot_typeNosingle (default) or multi
negative_promptNoElements to avoid
enable_prompt_expansionNoEnable prompt expansion (default: false)
seedNoRandom seed; -1 for random

How to Use

  1. Upload your image — ensure clarity and proper framing.
  2. Enter a prompt — describe desired motion, mood, or camera movement.
  3. Select resolution and duration — choose based on your needs.
  4. Set a seed (optional) — for consistent, reproducible results.
  5. Run — click the button to generate your video.

Pricing

Duration720p1080p
5 s$0.50$0.75
10 s$1.00$1.50
15 s$1.50$2.25

Billing Rules

  • 720p rate: $0.50 per 5 seconds
  • 1080p rate: $0.75 per 5 seconds (1.5× multiplier)

Best Use Cases

  • Creative Storytelling — Transform static images into dynamic narrative clips.
  • Social Media Content — Generate eye-catching videos for TikTok, Reels, and Stories.
  • Music Videos — Create visually expressive content with bold motion.
  • Marketing & Ads — Produce scalable video content from product images.
  • Artistic Projects — Experimental and avant-garde video generation.

Pro Tips

  • Works best with clear, well-lit images with proper framing.
  • Use detailed prompts describing motion, mood, and camera movement for best results.
  • Enable prompt expansion for automatically enhanced descriptions.
  • Use negative_prompt to exclude unwanted elements or styles.
  • Same API shape as Wan 2.7 Image-to-Video for easy integration.

Notes

  • Both image and prompt are required fields.
  • Ensure uploaded image URLs are publicly accessible.
  • 1080p resolution costs 1.5× the 720p rate.

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'
{
  "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
  "resolution": "720p",
  "duration": 5,
  "shot_type": "single",
  "enable_prompt_expansion": false,
  "seed": -1
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/alibaba/wan-2.7/image-to-video-spicy" \
  -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
imagestringYes-The image for generating the output.
audiostringNo--Audio URL to guide generation (optional).
promptstringNo-The positive prompt for the generation.
negative_promptstringNo-The negative prompt for the generation.
resolutionstringNo720p720p, 1080pThe resolution of the generated media.
durationintegerNo55, 10, 15The duration of the generated media in seconds.
shot_typestringNosinglesingle, multiThe type of shots to generate.
enable_prompt_expansionbooleanNofalse-If set to true, the prompt optimizer will be enabled.
seedintegerNo-1-The 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.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.