X AI Grok Imagine Video V1.5 Reference To Video

X AI Grok Imagine Video V1.5 Reference To Video

Playground

Try it on WaveSpeedAI!

xAI Grok Imagine Video v1.5 Reference to Video turns up to seven reference images and a natural-language prompt into short, stylized AI videos, with 480P / 720P output options and selectable aspect ratios for identity-consistent clips, character-driven videos, social media content, creative storytelling, and marketing workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

xAI Grok Imagine Video V1.5 Reference-to-Video generates short videos from up to seven reference images and a natural-language prompt. It is designed for identity- and style-consistent motion generation, character-driven clips, stylized social media content, and other reference-guided video workflows.


Why Choose This?

  • Reference-guided video generation Provide 1-7 reference images to guide the subject, identity, and style of the generated video.

  • Prompt-based motion control Use text to describe motion, camera behavior, atmosphere, and how the scene evolves.

  • Consistent subjects and style Keep a character, look, or aesthetic coherent across the clip by supplying multiple references.

  • Flexible output settings Choose 480p or 720p, pick an aspect ratio, and set the clip length.

  • Production-ready API Suitable for character content, concept visualization, ads, and stylized motion storytelling.


Parameters

ParameterRequiredDescription
promptYesText description of the desired motion, camera movement, and scene.
reference_imagesYes1-7 reference image URLs that guide the subject and style of the video.
durationNoOutput video duration in seconds. Range: 1-15. Default: 6.
aspect_ratioNoAspect ratio of the output video. Supported: 16:9, 1:1, 9:16, 3:2, 2:3. Default: 16:9.
resolutionNoOutput video resolution. Supported: 480p, 720p. Default: 720p.

How to Use

  1. Upload reference images — provide 1-7 images that define the subject, identity, or style.
  2. Write your prompt — describe the motion, scene, and camera behavior you want.
  3. Set duration (optional) — choose how long the video should be.
  4. Choose aspect ratio — match the target platform (e.g. 9:16 for vertical, 16:9 for landscape).
  5. Choose resolution — use 480p for lower cost or 720p for higher quality.
  6. Submit — run the model and download the generated video.

Example Prompt

The person from the references walks confidently through a rainy neon-lit street at night, cinematic framing, realistic skin texture, natural hair movement, subtle camera push-in


Pricing

Pricing depends on output duration, resolution, and the number of reference images.

ResolutionPrice per Second5s Example (1 image)
480p$0.08$0.41
720p$0.14$0.71

Each reference image adds $0.01.

Example Costs (1 reference image)

Resolution1s5s10s15s
480p$0.09$0.41$0.81$1.21
720p$0.15$0.71$1.41$2.11

Billing Rules

  • 480p costs $0.08 per second
  • 720p costs $0.14 per second
  • Each reference image adds $0.01 (1-7 images supported)
  • Pricing scales linearly with duration
  • Billed duration is rounded up to the next whole second
  • Minimum billed duration is 1 second
  • Maximum billed duration is 15 seconds

Best Use Cases

  • Identity-consistent video — Keep a character or subject coherent across a clip.
  • Character-driven content — Animate a person or persona defined by reference images.
  • Social media content — Create stylized animated visuals for posts and promos.
  • Concept visualization — Explore motion directions anchored to a defined look.
  • Creative prototyping — Test reference-guided motion ideas quickly.

Pro Tips

  • Use clear, high-quality reference images for better identity and style stability.
  • Provide multiple references of the same subject to strengthen consistency.
  • Be specific in your prompt about camera movement, subject motion, and atmosphere.
  • Match aspect_ratio to where the clip will be published.
  • Use 480p for quick testing and 720p for better final-quality clips.

Notes

  • prompt and reference_images are required.
  • reference_images supports 1-7 images.
  • duration supports 1-15 seconds.
  • resolution defaults to 720p; aspect_ratio defaults to 16:9.
  • Pricing depends on duration, resolution, and the number of reference images.

  • xAI Grok Imagine Video v1.5 Text-to-Video — Generate a video from a prompt alone.
  • xAI Grok Imagine Video v1.5 Image-to-Video — Animate a single input image.

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

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/x-ai/grok-imagine-video-v1.5/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 description of the desired motion and scene.
reference_imagesarray<string>Yes-1 ~ 7 itemsReference image URLs guiding the video. Up to 7 images supported.
durationintegerNo61 ~ 15Output video duration in seconds.
aspect_ratiostringNo16:916:9, 1:1, 9:16, 3:2, 2:3Aspect ratio of the generated video.
resolutionstringNo720p720p, 480pOutput video resolution.

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.