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

# MiniMax H3 2K - Create video

> Generate 2K video with MiniMax H3. Supports text-to-video, image-to-video with an optional first and last frame, and subject reference images (up to 9, mentioned in the prompt as @Image1..@Image9). Keyframes and reference images are mutually exclusive. The response is a task: poll the GET endpoint or supply `webhook_url` to be notified; the finished task carries a time-limited MP4 URL. Reference videos are billed on top of the output duration, capped at 15 seconds.



## OpenAPI

````yaml post /v1/ai/video/minimax-h3-2k
openapi: 3.0.0
info:
  description: >-
    The Magnific API is your gateway to a vast collection of high-quality
    digital resources for your applications and projects. As a leading platform,
    it offers a wide range of graphics, including vectors, photos,
    illustrations, icons, PSD templates, and more, all curated by talented
    designers from around the world.
  title: Magnific API
  version: 1.0.0
servers:
  - description: B2B API Production V1
    url: https://api.magnific.com
security:
  - magnificApiKey: []
paths:
  /v1/ai/video/minimax-h3-2k:
    post:
      tags:
        - video
      summary: MiniMax H3 2K - Create video
      description: >-
        Generate 2K video with MiniMax H3. Supports text-to-video,
        image-to-video with an optional first and last frame, and subject
        reference images (up to 9, mentioned in the prompt as @Image1..@Image9).
        Keyframes and reference images are mutually exclusive. The response is a
        task: poll the GET endpoint or supply `webhook_url` to be notified; the
        finished task carries a time-limited MP4 URL. Reference videos are
        billed on top of the output duration, capped at 15 seconds.
      operationId: create_video_minimax_h3_2k
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/minimax-h3-request'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/task-detail-200-default-response'
        '400':
          $ref: '#/components/responses/400-bad-request'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '500':
          $ref: '#/components/responses/500-internal-server-error'
        '503':
          $ref: '#/components/responses/503-service-unavailable'
components:
  schemas:
    minimax-h3-request:
      properties:
        webhook_url:
          description: >-
            URL to receive a webhook notification when the video generation task
            completes. The webhook payload includes the task ID and status.
          format: uri
          type: string
        prompt:
          description: >-
            Text prompt describing the video to generate. Chinese and English
            are supported. Mention reference images as @Image1, @Image2, ...
            matching their 1-indexed array order. For best instruction following
            keep it under roughly 500 Chinese characters or 1,000 English words.
          example: A cinematic shot of a cat walking through a neon-lit alley at night
          maxLength: 7000
          minLength: 1
          type: string
        image:
          description: >-
            Optional image to use as the first frame for image-to-video
            generation. Accepts a publicly accessible URL or a base64-encoded
            image. Mutually exclusive with `reference_images`.
          format: byte
          type: string
        image_end:
          description: >-
            Optional image to use as the last frame for image-to-video
            generation. Requires `image`: the provider rejects a last frame with
            no first frame. Together they generate a transition video between
            the two. Mutually exclusive with `reference_images`. Accepts a
            publicly accessible URL or a base64-encoded image.
          format: byte
          type: string
        reference_images:
          description: >-
            Up to 9 reference images for reference-to-video generation. Each
            item is a publicly accessible URL or a base64-encoded image.
            Reference them in the prompt using @Image1, @Image2, ... @Image9
            (1-indexed to the array order). Each image must be JPG, JPEG, PNG,
            WEBP, HEIC or HEIF, no larger than 30 MB, 256 to 5760 px per side,
            with an aspect ratio from 0.4 to 2.5. Mutually exclusive with
            `image` and `image_end`.
          example:
            - https://example.com/reference-1.jpg
          items:
            format: byte
            type: string
          maxItems: 9
          type: array
        reference_videos:
          description: >-
            Up to 3 reference videos. Each item must be a publicly accessible
            HTTPS URL or a video upload file_id (`upl_vid_...`). Reference them
            in the prompt using @Video1, @Video2 or @Video3. Each video must be
            MP4 or MOV (H.264 or H.265), 2 to 15 seconds, 23.976 to 60 fps, no
            larger than 50 MB, 256 to 5760 px per side, with an aspect ratio
            from 0.4 to 2.5, and their combined duration must not exceed 15
            seconds. Mutually exclusive with `image` and `image_end`. **These
            are billed**: their combined duration is added to the output
            duration, capped at 15 seconds.
          example:
            - https://example.com/reference-1.mp4
          items:
            type: string
          maxItems: 3
          type: array
        reference_audios:
          description: >-
            Up to 3 reference audios. Each item must be a publicly accessible
            HTTPS URL — unlike `reference_videos`, this field does not take
            upload file_ids. Reference them in the prompt using @Audio1, @Audio2
            or @Audio3. Each audio must be WAV or MP3, 2 to 15 seconds and no
            larger than 15 MB, and their combined duration must not exceed 15
            seconds. Audio cannot be the only reference: at least one
            `reference_images` or `reference_videos` entry is required alongside
            it. Mutually exclusive with `image` and `image_end`. Adds nothing to
            the price.
          example:
            - https://example.com/reference-voice.mp3
          items:
            format: uri
            type: string
          maxItems: 3
          type: array
        duration:
          default: 5
          description: >-
            Video duration in seconds. Any integer from 4 to 15. H3 accepts
            4-second clips, unlike H3 Max, whose floor is 5.
          example: 5
          maximum: 15
          minimum: 4
          type: integer
        aspect_ratio:
          default: widescreen_16_9
          description: >
            Output video aspect ratio. Available options:

            - `adaptive`: infer the ratio from the reference images

            - `film_horizontal_21_9`: Ultra-wide cinematic (21:9)

            - `widescreen_16_9`: Standard widescreen (16:9)

            - `classic_4_3`: Classic TV format (4:3)

            - `square_1_1`: Square format (1:1)

            - `traditional_3_4`: Portrait classic (3:4)

            - `social_story_9_16`: Vertical/social media story (9:16)


            **`adaptive` needs something to adapt to.** It only means anything
            when the request carries `reference_images`; on a text-only request
            there is nothing to infer from and it falls back to
            `widescreen_16_9`.


            **Note:** ignored when `image` or `image_end` is supplied — in
            keyframe mode the output always follows the aspect ratio of the
            supplied image.
          enum:
            - adaptive
            - film_horizontal_21_9
            - widescreen_16_9
            - classic_4_3
            - square_1_1
            - traditional_3_4
            - social_story_9_16
          type: string
        aigc_watermark:
          default: false
          description: >-
            Whether the provider stamps a visible AI-generated-content watermark
            on the output video.
          type: boolean
      required:
        - prompt
      type: object
    inline_object_4:
      example:
        data:
          generated:
            - https://openapi-generator.tech
            - https://openapi-generator.tech
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: CREATED
      properties:
        data:
          $ref: '#/components/schemas/task-detail_1'
      required:
        - data
      type: object
    inline_object:
      example:
        message: message
      properties:
        message:
          type: string
      type: object
    inline_object_1:
      properties:
        problem:
          $ref: '#/components/schemas/inline_object_1_problem'
      type: object
    inline_object_2:
      example:
        message: Internal Server Error
      properties:
        message:
          example: Internal Server Error
          type: string
      type: object
    inline_object_3:
      example:
        message: Service Unavailable. Please try again later.
      properties:
        message:
          example: Service Unavailable. Please try again later.
          type: string
      type: object
    task-detail_1:
      allOf:
        - $ref: '#/components/schemas/task'
        - properties:
            generated:
              items:
                description: URL of the generated image
                format: uri
                type: string
              type: array
          required:
            - generated
          type: object
      example:
        generated:
          - https://openapi-generator.tech
          - https://openapi-generator.tech
        task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        status: CREATED
    inline_object_1_problem:
      properties:
        message:
          example: Validation error
          type: string
        invalid_params:
          items:
            $ref: '#/components/schemas/inline_object_1_problem_invalid_params_inner'
          type: array
      required:
        - invalid_params
        - message
      type: object
    task:
      example:
        task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        status: CREATED
      properties:
        task_id:
          description: Task identifier
          format: uuid
          type: string
        status:
          description: Task status
          enum:
            - CREATED
            - IN_PROGRESS
            - COMPLETED
            - FAILED
          type: string
      required:
        - status
        - task_id
      type: object
    inline_object_1_problem_invalid_params_inner:
      properties:
        name:
          description: Name of the invalid parameter.
          example: page
          type: string
        field:
          description: Field of the invalid parameter. Mirrors `name`.
          example: page
          type: string
        reason:
          example: Parameter 'page' must be greater than 0
          type: string
      required:
        - field
        - name
        - reason
      type: object
  responses:
    task-detail-200-default-response:
      content:
        application/json:
          examples:
            success - created task:
              $ref: '#/components/examples/200-task-created'
            success - in progress task:
              $ref: '#/components/examples/200-task-in-progress'
            success - completed task:
              $ref: '#/components/examples/200-task-completed'
            success - failed task:
              $ref: '#/components/examples/200-task-failed'
          schema:
            $ref: '#/components/schemas/inline_object_4'
      description: OK - The task exists and the status is returned
    400-bad-request:
      content:
        application/json:
          examples:
            invalid_page:
              summary: Parameter 'page' is not valid
              value:
                message: Parameter 'page' must be greater than 0
            invalid_query:
              summary: Parameter 'query' is not valid
              value:
                message: Parameter 'query' must not be empty
            invalid_filter:
              summary: Parameter 'filter' is not valid
              value:
                message: Parameter 'filter' is not valid
            generic_bad_request:
              summary: Bad Request
              value:
                message: Parameter ':attribute' is not valid
          schema:
            $ref: '#/components/schemas/inline_object'
        application/problem+json:
          examples:
            invalid_page:
              summary: Parameter 'page' is not valid
              value:
                message: Validation error
                invalid_params:
                  - field: page
                    reason: Parameter 'page' must be greater than 0
                  - field: per_page
                    reason: Parameter 'per_page' must be greater than 0
          schema:
            $ref: '#/components/schemas/inline_object_1'
      description: >-
        Bad Request - The server could not understand the request due to invalid
        syntax.
    401-unauthorized:
      content:
        application/json:
          examples:
            invalid_api_key:
              summary: API key is not valid
              value:
                message: Invalid API key
            missing_api_key:
              summary: API key is not provided
              value:
                message: Missing API key
          schema:
            $ref: '#/components/schemas/inline_object'
      description: >-
        Unauthorized - The client must authenticate itself to get the requested
        response.
    500-internal-server-error:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/inline_object_2'
      description: >-
        Internal Server Error - The server has encountered a situation it
        doesn't know how to handle.
    503-service-unavailable:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/inline_object_3'
      description: Service Unavailable
  examples:
    200-task-created:
      summary: Success - Task created
      value:
        data:
          generated: []
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: CREATED
    200-task-in-progress:
      summary: Success - Task in progress
      value:
        data:
          generated: []
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: IN_PROGRESS
    200-task-completed:
      summary: Success - Task completed
      value:
        data:
          generated:
            - https://ai-statics.freepik.com/completed_task_image.jpg
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: COMPLETED
    200-task-failed:
      summary: Success - Task failed
      value:
        data:
          generated: []
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: FAILED
  securitySchemes:
    magnificApiKey:
      description: >
        Your Magnific API key. Required for authentication. [Learn how to obtain
        an API key](https://docs.magnific.com/quickstart)
      in: header
      name: x-magnific-api-key
      type: apiKey

````

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