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

# Create video task (Ark-compatible)

> Create an asynchronous video generation task through the Volcano Ark-compatible endpoint. One model name covers text-to-video, image-to-video, and omni reference generation.

This endpoint speaks the Volcano Ark (火山方舟) video task dialect. Code written against `ark.cn-beijing.volces.com` works as-is: point the base URL at `https://api.apipod.ai/api/v3`, swap in an APIPod API key, and keep the request body unchanged. Authentication uses the same `Authorization: Bearer <key>` header as Ark.

## One model name, every scenario

Unlike the Ark console, you do not pick separate endpoint IDs per capability. All-in-one model IDs such as `seedance-2.5` and `seedance-2.0-fast` cover every scenario: the task type is inferred from the `content` array — text only is text-to-video, 1–2 frame images are image-to-video, and reference images, videos, or audios are omni reference generation. The three scenarios are mutually exclusive; mixing frame images with reference media is rejected with a 400 error. Un-roled images are frames, so more than two un-roled images are treated as reference images.

## Model names

The `model` field accepts all of the following, case-insensitively:

| Style                                        | Examples                                                                                                                              |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| All-in-one family IDs                        | `seedance-2.5`, `seedance-2.0`, `seedance-2.0-fast`, `seedance-2.0-mini` — one model, scenario inferred from `content`                |
| Volcano native names with a trailing version | `doubao-seedance-2-5-260128`, `doubao-seedance-2-0-fast-260128`, `doubao-seedance-1-5-pro-251215` — normalized to the matching family |
| Scenario-suffixed IDs                        | `seedance-2.5-i2v` — the scenario is pinned by the model itself                                                                       |

## Parameters

Resolution, ratio, duration, seed, generate\_audio, camera\_fixed, watermark, return\_last\_frame, and `tools: [{"type": "web_search"}]` are passed through to the model. Supported values depend on the model; unsupported combinations fail validation exactly like the native `/v1/videos/generations` endpoint.

A few Ark parameters are accepted but ignored because the platform does not map them: `service_tier`, `priority`, `execution_expires_after`, `safety_identifier`, `output_format`, `draft`, and `omni_reference_task_type`. The `frames` parameter is rejected with a 400 error — use `duration` instead.

## Callbacks

Set `callback_url` to receive a POST when the task reaches a terminal state. The callback body is a task object identical in shape to the query endpoint response, so the same parsing code handles both. See [Webhooks](/webhooks) for delivery and retry behavior of the native callback format used by other endpoints.

After creating a task, poll [Query video task (Ark-compatible)](/ark-query-video-task) with the returned `id`.


## OpenAPI

````yaml api-reference/openapi/ark-create-video-task.yaml POST /api/v3/contents/generations/tasks
openapi: 3.1.0
info:
  title: Create Video Task API (Ark-compatible)
  version: 1.0.0
  description: >-
    Volcano Ark-compatible endpoint for creating an asynchronous video
    generation task. Point Ark SDKs and clients at this base URL and keep the
    same request body you would send to ark.cn-beijing.volces.com. One model
    name covers every scenario: text-to-video, image-to-video (first frame or
    first and last frame), and omni reference generation are inferred from the
    content array.
servers:
  - url: https://api.apipod.ai
    description: Production
security: []
paths:
  /api/v3/contents/generations/tasks:
    post:
      tags:
        - Video tasks
      summary: Create video generation task
      operationId: post-ark-create-video-task
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                model:
                  type: string
                  description: >-
                    Model name. Accepts APIPod public names (seedance-2.5,
                    seedance-2.0, seedance-2.0-fast, seedance-2.0-mini, and lite
                    variants), Volcano native names with a trailing version
                    (doubao-seedance-2-5-260128), and names that already carry a
                    scenario suffix (seedance-2.5-i2v).
                  example: seedance-2.5
                content:
                  type: array
                  description: >-
                    Input content list. Text is the prompt. Images without a
                    role, or with role first_frame/last_frame (max 2), drive
                    image-to-video. Images with role reference_image, videos,
                    and audios drive omni reference generation. Scenarios are
                    mutually exclusive and cannot be mixed.
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - text
                          - image_url
                          - video_url
                          - audio_url
                        description: Content item type.
                      text:
                        type: string
                        description: Text prompt, for type text.
                      image_url:
                        type: object
                        properties:
                          url:
                            type: string
                            description: Image URL or data URL.
                        description: Image object, for type image_url.
                      video_url:
                        type: object
                        properties:
                          url:
                            type: string
                            description: Reference video URL.
                        description: Video object, for type video_url.
                      audio_url:
                        type: object
                        properties:
                          url:
                            type: string
                            description: Reference audio URL.
                        description: Audio object, for type audio_url.
                      role:
                        type: string
                        enum:
                          - first_frame
                          - last_frame
                          - reference_image
                          - reference_video
                          - reference_audio
                        description: >-
                          Role of the media item. Un-roled images are treated as
                          first/last frames.
                  example:
                    - type: text
                      text: A cat yawning at the camera
                    - type: image_url
                      image_url:
                        url: https://example.com/first.png
                      role: first_frame
                resolution:
                  type: string
                  enum:
                    - 480p
                    - 720p
                    - 1080p
                    - 4k
                  description: Video resolution. Supported values depend on the model.
                ratio:
                  type: string
                  enum:
                    - '16:9'
                    - '4:3'
                    - '1:1'
                    - '3:4'
                    - '9:16'
                    - '21:9'
                    - adaptive
                  description: Aspect ratio of the output video.
                duration:
                  type: integer
                  description: >-
                    Video duration in seconds. Use -1 for smart selection where
                    the model supports it.
                seed:
                  type: integer
                  description: Random seed. Supported by a subset of models.
                generate_audio:
                  type: boolean
                  description: >-
                    Whether to generate synchronized audio. Supported by a
                    subset of models.
                camera_fixed:
                  type: boolean
                  description: Whether to fix the camera. Supported by a subset of models.
                watermark:
                  type: boolean
                  description: >-
                    Whether to render an AI-generated watermark. Supported by a
                    subset of models.
                return_last_frame:
                  type: boolean
                  description: Whether to also return the last frame as an image.
                callback_url:
                  type: string
                  description: >-
                    Webhook URL. On terminal states APIPod POSTs a task object
                    identical in shape to the query endpoint response.
                tools:
                  type: array
                  description: >-
                    Tool configuration. Only web_search is recognized, for
                    models that support it.
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - web_search
                        description: Tool type.
              required:
                - model
                - content
            example:
              model: seedance-2.5
              content:
                - type: text
                  text: A cat yawning at the camera
              resolution: 720p
              ratio: '16:9'
              duration: 5
      responses:
        '200':
          description: Task created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: >-
                      Asynchronous task ID. Poll the query endpoint with this
                      value.
                  model:
                    type: string
                    description: Public model family name used for this task.
                required:
                  - id
                  - model
              example:
                id: 0f4c9f6e-1111-4c1d-8c2f-2b7b9a1c4d55
                model: seedance-2.5
        '400':
          description: >-
            Invalid request, for example an unsupported frames parameter or
            mixed content scenarios.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Ark-style error code.
                      message:
                        type: string
                        description: Client-safe error message.
        '401':
          description: Authentication failed.
        '402':
          description: Insufficient quota.
        '404':
          description: Model not found.
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: APIPod API key
      description: Use your APIPod API key as a Bearer token in the Authorization header.

````