> ## Documentation Index
> Fetch the complete documentation index at: https://doc.octopusx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Vidu Start and End Frame Video Generation

> Use `POST /vidu/ent/v2/start-end2video` to submit a start-and-end-frame video generation task.

# Vidu Start and End Frame Video Generation

The official Vidu start-and-end-frame video generation API, submitted as `application/json`.

* The route entry is `POST /vidu/ent/v2/start-end2video`.
* Currently submitted as `application/json`.
* Supports start-and-end-frame video generation.
* After a successful submission, the task `task_id` and `status` are returned. Use [Query Task](./query) to poll for results.

## Supported Models

* `viduq3-pro`: Efficiently generates high-quality audio and video content, making videos more vivid, more lifelike, and more immersive
* `viduq2-pro` / `viduq2-turbo`: New models with good results and rich details
* `viduq2-pro-fast`: Lowest price, fast generation
* `viduq1` / `viduq1-classic`: Clear visuals, stable camera movement
* `vidu2.0`: Fast generation

## Method and Path

```http theme={null}
POST /vidu/ent/v2/start-end2video
```

## Request Example

<CodeGroup>
  ```bash theme={null}
  curl -X POST https://octopusx.ai/vidu/ent/v2/start-end2video \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "viduq3-pro",
      "images": [
        "https://example.com/first-frame.png",
        "https://example.com/last-frame.png"
      ],
      "prompt": "Smooth transition",
      "audio": false,
      "is_rec": false,
      "bgm": false,
      "duration": 5,
      "seed": 0,
      "resolution": "720p"
    }'
  ```

  ```python theme={null}
  import requests

  resp = requests.post(
      "https://octopusx.ai/vidu/ent/v2/start-end2video",
      headers={
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json"
      },
      json={
          "model": "viduq3-pro",
          "images": [
              "https://example.com/first-frame.png",
              "https://example.com/last-frame.png"
          ],
          "prompt": "Smooth transition",
          "audio": False,
          "is_rec": False,
          "bgm": False,
          "duration": 5,
          "seed": 0,
          "resolution": "720p"
      },
      timeout=60,
  )
  print(resp.json())
  ```
</CodeGroup>

## Response Example

<ResponseExample>
  ```json 200 theme={null}
  {
    "task_id": "48038932-0ff5-4251-8b4b-7a76c09fd114",
    "status": "processing",
    "created_at": 1774494511
  }
  ```
</ResponseExample>

## Authentication

```http theme={null}
Authorization: Bearer YOUR_API_KEY
```

## Body

<ParamField body="model" type="string" required>
  Model name. Supported: `viduq3-pro`, `viduq2-pro`, `viduq2-turbo`, `viduq2-pro-fast`, `viduq1`, `viduq1-classic`, `vidu2.0`.
</ParamField>

<ParamField body="images" type="array" required>
  Images (first frame + last frame). Two images are supported; the first image is treated as the first frame and the second image as the last frame. **Note 1**: The resolutions of the two input images must be similar; the ratio between the first-frame image resolution and the last-frame image resolution must be between 0.8 and 1.25. **Note 2**: The image ratio must be less than 1:4 or 4:1. **Note 3**: Image Base64 encoding or image URL is supported. **Note 4**: Supported image formats: png, jpeg, jpg, webp. **Note 5**: The image size must not exceed 50M. **Note 6**: The POST body of the HTTP request must not exceed 20MB, and the encoding must include the content type string, for example: `data:image/png;base64,{base64_encode}`.
</ParamField>

<ParamField body="prompt" type="string">
  Text prompt. The text description for video generation. If the `is_rec` recommended prompt parameter is used, the model will ignore the prompt entered in this parameter.
</ParamField>

<ParamField body="audio" type="boolean">
  Direct audio-video output. `true`: outputs a video with dialogue and background sound; `false`: outputs a silent video.
</ParamField>

<ParamField body="voice_id" type="string">
  Voice ID. Determines the voice timbre in the video. When empty, the system will automatically recommend one. Note: does not take effect for q3 models.
</ParamField>

<ParamField body="is_rec" type="boolean">
  Whether to use recommended prompts. `true`: the system automatically recommends prompts; `false`: generates video based on the input prompt.
</ParamField>

<ParamField body="bgm" type="boolean">
  Background music. `true`: the system will automatically select suitable music from the preset BGM library and add it; `false`: no BGM will be added.
</ParamField>

<ParamField body="duration" type="integer">
  Video duration in seconds. `viduq2` series: default 5 seconds, optional 1-10 seconds.
</ParamField>

<ParamField body="seed" type="integer">
  Random seed. If not provided or set to 0, a random number is used; if set manually, the specified seed is used.
</ParamField>

<ParamField body="resolution" type="string">
  Resolution. The default value depends on the model and video duration. `viduq2` (1-10 seconds): default 720p, optional 540p, 720p, 1080p.
</ParamField>

<ParamField body="off_peak" type="boolean">
  Off-peak mode. `true`: generate video during off-peak periods; `false`: generate video immediately.
</ParamField>

<ParamField body="watermark" type="boolean">
  Whether to add a watermark. `true`: add watermark; `false`: do not add watermark.
</ParamField>

<ParamField body="wm_position" type="integer">
  Watermark position. `1`: top-left; `2`: top-right; `3`: bottom-right; `4`: bottom-left.
</ParamField>

<ParamField body="wm_url" type="string">
  Watermark image URL. When not provided, the default watermark is used: "Content generated by AI".
</ParamField>

<ParamField body="payload" type="string">
  Pass-through parameter. No processing is performed; data is transmitted as-is.
</ParamField>

<ParamField body="meta_data" type="string">
  Metadata identifier. A JSON-formatted string, pass-through field.
</ParamField>

## Response

<ResponseField name="task_id" type="string">
  Task ID, used to query the task status.
</ResponseField>

<ResponseField name="status" type="string">
  Task status. Possible values: `processing` (in progress), `failed` (failed), `completed` (completed).
</ResponseField>

<ResponseField name="created_at" type="integer">
  Creation timestamp (Unix timestamp).
</ResponseField>

## Related APIs

* [Vidu Video Overview](./overview)
* [Text to Video](./text2video)
* [Image to Video](./img2video)
* [Reference to Video](./reference2video)
* [Query Task](./query)
