Nano Banana 2.1 अब LIVE — Google का नवीनतम | आज़माएँ →
साइन इन

wavespeed-ai/scail-2

SCAIL-2 is a fast AI character animation and subject replacement model that preserves identity and motion from a single reference image and a driving video. It supports both Animation mode and Replacement mode at 480p or 720p. Ready-to-use REST inference API for character animation, motion transfer, subject replacement, social media clips, creative video editing, and professional image-to-video workflows with simple integration, no coldstarts, and affordable pricing.

Motion Control
इनपुट

ड्रैग और ड्रॉप करें या अपलोड करने के लिए क्लिक करें

preview

ड्रैग और ड्रॉप करें या अपलोड करने के लिए क्लिक करें

निष्क्रिय

$0.2प्रति रन·~50 / $10

उदाहरणसभी देखें

संबंधित मॉडल

README

SCAIL-2 — End-to-End Character Animation

SCAIL-2 generates character animation from a single reference image and a driving video. Upload a character image, provide a driving video, choose a generation mode, and create an animated or replacement-style video result.

SCAIL-2 supports two modes:

  • Animation Mode — animate the reference character using the driving video's motion.
  • Replacement Mode — replace the driving video's subject with the reference character while preserving the original scene.

Key Features

  • Image-to-video character animation Animate a reference character image using motion from an input driving video.

  • Subject replacement Swap the subject in the driving video with the reference character while preserving the original scene structure.

  • Two generation modes Use animate for motion-driven character animation or replace for subject replacement.

  • Long-video support Supports input video duration up to 120 seconds for billing calculation.

  • Audio passthrough The driving video's audio track is preserved in the output.

Parameters

ParameterRequiredDescription
imageYesReference character image. JPG or PNG is recommended; avoid WEBP.
videoYesDriving video that provides the motion.
promptNoOptional positive prompt describing the desired output. Default: empty string.
modeNoGeneration mode: animate or replace. Default: animate.
resolutionNoOutput resolution tier: 480p or 720p. Default: 480p.
seedNoRandom seed. Use -1 for a random seed. Default: -1.

How to Use

  1. Upload image — Provide a clear reference image of the character. JPG or PNG is recommended.
  2. Upload video — Provide the driving video that contains the motion.
  3. Add prompt (optional) — Describe the desired output, such as style, character details, or scene quality.
  4. Choose mode — Select animate to animate the reference character, or replace to swap the video subject with the reference character.
  5. Select resolution — Choose 480p for the default output or 720p for higher resolution.
  6. Generate — Create the final video result.

Pricing

Billing duration: Input media duration is rounded up to whole seconds. The minimum billed duration is 3 seconds; shorter inputs are billed as 3 seconds. Existing per-5-second rate tables remain unchanged.

ResolutionPrice per 5 sPrice per secondMax billed duration
480p$0.20$0.04 / s120 s
720p$0.40$0.08 / s120 s

Billing Rules

  • Minimum charge: 3 seconds. Any video shorter than 3 seconds is billed as 3 seconds.
  • Maximum billed duration: 120 seconds.
  • 720p costs 2x the 480p price.
  • Billing is based on the input video duration after applying the 3-second minimum and 120-second maximum cap.

Best Use Cases

  • Character animation — Animate a reference character using motion from a driving video.
  • Dance and gesture transfer — Transfer body movement, gestures, and performance motion to a reference character.
  • Subject replacement — Replace the main subject in a video with a reference character.
  • Avatar content creation — Generate character videos for social media, entertainment, and creative projects.
  • Video variation — Recreate the same motion with different character references.

Pro Tips

  • Use a clear reference image with the character visible.
  • JPG or PNG is recommended; avoid WEBP.
  • Use a driving video with a clearly visible main subject.
  • Keep the reference image's camera angle close to the driving video's framing when possible.
  • Use animate when you want to drive the reference character with the video motion.
  • Use replace when you want to swap the video subject with the reference character.
  • Use 480p for testing and 720p for higher-resolution output.
  • Add a prompt when you want more control over the style or visual details.

Notes

  • image and video are required fields.
  • prompt, mode, resolution, and seed are optional.
  • Default mode is animate.
  • Default resolution is 480p.
  • Default seed is -1, which uses a random seed.
  • minimum billing duration is 3 seconds.
  • Maximum billed duration is 120 seconds.
  • Ensure uploaded image and video URLs are publicly accessible.
नोट:यह वेबसाइट तृतीय पक्षों द्वारा प्रदान किए गए AI मॉडलों का उपयोग करती है। दस्तावेज़ की कीमतें केवल संदर्भ के लिए हैं और पुरानी हो सकती हैं। Generate बटन अनुमान दिखाता है; टास्क का अंतिम शुल्क ही मान्य होगा।

Scail 2 API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/scail-2 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 Scail 2 below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
    "mode": "animate",
    "resolution": "480p"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/scail-2" \
  -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="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"

# 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|deleted) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/scail-2";
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({
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
        "mode": "animate",
        "resolution": "480p"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = `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", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
  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 = {
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
    "mode": "animate",
    "resolution": "480p"
}

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/wavespeed-ai/scail-2", 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 = 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", "deleted"}:
        raise RuntimeError(result)
    time.sleep(2)

Scail 2 API — Frequently asked questions

What is the Scail 2 API?

Scail 2 is a WaveSpeedAI model for pose / motion driven video, exposed as a REST API on WaveSpeedAI. SCAIL-2 is a fast AI character animation and subject replacement model that preserves identity and motion from a single reference image and a driving video. It supports both Animation mode and Replacement mode at 480p or 720p. Ready-to-use REST inference API for character animation, motion transfer, subject replacement, social media clips, creative video editing, and professional image-to-video workflows with simple integration, no coldstarts, and affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Scail 2 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 Python, JavaScript, and cURL examples for submitting requests and polling results. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/wavespeed-ai/scail-2.

How much does Scail 2 cost per run?

Scail 2 starts at $0.2 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 Scail 2 accept?

Key inputs: `prompt`, `image`, `video`, `resolution`, `seed`, `mode`. 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/wavespeed-ai/scail-2.

How long does Scail 2 take to generate?

Reported generation time on WaveSpeedAI is around 159 seconds per request. This is an estimate, not a latency guarantee; queue time and input settings can change the total wait. live status is visible in the prediction record.

Can I use Scail 2 outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). Check the provider's applicable terms and WaveSpeedAI's Terms of Service before commercial use.

llms.txt — wavespeed-ai/scail-2 for AI agents and LLMs