Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
rreAPI Docs

Wan 3.0 Video Prime

Wan 3.0 Video Prime — the high-speed tier of Alibaba's Wan 3.0 video model. Up to 30 seconds in a single pass from text, frames, reference media, documents, or a web page, at 480P/720P/1080P.

The high-speed tier of Alibaba's Wan 3.0 video model. Wan 3.0 Video Prime takes the same inputs as the standard tier — text, first/last frame images, reference images, video, audio, a document, or a public web page — and returns 2 to 30 second clips at 480P, 720P, or 1080P with an audio track by default. See current pricing on the model page.

Prime vs the standard tier

The two models accept an identical parameter set. Prime returns results faster at a higher per-second rate; nothing in the model's documentation claims a quality difference. Choose by how much the wait is worth to you — see Wan 3.0 for the standard tier.

Quick example

curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video-prime",
    "prompt": "A lighthouse keeper climbing a spiral staircase at dawn",
    "resolution": "720P",
    "aspect_ratio": "16:9",
    "duration": 10
  }'
import requests

resp = requests.post(
    "https://reapi.ai/api/v1/videos/generations",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "model": "wan3.0-video-prime",
        "prompt": "A lighthouse keeper climbing a spiral staircase at dawn",
        "resolution": "720P",
        "aspect_ratio": "16:9",
        "duration": 10,
    },
)
task_id = resp.json()["id"]
const resp = await fetch('https://reapi.ai/api/v1/videos/generations', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'wan3.0-video-prime',
    prompt: 'A lighthouse keeper climbing a spiral staircase at dawn',
    resolution: '720P',
    aspect_ratio: '16:9',
    duration: 10,
  }),
});
const { id } = await resp.json();
body := strings.NewReader(`{
  "model": "wan3.0-video-prime",
  "prompt": "A lighthouse keeper climbing a spiral staircase at dawn",
  "resolution": "720P",
  "aspect_ratio": "16:9",
  "duration": 10
}`)

req, _ := http.NewRequest("POST", "https://reapi.ai/api/v1/videos/generations", body)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)

Authentication

Every request needs an API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Create one in API keys.

Endpoint

POST https://reapi.ai/api/v1/videos/generations

Generation is asynchronous. The response carries a task id; poll GET /api/v1/tasks/{id} until status settles.

Modes

There is no mode field — the model picks the mode from which media fields are present. The two media families are mutually exclusive and a request that mixes them is rejected.

ModeFields to send
Text to videoprompt only
First framefirst_frame_url
First + last framefirst_frame_url + last_frame_url
Omni-referenceany of reference_image_urls / reference_video_urls / reference_audio_urls
Documentreference_file_urls
Web pagereference_link_urls

Frame fields (first_frame_url, last_frame_url) cannot be combined with any reference_*_urls field. reference_file_urls and reference_link_urls are also mutually exclusive with each other.

In reference mode, address your material from the prompt as Image1, Video1, Audio1 and so on, numbered by position within each array.

Request body

FieldTypeRequiredNotes
modelstringyeswan3.0-video-prime
promptstringnoUp to 20,000 characters. Required in practice for text-to-video. Chinese and English.
first_frame_urlstringnoOne image used as the opening frame.
last_frame_urlstringnoOne image used as the closing frame.
reference_image_urlsstring[]noUp to 10 images.
reference_video_urlsstring[]noUp to 5 clips, 1–15s each, 15s combined. Input duration + duration must not exceed 30s.
reference_audio_urlsstring[]noUp to 5 clips, 1–15s each, 15s combined.
reference_file_urlsstring[]noExactly one document: docx, doc, xlsx, xls, pptx, ppt, pdf, txt, key, pages, numbers, md.
reference_link_urlsstring[]noExactly one public, login-free web page.
resolutionenumno480P / 720P / 1080P. Default 1080P.
aspect_ratioenumnoadaptive / 16:9 / 4:3 / 1:1 / 3:4 / 9:16. Default adaptive.
durationintegerno2–30 seconds, or -1 to let the model choose. Default 5.
audiobooleannoWhether the clip carries an audio track. Default true.
seedintegerno0–2147483647.
content_filterbooleannoSafety filter. Default true. API keys only — see below.

All media inputs must be public http(s) URLs. reAPI does not accept base64 or data: URIs on any endpoint, for any model.

Content filter

content_filter defaults to true. Requests authenticated with an API key may set it to false; requests originating from the reAPI website are rejected with 20003 if they try, regardless of the value sent.

Response envelope

Submitting returns a task id:

{ "id": "task_01k9s419324drezfbwnsvxyr6h", "status": "processing" }

Poll GET /api/v1/tasks/{id}. A completed task looks like:

{
  "id": "task_01k9s419324drezfbwnsvxyr6h",
  "model": "wan3.0-video-prime",
  "status": "completed",
  "created_at": 1762853430,
  "output": {
    "video_urls": [
      "https://cdn.reapi.ai/media/tasks/01k9s419324drezfbwnsvxyr6h/0.mp4"
    ]
  },
  "usage": { "credits": 1386 },
  "error": null
}

usage.credits is what the task actually cost once settled — see Tasks.

Pricing

Billing has two dimensions: output seconds × resolution.

Neither the mode nor the audio track changes the rate — a document-to-video request costs the same per second as a text-to-video one at the same resolution, with or without sound. Current per-second rates for each resolution are on the model page.

credits = ceil(per_second_usd × markup × duration × 1000)

1 credit = $0.001 USD.

Two things to know before you send a request:

  • Omitting resolution bills at 1080P, the most expensive tier, because that is the model's own default.
  • duration: -1 reserves the 30-second ceiling. The final length is not knowable at submit time, so the hold is taken at the maximum. Pass an explicit duration when cost matters.

Failed tasks are refunded automatically.

Errors

CodeMeaning
20003Invalid parameter value — mixed media families, out-of-range duration, unknown enum, or a website request trying to disable the content filter
20004Model not supported on this endpoint
30001Insufficient credits
80006Rejected by content moderation
80007Upstream rejected the input

Full catalog: Errors.

Tips

  • Iterate at 480P and switch to 1080P only for the final render — the rate scales with the tier and the framing does not change.
  • Reference images hold characters and wardrobe across a long take. Name them positionally in the prompt (Image1, Image2) rather than describing them again in prose.
  • With reference video, remember input seconds count against the 30-second budget: a 10-second reference leaves 20 seconds of output.
  • Write prompts as a shot list with explicit time ranges. The model follows timed beats more reliably than a single paragraph of description.
  • Pick the standard Wan 3.0 tier when turnaround is not the constraint — it takes the identical request body at a lower rate.
  • Wan 3.0 — the standard tier of the same model
  • Tasks — polling, usage.credits, and task lifecycle
  • Errors — full error code catalog

Table of Contents