Seedream 5.0 Pro è LIVE | Prova nel Generatore di immagini →

Waver 1.0

bytedance /

Waver 1.0 is an all-in-one model for text-to-video, image-to-video, and text-to-image generation. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

image-to-video
Input

Inattivo

$0.3per esecuzione·~33 / $10

Successivo:

EsempiVedi tutto

Anamorphic ultra-wide shot of a colossal, lone explorer-class starship gliding silently through the upper atmosphere of a storm-wracked gas giant. Volumetric clouds swirl below, occasionally illuminated by massive lightning flashes, casting dynamic, dramatic shadows across the ship's hull. Faint lens flares streak across the frame.

A young woman sits on a sun-drenched park bench, eyes closed and a blissful smile on her face, completely lost in the music from her headphones. Autumn leaves gently fall around her.

A person wrapped in a warm blanket, looking up at a vast, star-filled night sky from an open field. A look of pure awe and wonder is on their face, illuminated by the soft moonlight.

A young female artist with a few paint splatters on her overalls, in a bright, sun-drenched loft studio. She is completely in her element, smiling subtly with intense focus as she adds a bold yellow brushstroke to a large, abstract canvas. The camera slowly pushes in on her face.

Ultra realistic young woman, casual outfit, sitting on a cafe terrace, sipping coffee, soft morning sunlight, slight breeze moving hair, camera slowly dolly in, natural background chatter, cinematic atmosphere

Handheld tracking shot, eye-level, following a desperate man sprinting through a debris-strewn, chaotic city street. Just behind him, a massive fireball from an explosion erupts in extreme slow motion, sending a shockwave of dust and embers washing over him. The air is thick with smoke and particle effects.

A young girl with short brown hair and large, curious eyes lies on her back in a field of impossibly tall, sun-drenched grass. She holds a single, glowing dandelion seed, watching it with a look of pure wonder as it begins to float away into a brilliant blue sky with soft, puffy clouds.

A charming and slightly clumsy inventor made of plasticine clay, in the style of Aardman Animations. He wears tiny, wire-rimmed glasses and a knitted wool vest. Visible fingerprints can be seen on his face, giving him a tactile, handmade quality. He looks proudly at his comically oversized, clunky invention. The scene is shot with the characteristic lighting of stop-motion animation.

Women move forward.

Modelli correlati

README

Waver 1.0

Waver 1.0 is a powerful image-to-video generation model that transforms static images into dynamic, cinematic videos. Simply provide an image and describe the motion you want — the model brings your visual to life with smooth, high-quality animation.

Why It Stands Out

  • Image-driven generation: Start from any image and animate it into a coherent video while preserving the original style and composition.
  • Prompt-guided motion: Describe camera movements, actions, and atmospheric effects to control how your image comes to life.
  • Prompt Enhancer: Built-in AI-powered prompt optimization helps craft better descriptions for improved results.
  • High-quality output: Produces smooth, cinematic videos with natural motion and visual fidelity.
  • Reproducibility: Use the seed parameter to recreate exact results or explore variations.

Parameters

ParameterRequiredDescription
imageYesSource image (upload or public URL).
promptYesText description of desired motion, camera, and style.
seedNoSet for reproducibility; leave empty for random.

How to Use

  1. Upload your source image — drag and drop a file or paste a public URL.
  2. Write a prompt describing the motion, camera movement, and atmosphere you want. Use the Prompt Enhancer for AI-assisted optimization.
  3. Set a seed (optional) for reproducible results.
  4. Click Run and wait for your video to generate.
  5. Preview and download the result.

Best Use Cases

  • Cinematic Content — Transform concept art and stills into dynamic movie-like sequences.
  • Social Media Content — Turn photos into engaging video posts for TikTok, Reels, and Shorts.
  • Marketing & Advertising — Animate product images and hero shots without expensive video production.
  • Storytelling & Art — Bring illustrations, sci-fi scenes, and fantasy artwork to life.
  • Game & Film Previews — Create animated concept trailers from static artwork.

Pricing

OutputPrice
Per video$0.30

Pro Tips for Best Quality

  • Use high-resolution, detailed source images for optimal results.
  • Be specific in your prompt — describe camera movement (pan, zoom, tracking), subject actions, and environmental effects.
  • Include atmospheric details like lighting changes, particle effects, or weather conditions.
  • For sci-fi or fantasy scenes, describe volumetric effects like clouds, smoke, or energy.
  • Fix the seed when iterating to compare different prompt variations.

Notes

  • Ensure uploaded image URLs are publicly accessible.
  • Processing time varies based on current queue load.
  • Please ensure your prompts comply with content guidelines.
Nota:Questo sito web utilizza modelli di intelligenza artificiale forniti da terze parti.

Waver 1.0 API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/bytedance/waver-1.0 with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Waver 1.0 below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
}
JSON
)

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

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; 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 has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  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
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/bytedance/waver-1.0";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "prompt": "A cinematic shot of a city at sunset, soft golden light",
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/bytedance/waver-1.0", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Waver 1.0 API — Frequently asked questions

What is the Waver 1.0 API?

Waver 1.0 is a ByteDance model for video generation from images, exposed as a REST API on WaveSpeedAI. Waver 1.0 is an all-in-one model for text-to-video, image-to-video, and text-to-image generation. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Waver 1.0 API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/bytedance/bytedance-waver-1.0.

How much does Waver 1.0 cost per run?

Waver 1.0 starts at $0.30 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Waver 1.0 accept?

Key inputs: `prompt`, `image`, `seed`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/bytedance/bytedance-waver-1.0.

How long does Waver 1.0 take to generate?

Median end-to-end generation time on WaveSpeedAI is around 132 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Waver 1.0 outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (ByteDance). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Waver 1.0 | Fast Image-to-Video API | WaveSpeedAI