Seedream 5.0 Pro đã ra mắt | Thử trong Trình tạo ảnh →

Ray 2 T2V

luma /

Luma Ray 2 is a Text-to-Video model that creates high-quality videos from text prompts, with advanced prompt optimization and support for various video sizes. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

text-to-video
Đầu vào

Chờ

$0.4cho mỗi lần chạy·~25 / $10

Tiếp theo:

Ví dụXem tất cả

2D animation of a cat astronaut flying through candy-colored galaxies, playful transitions

Sunset beach walk with a golden retriever, wide landscape shots, handheld closeups of sand and waves

A glowing deer walking through a bioluminescent forest, dreamlike fog, soft glowing particles floating

Crystal castles rising from the ocean, moonlight reflections, dramatic orchestral vibe

A robot discovering an abandoned Earth, desaturated colors, overgrown skyscrapers, lonely soundtrack

Felt-texture bunny baking cupcakes in a cozy forest kitchen, top-down and close-up shots, pastel tones

Aerial drone shot over Icelandic waterfalls, dramatic cliffs, slow-motion eagle soaring above

Claymation-style fox exploring a mushroom village, cheerful music, warm lighting

Macro shots of insects on flowers, light dew, gentle breeze, ambient forest sounds

An astronaut floating silently in deep space, tethered to a sleek, white spaceship. The Earth is a beautiful, bright marble in the background. The reflection of distant nebulae can be seen in her helmet visor. Cinematic, breathtaking view, realistic, style of "Gravity" (2013 movie). -camera rotate counter-clockwise

Mô hình liên quan

README

Luma Ray 2 — Text-to-Video

Luma Ray 2 Text-to-Video is Luma AI's powerful text-to-video generation model that creates stunning, high-quality videos from text descriptions. Generate smooth, visually striking 720p videos with excellent motion coherence — perfect for creative content and professional projects.

Why It Stands Out

  • High-quality generation: Produces detailed videos with smooth, natural motion.
  • HD 720p output: Generate crisp videos in landscape (1280×720) or portrait (720×1280).
  • Prompt Enhancer: Built-in AI-powered prompt optimization for better results.
  • Style versatility: Handles various styles from 2D animation to photorealistic scenes.
  • Flexible duration: Choose between 5 or 10 second video lengths.

Parameters

ParameterRequiredDescription
promptYesText description of the video you want to generate.
sizeNoOutput resolution: 1280×720 or 720×1280 (default: 1280×720).
durationNoVideo length: 5 or 10 seconds (default: 5).

How to Use

  1. Write a prompt describing the scene, action, and style you want. Use the Prompt Enhancer for AI-assisted optimization.
  2. Select size — choose landscape (1280×720) or portrait (720×1280).
  3. Set duration — choose 5 or 10 seconds.
  4. Click Run and wait for your video to generate.
  5. Preview and download the result.

Best Use Cases

  • 2D Animation — Create playful animated content with vibrant styles.
  • Social Media Content — Generate platform-optimized videos for TikTok, Reels, and Shorts.
  • Marketing & Advertising — Produce eye-catching promotional videos and ad creatives.
  • Creative Projects — Bring imaginative concepts to life with unique visual styles.
  • Music Videos — Generate dynamic visuals for songs and audio tracks.

Pricing

DurationPrice
5 seconds$0.40
10 seconds$0.80

Pro Tips for Best Quality

  • Be detailed in your prompt — describe subject, action, environment, and style.
  • Specify animation style if desired (e.g., "2D animation," "3D render," "photorealistic").
  • Include mood keywords like "playful," "dramatic," "whimsical," or "cinematic."
  • Describe transitions and motion for more dynamic results.
  • Choose portrait (720×1280) for mobile-first platforms like TikTok.

Notes

  • Processing time varies based on duration and current queue load.
  • Please ensure your prompts comply with content guidelines.
Lưu ý:Trang web này sử dụng các mô hình AI do bên thứ ba cung cấp.

Ray 2 T2v API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/luma/ray-2-t2v 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 Ray 2 T2v 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",
    "size": "1280*720",
    "duration": 5
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/luma/ray-2-t2v" \
  -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/luma/ray-2-t2v";
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",
        "size": "1280*720",
        "duration": 5
}),
});
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",
    "size": "1280*720",
    "duration": 5
}

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/luma/ray-2-t2v", 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)

Ray 2 T2v API — Frequently asked questions

What is the Ray 2 T2v API?

Ray 2 T2v is a Luma model for video generation, exposed as a REST API on WaveSpeedAI. Luma Ray 2 is a Text-to-Video model that creates high-quality videos from text prompts, with advanced prompt optimization and support for various video sizes. 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 Ray 2 T2v 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/luma/luma-ray-2-t2v.

How much does Ray 2 T2v cost per run?

Ray 2 T2v starts at $0.40 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 Ray 2 T2v accept?

Key inputs: `prompt`, `duration`, `size`. 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/luma/luma-ray-2-t2v.

How long does Ray 2 T2v take to generate?

Median end-to-end generation time on WaveSpeedAI is around 218 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 Ray 2 T2v outputs commercially?

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

Ray 2 T2V | Powerful Text-to-Video API | WaveSpeedAI