Best Performance & Best Value

One model. Both recommendations.

W

Wan 3.0

Wan
Arena score1476One model. Both recommendations.
API price~$0.07Per second
Best Performance & Best Value for Text → Video.

One model leads both performance and value in the supplied text-to-video comparison.

Arena · supplied snapshot·Supplied Arena snapshot · date pending·How we compare

The same model holds both recommendation positions. Its supplied unit price is approximate and actual billing may vary. Arena scores and prices are from the supplied snapshot. The leaderboard source and snapshot date still need confirmation.

Compare the essentials.

The same workload, with the details that help you choose.

Side-by-side comparison of recommended text → video models
ComparisonWan 3.0Best Performance & Best Value
Arena score1476

Supplied Arena snapshot · date pending

Relative scoreSame recommendation
Billing rate~$0.07 / second
Arena differenceSame model
Cost differenceSame model
Supported modalitiestext → video
Main reason to chooseOne model holds both recommendation positions.
Best fitVideo generation from written concepts
Billing detailsApproximate supplied reference price per second. Resolution, duration and actual billing may vary.

The same model holds both recommendation positions. Its supplied unit price is approximate and actual billing may vary.

Implementation

Test your chosen model.

Copy a model test, replace the API key with your own, and run.

Copy the Python or cURL test for Wan 3.0. Replace the API-key placeholder with your own key and run.

Wan 3.0 · text to video · Submits a five-second video test and polls for the resulting video URL.

Wan 3.0 · Python
import json
import time
from urllib.parse import quote
from urllib.error import HTTPError
from urllib.request import Request, urlopen

API_KEY = "YOUR_ROTEN_API_KEY"

def send(url, payload=None):
    data = json.dumps(payload).encode("utf-8") if payload is not None else None
    request = Request(url, data=data, headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"})
    try:
        with urlopen(request, timeout=180) as response:
            return json.load(response)
    except HTTPError as error:
        raise SystemExit(f"HTTP {error.code}: {error.read().decode('utf-8')}")

payload = json.loads(r'''{
  "prompt": "An indigo geometric shape moves slowly across a midnight navy background.",
  "duration": 5,
  "size": "720p",
  "model": "wan3.0-video"
}''')
result = send("https://api.roten.ai/v1/video/generations", payload)
task_id = result["task_id"]
for attempt in range(120):
    result = send("https://api.roten.ai/v1/video/generations" + "/" + quote(str(task_id), safe=""))
    status = result.get("status")
    if status == "completed":
        print(result["url"])
        break
    if status == "failed":
        raise SystemExit(json.dumps(result.get("error", result)))
    if status not in ("pending", "processing"):
        raise SystemExit("Unexpected task response: " + json.dumps(result))
    time.sleep(5)
else:
    raise SystemExit("The video is still processing. Task ID: " + str(task_id))

Python tests use the standard library. Video cURL tests also use Python 3 to read task responses.

A clear reference point

Understand the recommendation.

Recommendations combine the supplied Arena scores with the supplied model prices. A benchmark score is one signal for choosing a model for your workload.

Arena · supplied snapshot·Supplied Arena snapshot · date pending·How we compare

Learn how we rank models

Built for production

Running AI at scale?

Talk to us about volume pricing, model selection and migration.

Talk to Sales