GPT Image 2.5 is live — OpenAI's newest image model, targeted edits that leave the rest of the frame alone
rreAPI Docs

Wan 3.0 Video Prime

Wan 3.0 Video Prime API — up to 30 seconds from text, frames or reference media, with 480P through 4K output. API-key access only; ordinary keys use the NSFW channel.

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 through 4K with an audio track by default. See current pricing on the model page.

API access and content filtering

This model is available only through an API key. Playground generation is disabled for all users, including administrators. Session-cookie requests are rejected before a task is created or credits are charged.

Ordinary API keys: content filtering is always disabled (NSFW channel). content_filter and the legacy nsfw_checker field are ignored, including true, false, other values, and omission.

Administrator-owned API keys: content_filter: true enables filtering (non-NSFW channel); false disables it (NSFW channel). This exception depends on the verified key owner, not a request parameter or an administrator's website session. At 2K and 4K, filtering must be disabled.

For 2K or 4K, use the same model id. Document and web page references (reference_file_urls / reference_link_urls) are unavailable at these resolutions.

Prime vs the standard tier

The two models support similar input families but use different request fields. Prime uses aspect_ratio, explicit frame fields, and reference_*_urls; standard Wan 3.0 uses size and its own media fields. Translate the payload when switching models. Prime is positioned for faster turnaround at a higher per-second rate, without a fixed latency guarantee or a documented quality advantage. 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 / 2K / 4K. Default 1080P. 2K and 4K do not support document or web page references.
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_filterboolean for admin keys; ignored otherwisenoOrdinary keys always use NSFW. Admin keys: true enables filtering; false disables it. See Content filter 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

Ordinary API keys always use the NSFW channel. Both content_filter and nsfw_checker are ignored, so sending true does not enable filtering.

Administrator-owned API keys can set content_filter to a boolean:

ValueAdministrator API behavior
trueFiltering enabled; available at 480P, 720P and 1080P.
falseFiltering disabled; available at all supported resolutions.
OmittedDefaults to false, preserving this model's existing behavior.

For administrator keys, the legacy boolean nsfw_checker remains accepted; content_filter takes precedence when both are present. Invalid non-boolean values are rejected. 2K and 4K with filtering enabled are rejected before credits are charged. The effective setting is preserved on every fallback, and the filter choice does not change the public price.

Administrator key permissions are cached for up to 5 minutes. Role changes may take that long to affect requests.

Playground generation is disabled. Use Authorization: Bearer YOUR_API_KEY; a website session cookie cannot submit this model, even for administrators.

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: billable 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.

billable_seconds = reference_video_seconds + duration
credits          = ceil(public_per_second_usd × billable_seconds × 1000)

1 credit = $0.001 USD. Use the public rate at its billing precision; the model page rounds rates for display. The task estimate and settled usage.credits provide the charge for a specific request.

Three things to know before you send a request:

  • Omitting resolution bills at 1080P because that is the model's own default.
  • Reference video is billable on top of duration. Each clip in reference_video_urls is processed as well as generated, so its own length is charged too. reAPI measures the clips server-side at submit time, and their combined length with duration is capped at 30 seconds — a 6-second clip with duration: 8 bills 14 seconds. Reference images, audio, documents and web pages carry no billable length. A clip reAPI cannot read is rejected rather than billed as zero.
  • 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 has a lower rate but different request fields; adapt the payload using the standard model documentation.
  • 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