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

# Flux 3 Max

> Create videos from text, starting and ending images, or positioned keyframes, with optional audio.

<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 response result through the unified [Query Task Status](/api-manual/task-management/status) endpoint.
</Tip>

Flux 3 Max creates videos from a text description, animates starting and ending images, or connects images placed on a timeline. Describe the desired scene, motion, camera behavior, and audio in the prompt.

## Models

* **flux-3-max/text-to-video** — Video generation from text
* **flux-3-max/image-to-video** — Video generation from a starting image and an optional ending image
* **flux-3-max/keyframes-to-video** — Video generation from positioned keyframes

## Features

* Generate 5–20 seconds of video at 720p or 1080p.
* Generate audio alongside the video or disable it with `sound: false`.
* Guide transitions with a starting and ending image or up to 10 positioned keyframes.

## Input modes

| Model | Required media input |
| - | - |
| `flux-3-max/text-to-video` | None |
| `flux-3-max/image-to-video` | 1–2 ordered URLs in `image_urls` |
| `flux-3-max/keyframes-to-video` | 1–10 objects in `keyframes` |

Text mode accepts no media fields. Image mode accepts `image_urls` only, with the starting image first and the optional ending image second. Keyframe mode accepts `keyframes` only.

## Required parameters

* `prompt` (string): Non-empty description of the video, including motion, camera behavior, and desired audio.
* `image_urls` (array of strings): Required for image mode only. Supply one starting image URL, optionally followed by one ending image URL.
* `keyframes` (array of objects): Required for keyframe mode only. Supply 1–10 objects containing `image_url` and `frame_index`.

## Optional parameters

* `duration` (integer): Output duration from 5 through 20 seconds. Defaults to 5.
* `resolution` (string): `720p` (default) or `1080p`.
* `aspect_ratio` (string): `auto` (default), `21:9`, `2:1`, `16:9`, `4:3`, `1:1`, `3:4`, or `9:16`.
* `sound` (boolean): Generate audio. Defaults to `true`.

## Examples

The OpenAPI examples cover text generation, a starting image, starting and ending images, and positioned keyframes.

For a transition between two images, select `flux-3-max/image-to-video` and supply both URLs in `image_urls` in starting-frame then ending-frame order.

For positioned images, select `flux-3-max/keyframes-to-video`. Set each `frame_index` on a 24 fps timeline. For a 5-second video, positions can range from 0 through 120, inclusive.

## Notes

Image URLs must be publicly accessible HTTP(S) URLs for PNG, JPEG, or WebP images. Each keyframe position must be unique and cannot exceed `duration × 24`.

With `aspect_ratio: "auto"`, text mode uses `16:9`; image and keyframe modes follow the first image. Keep media fields inside `input` and `callback_url` at the request's top level.


## OpenAPI

````yaml api-manual/video-series/flux-3-max.json POST /api/generate/submit
openapi: 3.0.0
info:
  title: PoYo AI - Flux 3 Max API
  description: >-
    Create videos from text, starting and ending images, or positioned
    keyframes, with optional generated audio.
  version: 1.0.0
servers:
  - url: https://api.poyo.ai
    description: Production server
security:
  - BearerAuth: []
paths:
  /api/generate/submit:
    post:
      tags:
        - Flux 3 Max
      summary: Submit a Flux 3 Max task
      operationId: submitFlux3MaxTask
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitRequest'
            examples:
              text-to-video:
                summary: Generate from text
                value:
                  model: flux-3-max/text-to-video
                  input:
                    prompt: A red panda walks through a sunlit forest
                    duration: 5
                    resolution: 720p
              image-to-video:
                summary: Animate a starting image
                value:
                  model: flux-3-max/image-to-video
                  input:
                    prompt: The camera slowly moves closer
                    image_urls:
                      - https://example.com/start.png
              first-last-frame:
                summary: Animate between starting and ending images
                value:
                  model: flux-3-max/image-to-video
                  input:
                    prompt: Transition smoothly from sunrise to sunset
                    image_urls:
                      - https://example.com/start.png
                      - https://example.com/end.png
                    duration: 8
                    sound: false
              keyframes-to-video:
                summary: Animate positioned keyframes
                value:
                  model: flux-3-max/keyframes-to-video
                  input:
                    prompt: Move smoothly through both scenes
                    duration: 5
                    keyframes:
                      - image_url: https://example.com/frame-1.png
                        frame_index: 0
                      - image_url: https://example.com/frame-2.png
                        frame_index: 120
      responses:
        '200':
          description: Task submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    SubmitRequest:
      type: object
      required:
        - model
        - input
      additionalProperties: false
      properties:
        model:
          type: string
          enum:
            - flux-3-max/text-to-video
            - flux-3-max/image-to-video
            - flux-3-max/keyframes-to-video
          description: Public model identifier.
        callback_url:
          type: string
          format: uri
          description: Webhook URL for finished or failed task notifications.
        input:
          type: object
          required:
            - prompt
          additionalProperties: false
          properties:
            prompt:
              type: string
              minLength: 1
              pattern: \S
              description: Describe the scene, motion, camera behavior, and desired audio.
            image_urls:
              type: array
              minItems: 1
              maxItems: 2
              items:
                type: string
                format: uri
                pattern: ^https?://\S+$
              description: >-
                Required for flux-3-max/image-to-video only. Supply one starting
                image and an optional ending image, in this order. Do not
                combine with keyframes.
            keyframes:
              type: array
              minItems: 1
              maxItems: 10
              items:
                $ref: '#/components/schemas/Keyframe'
              description: >-
                Required for flux-3-max/keyframes-to-video only. Supply 1-10
                images with unique frame_index values from 0 through duration *
                24. Do not combine with image_urls.
            duration:
              type: integer
              minimum: 5
              maximum: 20
              default: 5
              description: Output duration in seconds.
            resolution:
              type: string
              enum:
                - 720p
                - 1080p
              default: 720p
              description: Output video resolution.
            aspect_ratio:
              type: string
              enum:
                - auto
                - '21:9'
                - '2:1'
                - '16:9'
                - '4:3'
                - '1:1'
                - '3:4'
                - '9:16'
              default: auto
              description: >-
                Output aspect ratio. auto uses 16:9 for text input and follows
                the first image for image or keyframe input.
            sound:
              type: boolean
              default: true
              description: Generate audio with the video.
          description: >-
            Parameters for the selected model. Media fields are required only
            for their corresponding mode.
      description: >-
        Create videos from text, starting and ending images, or positioned
        keyframes, with optional generated audio.
      x-poyo-model-requests:
        $ref: '#/components/schemas/ModelRequests'
    SubmitResponse:
      type: object
      required:
        - code
        - data
      properties:
        code:
          type: integer
          enum:
            - 200
          example: 200
        data:
          type: object
          required:
            - task_id
            - status
            - created_time
          properties:
            task_id:
              type: string
              example: task-unified-1792468800-example
            status:
              type: string
              enum:
                - not_started
              example: not_started
            created_time:
              type: string
              format: date-time
              example: '2026-10-20T12:00:00'
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
            - type
          properties:
            message:
              type: string
              example: Invalid request parameters
            type:
              type: string
              example: invalid_request_error
    Keyframe:
      type: object
      required:
        - image_url
        - frame_index
      additionalProperties: false
      properties:
        image_url:
          type: string
          format: uri
          pattern: ^https?://\S+$
          description: Public PNG, JPEG, or WebP image URL.
        frame_index:
          type: integer
          minimum: 0
          description: Unique frame position from 0 through duration * 24, inclusive.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: 'Use Authorization: Bearer PoYo_API_KEY.'

````

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