Wan 3.0 Prime

POST https://api.beatapi.io/v1/videos/tasks

The priority render tier of Wan 3.0 — the same 2–30 second output at the same price, served from the faster queue.

Supported modes

ModeRequired inputRules
Text to videomodel, promptOmit images.
Image to videomodel, prompt, imagesOne image starts the render from that frame.
With referencesmodel, prompt, reference_videos or reference_audiosA reference video bills the request at 1.5x.

Async flow: Create the task, save data.id, then poll the Task with GET /v1/tasks/{task_id}. On succeeded, read data.output.media. On failed, read data.error_code and data.error_message, then follow the error and retry policy.

Using a local file? upload a local input first and pass the returned data.url.

Authorization

Authorization   string   required

Send your BeatAPI API key as a Bearer token. Create one on the Dashboard.

Authorization: Bearer <BEATAPI_API_KEY>

Keep permanent API keys on trusted servers. Content-Type: application/json is required for the request body. Idempotency-Key is optional when the endpoint exposes it and is recommended for safe retries with the exact same body.

Request body

model   string   required

Must be wan-3.0-prime.

Value: wan-3.0-prime


prompt   string   required

Video generation instructions.

Length: 1 to 5000 characters


images   string[]   optional

Public HTTPS images. One starts an image-to-video render; more are used as visual references.

Count: 1 to 10 items


reference_videos   string[]   optional

Public HTTPS video references. A request that carries one is billed at 1.5x.

Count: 1 to 5 items


reference_audios   string[]   optional

Public HTTPS audio references.

Count: 1 to 5 items


duration   integer   optional

Requested output duration in seconds. Any whole number in range; there is no long-clip surcharge.

Default: 5
Range: 2 to 30


aspect_ratio   enum<string>   optional

Output video aspect ratio.

Available options: 16:9, 9:16, 1:1, 4:3, 3:4
Default: "16:9"


resolution   enum<string>   optional

Output resolution tier. Price scales with it.

Available options: 480p, 720p, 1080p
Default: "720p"

Request examples

Text to video

$curl --request POST \
> --url https://api.beatapi.io/v1/videos/tasks \
> --header 'Authorization: Bearer <BEATAPI_API_KEY>' \
> --header 'Content-Type: application/json' \
> --data '{
> "model": "wan-3.0-prime",
> "prompt": "A slow dolly through a neon-lit night market in the rain, steam rising from food stalls.",
> "duration": 8,
> "aspect_ratio": "16:9",
> "resolution": "720p"
>}'

Image to video

$curl --request POST \
> --url https://api.beatapi.io/v1/videos/tasks \
> --header 'Authorization: Bearer <BEATAPI_API_KEY>' \
> --header 'Content-Type: application/json' \
> --data '{
> "model": "wan-3.0-prime",
> "prompt": "The camera orbits the product as the light sweeps across it.",
> "images": [
> "https://media.beatapi.io/samples/smart-bottle.png"
> ],
> "duration": 20,
> "resolution": "1080p"
>}'

With references

$curl --request POST \
> --url https://api.beatapi.io/v1/videos/tasks \
> --header 'Authorization: Bearer <BEATAPI_API_KEY>' \
> --header 'Content-Type: application/json' \
> --data '{
> "model": "wan-3.0-prime",
> "prompt": "Match the motion of the reference clip and hold the subject for the full take.",
> "reference_videos": [
> "https://media.beatapi.io/inputs/motion.mp4"
> ],
> "duration": 30,
> "aspect_ratio": "9:16",
> "resolution": "480p"
>}'

Response

A successful request returns HTTP 201.

1{
2 "data": {
3 "id": "task_8K2qA",
4 "object": "task",
5 "task_kind": "video",
6 "capability_id": "wan-3.0-prime",
7 "capability_version": null,
8 "media_type": "video",
9 "model": "wan-3.0-prime",
10 "status": "queued",
11 "stage": "queued",
12 "created_at": 1782210000,
13 "updated_at": 1782210000,
14 "completed_at": null,
15 "output": null,
16 "usage": {
17 "credits_reserved": 0.63,
18 "credits_charged": 0.63,
19 "billable_duration_seconds": 5,
20 "credits_settled": 0,
21 "credits_refunded": 0
22 },
23 "request_id": "req_abc123",
24 "error_code": null,
25 "error_message": null
26 }
27}

Errors

StatusMeaning
400Invalid request.
401Missing, invalid, or inactive API key.
402Insufficient USD balance
409Idempotency key conflicts with another request body
429Request rate limit exceeded.