PixVerse text-to-video API reference

更新时间:
复制 MD 格式

The PixVerse text-to-video model generates a smooth video based on text prompts.

Important

This document applies only to the China (Beijing) region. Use an API key from this region.

Activate the service

  1. Go to the Alibaba Cloud Model Studio console, search for PixVerse, find the PixVerse model card, and click Activate Now.

  2. In the pop-up window, confirm the activation and authorization.

Scope

To ensure successful calls, make sure that the model, Endpoint URL, and API key all belong to the same region. Cross-region calls will fail.

HTTP calls

Because text-to-video tasks take a long time (typically 1 to 5 minutes), the API uses asynchronous calls. The entire process involves two core steps: Create a task -> Poll for the result. The steps are as follows:

Step 1: Create a task to get a task ID

Beijing region: POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Note
  • After the task is created, use the returned task_id to query the result. The task_id is valid for 24 hours. Do not create duplicate tasks. Instead, use polling to retrieve the result.

  • For guidance for beginners, see Postman.

Request parameters

Text-to-video

Supported models: pixverse/pixverse-c1-t2v, pixverse/pixverse-v6-t2v, pixverse/pixverse-v5.6-t2v.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "pixverse/pixverse-c1-t2v",
    "input": {
        "prompt": "In a rainy cyber city, a raccoon walks on a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of the frame."
    },
    "parameters": {
        "size": "1280*720",
        "duration": 5,
        "watermark": true
    }
}'

Text-to-video (multi-shot)

pixverse-c1

Supported model: pixverse/pixverse-c1-t2v.

Describe the multi-shot scene in the prompt. Setting the shot_type parameter is not supported.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "pixverse/pixverse-c1-t2v",
    "input": {
        "prompt": "Shot 1: A model walks steadily towards the camera. Shot 2: A quick cut to a medium shot, showing the waistline cut and the fresh texture of the blue and white checkered cotton fabric. Shot 3: A long shot captures the natural movement of the skirt blowing in the breeze, with a clean and bright picture."
    },
    "parameters": {
        "size": "1280*720",
        "duration": 5,
        "audio": true,
        "watermark": true
    }
}'

pixverse-v6

Supported model: pixverse/pixverse-v6-t2v.

Describe the multi-shot scene in the prompt and set shot_type to multi to generate a multi-shot video with audio.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "pixverse/pixverse-v6-t2v",
    "input": {
        "prompt": "Shot 1: A model walks steadily towards the camera. Shot 2: A quick cut to a medium shot, showing the waistline cut and the fresh texture of the blue and white checkered cotton fabric. Shot 3: A long shot captures the natural movement of the skirt blowing in the breeze, with a clean and bright picture."
    },
    "parameters": {
        "size": "1280*720",
        "duration": 5,
        "audio": true,
        "shot_type": "multi",
        "watermark": true
    }
}'
Headers

Content-Type string (Required)

The content type of the request. Must be application/json.

Authorization string (Required)

Authenticates the request with a Model Studio API key. Example: Bearer sk-xxxx.

X-DashScope-Async string (Required)

Enables asynchronous processing. HTTP requests support only asynchronous calls. Must be enable.

Important

If this request header is missing, the error "current user api does not support synchronous calls" is returned.

Request Body

model string (Required)

The model name. For model output specifications, see Model List.

Valid values:

  • pixverse/pixverse-c1-t2v

  • pixverse/pixverse-v6-t2v

  • pixverse/pixverse-v5.6-t2v

Model selection

  • For dynamic scenes such as fights, special spell effects, and high-speed motion, we recommend using c1.

  • For general scenarios, we recommend using v6. We recommend upgrading directly from v5.6 to v6.

input object (Required)

The basic input information, such as the prompt.

Properties

prompt string (Required)

The text prompt. It describes the desired elements and visual features in the generated video.

Both Chinese and English are supported. Each Chinese character or letter counts as one character. The character encoding is UTF-8. Any excess characters are automatically truncated.

  • pixverse/pixverse-c1-t2v: Up to 5,000 characters.

  • pixverse/pixverse-v6-t2v: Up to 5,000 characters.

  • pixverse/pixverse-v5.6-t2v: Up to 2,048 characters.

parameters object (Required)

The video generation parameters, such as the video resolution, duration, and whether to generate audio.

Properties

size string (Required)

The resolution of the generated video, in the format of width*height in pixels.

Important
  • The size parameter directly affects the cost. Before making a call, confirm the model pricing.

  • If you use the pixverse/pixverse-v5.6-t2v model and set size to 1808*1808 and duration to 8, the actual output video resolution will be 1440*1440.

The following tables list the valid values for different resolution tiers and aspect ratios.

pixverse/pixverse-c1-t2v and pixverse/pixverse-v6-t2v models

Resolution tier

Aspect ratio

size value (width*height)

360P

16:9

640*360

4:3

640*480

1:1

640*640

3:4

480*640

9:16

360*640

3:2

640*432

2:3

432*640

21:9

640*288

540P

16:9

1024*576

4:3

1024*768

1:1

1024*1024

3:4

768*1024

9:16

576*1024

3:2

1024*688

2:3

688*1024

21:9

1024*448

720P

16:9

1280*720

4:3

1108*832

1:1

960*960

3:4

832*1108

9:16

720*1280

3:2

1200*800

2:3

800*1200

21:9

1280*560

1080P

16:9

1920*1080

4:3

1664*1248

1:1

1440*1440

3:4

1248*1664

9:16

1080*1920

3:2

1776*1184

2:3

1184*1776

21:9

1920*832

pixverse/pixverse-v5.6-t2v model

Resolution tier

Aspect ratio

size value (width*height)

360P

16:9

640*360

4:3

640*480

1:1

640*640

3:4

480*640

9:16

360*640

540P

16:9

1024*576

4:3

1024*768

1:1

1024*1024

3:4

768*1024

9:16

576*1024

720P

16:9

1280*720

4:3

1280*960

1:1

1280*1280

3:4

960*1280

9:16

720*1280

1080P

16:9

1920*1080

4:3

1920*1440

1:1

1808*1808

3:4

1440*1920

9:16

1080*1920

duration integer (Required)

Important

The duration parameter directly affects the cost, which is billed per second. Before making a call, confirm the model pricing.

The duration of the generated video, in seconds.

  • pixverse/pixverse-c1-t2v: An integer from 1 to 15.

  • pixverse/pixverse-v6-t2v: An integer from 1 to 15.

  • pixverse/pixverse-v5.6-t2v:

    • When size is any resolution corresponding to 360P, 540P, or 720P: 5, 8, or 10.

    • When size is any resolution corresponding to 1080P: 5 or 8.

audio boolean (Optional)

Important

The audio parameter directly affects the cost. Before making a call, confirm the model pricing.

Specifies whether to generate a video with audio. If enabled, the model automatically generates matching background music or sound effects based on the video content.

  • false: Default value. Outputs a silent video.

  • true: Outputs a video with audio.

watermark boolean (Optional)

Specifies whether to add a watermark. The watermark is located in the lower-right corner of the video and displays the text "AI Generated".

  • false: Default value. No watermark is added.

  • true: A watermark is added.

shot_type string (Optional)

Supported model: pixverse/pixverse-v6-t2v.

Specifies the shot type of the generated video. This controls whether the video consists of a single continuous shot or multiple shots.

  • single: Default value. Generates a single-shot video.

  • multi: Multi-shot. The system intelligently segments the shots.

Usage suggestion: The prompt parameter has a higher priority than shot_type. For best results, we recommend that this parameter setting be consistent with the prompt description.

  • To consistently output a single-shot video: Set shot_type="single" and describe a single-shot scene in the prompt.

  • To consistently output a multi-shot video: Set shot_type="multi" and describe a multi-shot scene in the prompt.

seed integer (Optional)

The random number seed must be an integer in the range [0, 2147483647].

If not specified, a random seed is generated. A fixed seed improves reproducibility.

Because model generation is probabilistic, the same seed does not guarantee identical results.

Response parameters

Successful response

Save the task_id to query the task status and result.

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

Error response

Task creation failed. See Error messages.

{
    "code": "InvalidApiKey",
    "message": "No API-key provided.",
    "request_id": "7438d53d-6eb8-4596-8835-xxxxxx"
}

output object

The output of the task.

Properties

task_id string

The task ID. Valid for queries for 24 hours.

task_status string

The status of the task.

Enumeration values

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: The task does not exist or its status is unknown.

request_id string

Unique request identifier for tracing and troubleshooting.

code string

Error code. Returned only for failed requests. See Error messages.

message string

Detailed error message. Returned only for failed requests. See Error messages.

Step 2: Query the result by task ID

Beijing region: GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

Note
  • Polling suggestion: Video generation takes several minutes. We recommend using a polling mechanism with a reasonable query interval (for example, 15 seconds) to obtain the result.

  • Task status flow: PENDING (in queue) -> RUNNING (processing) -> SUCCEEDED (successful) / FAILED (failed).

  • task_id validity: 24 hours. After this period, you cannot query the result, and the API will return the task status as UNKNOWN.

  • RPS limit: The default records per second (RPS) for the query API is 20. For higher frequency queries or event notifications, we recommend configuring an asynchronous task callback.

  • More operations: For batch queries, canceling tasks, and other operations, see Manage asynchronous tasks.

Request parameters

Query task result

Replace {task_id} with the task_id value returned by the previous API call. The task_id is valid for queries for 24 hours.

curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Headers

Authorization string (Required)

Authenticates the request with a Model Studio API key. Example: Bearer sk-xxxx.

Path parameters

task_id string (Required)

The ID of the task.

Response parameters

Task successful

{
    "request_id": "19171ea5-9efb-4d35-93a1-xxxxxx",
    "output": {
        "task_id": "7ed706b7-a9a9-4319-820c-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2026-03-20 10:34:41.630",
        "scheduled_time": "2026-03-20 10:34:41.655",
        "end_time": "2026-03-20 10:35:12.725",
        "orig_prompt": "In a rainy cyber city, a raccoon walks along a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of frame.",
        "video_url": "https://media.pixverseai.cn/xxxx.mp4"
    },
    "usage": {
        "duration": 5,
        "shot_type": "single",
        "size": "1280*720",
        "fps": 24,
        "video_count": 1,
        "audio": false,
        "SR": "720"
    }
}

Task failed

When a task fails, task_status is FAILED with an error code and message. See Error messages.

{
    "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-a0c6a421c010",
        "task_status": "FAILED",
        "code": "InvalidParameter",
        "message": "The size does not match xxxxxx"
    }
}

Task query expired

The task_id is valid for 24 hours. After this period, queries return the following error.

{
    "request_id": "a4de7c32-7057-9f82-8581-xxxxxx",
    "output": {
        "task_id": "502a00b1-19d9-4839-a82f-xxxxxx",
        "task_status": "UNKNOWN"
    }
}

output object

The task output information.

Properties

task_id string

The task ID. Valid for queries for 24 hours.

task_status string

The status of the task.

Enumeration values

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: The task does not exist or its status is unknown.

State transitions during polling:

  • PENDING → RUNNING → SUCCEEDED or FAILED.

  • The initial query status is usually PENDING or RUNNING.

  • When the status changes to SUCCEEDED, the response contains the generated video URL.

  • If the status is FAILED, check the error message and retry the task.

submit_time string

The time when the task was submitted. format is YYYY-MM-DD HH:mm:ss.SSS.

scheduled_time string

The time when the task was executed. format is YYYY-MM-DD HH:mm:ss.SSS.

end_time string

The time when the task was completed. format is YYYY-MM-DD HH:mm:ss.SSS.

video_url string

The video URL. This is returned only when task_status is SUCCEEDED.

The video is in MP4 format (H.264 encoding). The video link does not currently expire, but we recommend downloading it for long-term storage.

orig_prompt string

The original input prompt, corresponding to the request parameter prompt.

code string

Error code. Returned only for failed requests. See Error messages.

message string

Detailed error message. Returned only for failed requests. See Error messages.

usage object

Statistics for the output information. Only successful results are counted.

Properties

duration integer

The total duration of the generated video in seconds, used for billing.

size string

The resolution of the generated video.

fps integer

The frame rate of the generated video.

SR string

The resolution tier of the generated video.

audio boolean

Indicates whether the generated video has audio.

video_count integer

The number of generated videos. The value is fixed at 1.

shot_type string

The shot type of the generated video.

request_id string

Unique request identifier for tracing and troubleshooting.

DashScope SDK calls

The parameter names in the SDK are mostly consistent with the HTTP API. The parameter structure is adapted to the features of each programming language.

Because text-to-video tasks take a long time (typically 1 to 5 minutes), the SDK encapsulates the HTTP asynchronous call process and supports both synchronous and asynchronous call methods.

The specific time required depends on the number of tasks in the queue and the service execution status. Please be patient while waiting for the result.

Python SDK calls

Important

Make sure that your DashScope Python SDK version is 1.25.8 or later before running the following code.

An earlier version might trigger errors such as "url error, please check url!". To update the SDK, see Install the SDK.

Beijing region: dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'

Synchronous call

Request example
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os

# The API endpoint for the Beijing region.
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'

# If you have not configured the environment variable, replace the following line with your Model Studio API key. For example: api_key="sk-xxx"
# For more information about how to obtain an API key, see https://help.aliyun.com/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

def sample_sync_call_t2v():
    # Call the synchronous API, which returns the result directly.
    print('please wait...')
    rsp = VideoSynthesis.call(api_key=api_key,
                              model='pixverse/pixverse-c1-t2v',
                              prompt='In a rainy cyber city, a raccoon walks on a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of the frame.',
                              size='1280*720',
                              duration=5,
                              audio=False,
                              watermark=False)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    sample_sync_call_t2v()
Response example
video_url does not expire, but it is not intended for long-term storage. We recommend that you download the video promptly.
{
    "status_code": 200,
    "request_id": "2b68d32e-86c8-4383-8a18-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "ec40bb42-02d4-44d8-bf35-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://media.pixverseai.cn/xxx.mp4",
        "submit_time": "2026-03-20 10:59:01.993",
        "scheduled_time": "2026-03-20 10:59:02.028",
        "end_time": "2026-03-20 11:00:06.322",
        "orig_prompt": "In a rainy cyber city, a raccoon walks along a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of frame."
    },
    "usage": {
        "video_count": 1,
        "video_duration": 0,
        "video_ratio": "",
        "duration": 10,
        "size": "1280x720",
        "fps": 24,
        "audio": false,
        "SR": "720"
    }
}

Asynchronous call

Request example
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os

# The URL for the Beijing region.
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'

# If you have not configured the environment variable, replace the following line with your Model Studio API key, such as api_key="sk-xxx".
# To obtain an API key, see https://help.aliyun.com/en/model-studio/get-api-key.
api_key = os.getenv("DASHSCOPE_API_KEY")

def sample_async_call_t2v():
    # Call the async API. This returns the task information.
    # You can retrieve the task status using the returned task ID.
    rsp = VideoSynthesis.async_call(api_key=api_key,
                                    model='pixverse/pixverse-c1-t2v',
                                    prompt='In a rainy cyber city, a raccoon walks on a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of the frame.',
                                    size='1280*720',
                                    duration=5,
                                    audio=False,
                                    watermark=True)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print("task_id: %s" % rsp.output.task_id)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

    # Retrieve the task information, including the task status.
    status = VideoSynthesis.fetch(task=rsp, api_key=api_key)
    if status.status_code == HTTPStatus.OK:
        print(status.output.task_status)  # Check the task status.
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (status.status_code, status.code, status.message))

    # Wait for the task to complete. This method calls fetch at intervals and checks whether the task is in a finished state.
    rsp = VideoSynthesis.wait(task=rsp, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    sample_async_call_t2v()
Response example

1. Response example for creating a task

{
	"status_code": 200,
	"request_id": "c86ff7ba-8377-917a-90ed-xxxxxx",
	"code": "",
	"message": "",
	"output": {
		"task_id": "721164c6-8619-4a35-a6d9-xxxxxx",
		"task_status": "PENDING",
		"video_url": ""
	},
	"usage": null
}

2. Response example for querying a task result

video_url does not expire but is not intended for long-term storage. You should download the video promptly.
{
    "status_code": 200,
    "request_id": "2b68d32e-86c8-4383-8a18-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "ec40bb42-02d4-44d8-bf35-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://media.pixverseai.cn/xxx.mp4",
        "submit_time": "2026-03-20 10:59:01.993",
        "scheduled_time": "2026-03-20 10:59:02.028",
        "end_time": "2026-03-20 11:00:06.322",
        "orig_prompt": "In a rainy cyber city, a raccoon walks along a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of frame."
    },
    "usage": {
        "video_count": 1,
        "video_duration": 0,
        "video_ratio": "",
        "duration": 10,
        "size": "1280x720",
        "fps": 24,
        "audio": false,
        "SR": "720"
    }
}

Java SDK calls

Important

Make sure that your DashScope Java SDK version is 2.22.6 or later before running the following code.

An earlier version might trigger errors such as "url error, please check url!". To update the SDK, see Install the SDK.

Beijing region: Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";

Synchronous call

Request example
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

public class Text2Video {

    static {
        // The following is the URL for the Beijing region.
        Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";
    }

    // If you have not configured the environment variable, replace the following line with your Model Studio API key, for example: api_key="sk-xxx"
    // To obtain an API key, see: https://help.aliyun.com/en/model-studio/get-api-key
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");



    /**
     * Creates a video synthesis task and waits for the task to complete.
     */
    public static void text2Video() throws ApiException, NoApiKeyException, InputRequiredException {
        VideoSynthesis vs = new VideoSynthesis();
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("pixverse/pixverse-c1-t2v")
                        .prompt("In a rainy cyber city, a raccoon walks on a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of the frame.")
                        .size("1280*720")
                        .duration(5)
                        .audio(true)
                        .watermark(true)
                        .seed(12345)
                        .build();
        System.out.println("Please wait...");
        VideoSynthesisResult result = vs.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            text2Video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Response example
video_url does not expire. It is not intended for long-term storage, so you should download it promptly.
{
    "request_id": "bd1109bd-6c63-4e62-8bb8-xxxxxx",
    "output": {
        "task_id": "72af7c13-dad5-4aaa-b85d-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://media.pixverseai.cn/xxx.mp4",
        "orig_prompt": "In a rainy cyber city, a raccoon walks on a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of the frame.",
        "submit_time": "2026-03-20 11:21:13.227",
        "scheduled_time": "2026-03-20 11:21:13.252",
        "end_time": "2026-03-20 11:21:43.924"
    },
    "usage": {
        "video_count": 1,
        "duration": 5.0,
        "size": "1280*720",
        "input_video_duration": 0.0,
        "output_video_duration": 0.0,
        "SR": "720"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Asynchronous call

Request example
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisListResult;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

public class Text2Video {

    static {
        // The following URL is for the Beijing region.
        Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";
    }

    // If you have not configured the environment variable, replace the following line with your Model Studio API key. For example: public static String apiKey = "sk-xxx";
    // To obtain an API key, see https://help.aliyun.com/en/model-studio/get-api-key
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * Creates a video synthesis task and waits for the task to complete.
     */
    public static void text2Video() throws ApiException, NoApiKeyException, InputRequiredException {
        VideoSynthesis vs = new VideoSynthesis();

        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("pixverse/pixverse-c1-t2v")
                        .prompt("In a rainy cyber city, a raccoon walks on a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of the frame.")
                        .size("1280*720")
                        .duration(5)
                        .audio(true)
                        .watermark(true)
                        .seed(12345)
                        .build();

        // Asynchronous call
        VideoSynthesisResult task = vs.asyncCall(param);
        System.out.println(JsonUtils.toJson(task));
        System.out.println("please wait...");

        // Retrieve the result.
        VideoSynthesisResult result = vs.wait(task, apiKey);
        System.out.println(JsonUtils.toJson(result));
    }

    // Retrieve the task list.
    public static void listTask() throws ApiException, NoApiKeyException {
        VideoSynthesis is = new VideoSynthesis();
        AsyncTaskListParam param = AsyncTaskListParam.builder().build();
        param.setApiKey(apiKey);
        VideoSynthesisListResult result = is.list(param);
        System.out.println(result);
    }

    // Retrieve a single task result.
    public static void fetchTask(String taskId) throws ApiException, NoApiKeyException {
        VideoSynthesis is = new VideoSynthesis();
        // If the DASHSCOPE_API_KEY environment variable is set, the apiKey parameter can be null.
        VideoSynthesisResult result = is.fetch(taskId, apiKey);
        System.out.println(result.getOutput());
        System.out.println(result.getUsage());
    }

    public static void main(String[] args) {
        try {
            text2Video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Response example

1. Response example for creating a task.

{
    "request_id": "9b583f1b-2423-4fac-bb3f-xxxxxx",
    "output": {
        "task_id": "3944b819-1bbb-4da0-a230-xxxxxx",
        "task_status": "PENDING"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

2. Response example for querying a task result

video_url does not expire, but it is not intended for long-term storage. You should download the video promptly.
{
    "request_id": "bd1109bd-6c63-4e62-8bb8-xxxxxx",
    "output": {
        "task_id": "72af7c13-dad5-4aaa-b85d-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://media.pixverseai.cn/xxx.mp4",
        "orig_prompt": "In a rainy cyber city, a raccoon walks on a railing. Suddenly, its eyes glow blue, and it transforms into a high-tech drone, flying quickly out of the frame.",
        "submit_time": "2026-03-20 11:21:13.227",
        "scheduled_time": "2026-03-20 11:21:13.252",
        "end_time": "2026-03-20 11:21:43.924"
    },
    "usage": {
        "video_count": 1,
        "duration": 5.0,
        "size": "1280*720",
        "input_video_duration": 0.0,
        "output_video_duration": 0.0,
        "SR": "720"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Error codes

If the model call fails and returns an error message, see Error messages for resolution.

FAQ

Q: Why can't I use a 10-second duration with 1080P resolution?

A: The pixverse-v5.6-t2v model does not support a 10-second duration at 1080P. We recommend reducing the resolution to 720P, 540P, or 360P, or switching to the pixverse-c1-t2v or pixverse-v6-t2v model.