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

# Vidu Q4 Image to Video

> The Vidu Q4 Image to Video API animates one start image into a 3–16 second video at 540p, 720p, 1080p, 2K or 4K, keeping the image's aspect ratio.

> [!TIP]
>
> 1. After submission, a `task_id` will be returned. If you provided a `callback_url`, when the task status becomes `finished` or `failed`, a POST request will be sent to the `callback_url`.
> 2. Regardless of whether `callback_url` is provided, you can retrieve the result through the unified [Query Task Status](https://docs.vidgo.ai/api-manual/task-management/status.md) endpoint.

Vidu Q4 Image to Video animates one still image into a 3–16 second video, from fast 540p drafts up to 4K. The image becomes the first frame and fixes the framing, so the output keeps the image's aspect ratio. Use it to bring illustrations, product stills or key visuals to life.

Vidu Q4 is ShengShu Technology's video model, released upstream as Vidu Q4 Preview in October 2026. It has no text-to-video mode: every request starts from images. Vidgo exposes two model IDs: [Image to Video](https://docs.vidgo.ai/api-manual/video-series/vidu-q4-image-to-video.md) and [Reference to Video](https://docs.vidgo.ai/api-manual/video-series/vidu-q4-reference-to-video.md).

## Models

* **vidu/q4/image-to-video** — Image-to-video with Vidu Q4 from one start frame, 3–16 seconds, 540p to 4K.

## Features

* Image-to-video from a single start frame.
* Optional prompt to direct motion and camera movement.
* Integer durations from 3 to 16 seconds.
* Five resolutions: `540p`, `720p`, `1080p`, `2k` and `4k`.
* Aspect ratio follows the input image.

## Required parameters

* `image_urls` (string\[]): Exactly one public HTTP(S) image URL. It is used as the first frame.

## Optional parameters

* `prompt` (string): What moves, how the camera moves and the mood. Up to 5,000 characters. Default empty.
* `duration` (integer): Output length in seconds, `3`–`16`. Default `5`.
* `resolution` (string): `540p`, `720p`, `1080p`, `2k` or `4k` (case-insensitive). Default `720p`.
* `enable_safety_checker` (boolean): Turn the upstream safety checker on or off.

## Resolution

| `resolution` | Use it for |
| - | - |
| `540p` | Fast, low-cost drafts |
| `720p` | Default; social and web clips |
| `1080p` | Full HD delivery |
| `2k` | High-resolution masters |
| `4k` | Hero shots and large screens |

The resolution sets the per-second billing rate.

## Output

The finished task returns one MP4 video in the `files` array of [Query Task Status](https://docs.vidgo.ai/api-manual/task-management/status.md) and the callback payload.

## Examples

* **5-second 720p animation**: one illustration plus a short motion prompt at the default settings.
* **10-second 4K hero shot with callback**: a key visual animated at `4k` for large screens, with a `callback_url`.

## Notes

* Image-to-video does not generate audio on this ID and does not take `aspect_ratio`, `generate_audio`, `reference_image_urls` or `reference_audio_urls`; sending them returns 400. For multi-image references, voice references or native audio, use [Vidu Q4 Reference to Video](https://docs.vidgo.ai/api-manual/video-series/vidu-q4-reference-to-video.md).
* Vidu Q4 has no text-to-video mode. Every request needs an image.
* `model` and `callback_url` belong at the request root, not inside `input`.
* Credits are reserved at submission and depend on `resolution` and `duration` (per output second). Reference images, reference audio and `generate_audio` do not change the rate. A failed task is refunded in full. See the [pricing page](https://vidgo.ai/apis/api-pricing) for current rates.


## OpenAPI

````yaml api-manual/video-series/vidu-q4-image-to-video.json POST /api/generate/submit
openapi: 3.0.0
info:
  title: Vidgo API - Vidu Q4 Image to Video
  description: >-
    The Vidu Q4 Image to Video API animates one start image into a 3–16 second
    video at 540p, 720p, 1080p, 2K or 4K, keeping the image's aspect ratio.
  version: 1.0.0
servers:
  - url: https://api.vidgo.ai
    description: Production server
security:
  - BearerAuth: []
paths:
  /api/generate/submit:
    post:
      tags:
        - Video Series
      summary: Vidu Q4 Image to Video
      description: >-
        Send only the `input` fields listed for this model. Any other field,
        including `aspect_ratio`, `generate_audio` or the reference fields,
        returns 400. The image URL must be a public HTTP(S) URL without embedded
        credentials.
      operationId: submit_vidu_q4_image_to_video
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model
                - input
              properties:
                model:
                  type: string
                  description: Model ID. Use `vidu/q4/image-to-video`.
                  example: vidu/q4/image-to-video
                callback_url:
                  type: string
                  format: uri
                  nullable: true
                  description: >-
                    Optional public HTTP(S) endpoint that receives a POST when
                    the task becomes `finished` or `failed`. HTTPS is
                    recommended. Omit it, or send `null` or an empty string, to
                    disable callbacks.
                  example: https://your-domain.com/callback
                input:
                  type: object
                  required:
                    - image_urls
                  properties:
                    image_urls:
                      type: array
                      items:
                        type: string
                        format: uri
                      minItems: 1
                      maxItems: 1
                      example:
                        - https://example.com/still.png
                      description: >-
                        Exactly one public HTTP(S) image URL. It becomes the
                        first frame, and the video keeps its aspect ratio.
                    prompt:
                      type: string
                      maxLength: 5000
                      default: ''
                      example: >-
                        The lantern flickers as the girl looks up and snow
                        starts to fall, slow push-in
                      description: >-
                        Optional motion description: what moves, how the camera
                        moves and the mood. Up to 5,000 characters.
                    duration:
                      type: integer
                      minimum: 3
                      maximum: 16
                      default: 5
                      description: >-
                        Output length in seconds (integer, an integer string
                        such as `"5"` is also accepted).
                    resolution:
                      type: string
                      enum:
                        - 540p
                        - 720p
                        - 1080p
                        - 2k
                        - 4k
                      default: 720p
                      description: >-
                        Output resolution (case-insensitive). It sets the
                        billing rate.
                    enable_safety_checker:
                      type: boolean
                      description: >-
                        Turn the upstream safety checker on or off. When
                        omitted, the upstream default applies.
                  additionalProperties: false
                  description: Generation parameters.
            examples:
              basic:
                summary: 5-second 720p animation
                value:
                  model: vidu/q4/image-to-video
                  input:
                    image_urls:
                      - https://example.com/still.png
                    prompt: >-
                      The lantern flickers as the girl looks up and snow starts
                      to fall, slow push-in
                    duration: 5
                    resolution: 720p
              uhd:
                summary: 10-second 4K hero shot with callback
                value:
                  model: vidu/q4/image-to-video
                  callback_url: https://your-domain.com/callback
                  input:
                    image_urls:
                      - https://example.com/key-visual.png
                    prompt: >-
                      Slow aerial orbit around the lighthouse as waves crash
                      below, golden hour
                    duration: 10
                    resolution: 4k
      responses:
        '200':
          description: Task submitted
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - data
                properties:
                  code:
                    type: integer
                    enum:
                      - 200
                    description: HTTP status code.
                  data:
                    type: object
                    required:
                      - task_id
                      - status
                      - created_time
                    properties:
                      task_id:
                        type: string
                        description: >-
                          Task ID. Use it with [Query Task
                          Status](/api-manual/task-management/status).
                      status:
                        type: string
                        enum:
                          - not_started
                        description: Initial task status.
                      created_time:
                        type: string
                        format: date-time
                        description: Time the task was created (ISO 8601).
              example:
                code: 200
                data:
                  task_id: task-unified-1762160000-abc123
                  status: not_started
                  created_time: '2026-11-03T10:30:00'
        '400':
          description: >-
            Invalid input, unsupported field, inaccessible media, or
            insufficient credits
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
                    description: Error message.
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
                    description: Error message.
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
                    description: Error message.
        '404':
          description: Unknown or disabled model
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
                    description: Error message.
        '408':
          description: Request timed out
          content:
            text/plain:
              schema:
                type: string
              example: Request timeout
        '422':
          description: Invalid JSON or non-object request body
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
                    description: Error message.
        '429':
          description: Rate or API key credit limit exceeded
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
                    description: Error message.
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
                    description: Error message.
        '502':
          description: Unable to create the upstream generation task
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
                    description: Error message.
        '503':
          description: The requested model is temporarily unavailable
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
                    description: Error message.
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        All API endpoints require Bearer Token authentication


        Get your API Key:


        Go to **Dashboard → API Key** ([API Key Management
        Page](https://vidgo.ai/apis/dashboard/api-key)) to get your API Key


        Add it to the request header:


        ```

        Authorization: Bearer VIDGO_API_KEY

        ```

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.