GET

/v1/schemas/fal/video/minimax/h3-max/director

kind inputactivity videohash 3ec783fb…extracted Oct 4, 2026version currentsource upstream spec ↗
fieldrecorded source
schemaSource linked above.

upstream-spec

Source trace
f2ce56df5f0cdaed84eab638b82da3105c9cbc0bef933568b8a8db9d1442ad94
{
  "fetchedAt": 1791090004,
  "extractorVersion": "1",
  "verifiedAt": null
}

Request body

0 properties · 0 required · 0 $defs

This schema isn’t a plain object with properties — showing the raw JSON instead.

application/json
{
  "provider": "fal",
  "activity": "video",
  "endpointId": "minimax/h3-max/director",
  "kind": "input",
  "contentHash": "3ec783fb9b9185702c72e2891f0533a21fbf9bd50493702658caf6d583650c1c",
  "specRevision": null,
  "provenance": {
    "sourceUrl": "https://fal.ai/api/apps/fal-ai/minimax-h3-max-director/asyncapi.json",
    "sourceHash": "f2ce56df5f0cdaed84eab638b82da3105c9cbc0bef933568b8a8db9d1442ad94",
    "fetchedAt": 1791090004,
    "extractorVersion": "1",
    "derivation": "upstream-spec",
    "verifiedAt": null
  },
  "createdAt": 1791090004,
  "supersededAt": null,
  "schema": {
    "title": "Client messages",
    "oneOf": [
      {
        "$ref": "#/$defs/MiniMaxH3MaxDirectorClientConfigureMessage"
      },
      {
        "$ref": "#/$defs/MiniMaxH3MaxDirectorClientPingMessage"
      },
      {
        "$ref": "#/$defs/MiniMaxH3MaxDirectorClientPromptMessage"
      },
      {
        "$ref": "#/$defs/MiniMaxH3MaxDirectorClientStopMessage"
      }
    ],
    "$defs": {
      "MiniMaxH3MaxDirectorClientConfigureMessage": {
        "properties": {
          "audio_url": {
            "title": "Target audio",
            "x-fal-ui": {
              "field": "audio",
              "order": 60
            },
            "description": "Optional startup soundtrack. The stream's audio is pinned to this recording from the first chunk as FL2VA target audio, not a Ref2VA reference: every chunk is conditioned on the next window of it (plus the regenerated seam) until it ends, and the source PCM itself is what plays. Live `prompt` messages can replace or queue more audio at any time.",
            "default": null,
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "memory": {
            "x-fal-ui": {
              "advanced": true,
              "order": 70
            },
            "title": "Memory",
            "maximum": 50,
            "default": 12,
            "description": "Number of prior segment prompts retained as context for future prompt expansion.",
            "type": "integer",
            "minimum": 1
          },
          "prompt_version": {
            "x-fal-ui": {
              "hidden": true
            },
            "type": "integer",
            "title": "Prompt Version",
            "minimum": 1
          },
          "script": {
            "default": null,
            "description": "Optional upfront script: beats at whole-second offsets from the first generated video. `prompt` stays the series premise; a beat prompt directs from its offset on. Cannot be combined with `end_image_url` or `audio_url` (place them in the script).",
            "title": "Script",
            "anyOf": [
              {
                "minItems": 1,
                "maxItems": 64,
                "items": {
                  "$ref": "#/$defs/MiniMaxH3MaxDirectorClientScriptBeat"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ]
          },
          "end_image_url": {
            "title": "Last frame",
            "x-fal-ui": {
              "field": "image",
              "order": 50
            },
            "description": "One-shot exact final frame for the first chunk. Director jointly plans that arrival and the following checkpoint continuation.",
            "default": null,
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "prompt": {
            "examples": [
              "A continuous original live-action stream following a group of friends as they explore a new city."
            ],
            "maxLength": 50000,
            "minLength": 1,
            "type": "string",
            "x-fal-ui": {
              "field": "textarea",
              "order": 0
            },
            "title": "Prompt"
          },
          "resolution": {
            "enum": [
              "480p",
              "768p",
              "1080p"
            ],
            "x-fal-ui": {
              "order": 10
            },
            "type": "string",
            "default": "768p",
            "title": "Resolution"
          },
          "seed": {
            "x-fal-ui": {
              "advanced": true,
              "order": 90
            },
            "title": "Seed",
            "default": null,
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "aspect_ratio": {
            "enum": [
              "16:9",
              "9:16",
              "1:1"
            ],
            "x-fal-ui": {
              "order": 20
            },
            "type": "string",
            "default": "16:9",
            "title": "Aspect Ratio"
          },
          "image_url": {
            "title": "First frame",
            "x-fal-ui": {
              "field": "image",
              "order": 30
            },
            "description": "URL of the image to use as the exact first frame. The opening prompt expansion also sees this image, so the first segment's prompt is grounded in it.",
            "default": null,
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "audio_bitrate": {
            "examples": [
              192000
            ],
            "title": "Audio Bitrate",
            "x-fal-ui": {
              "advanced": true,
              "order": 80
            },
            "description": "Session audio target in bits/s: 96000, 128000, or 192000. Explicit values use Opus audio mode on direct WebRTC; LiveKit uses its native mode with the same bitrate target. Null preserves transport defaults (WebRTC: 96000, voip). Immutable; reconnect to compare.",
            "default": null,
            "anyOf": [
              {
                "enum": [
                  96000,
                  128000,
                  192000
                ],
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "const": "configure",
            "x-fal-ui": {
              "hidden": true
            },
            "type": "string",
            "title": "Type"
          },
          "protocol_version": {
            "const": 1,
            "x-fal-ui": {
              "hidden": true
            },
            "type": "integer",
            "default": 1,
            "title": "Protocol Version"
          }
        },
        "required": [
          "type",
          "prompt_version",
          "prompt"
        ],
        "x-fal-order-properties": [
          "type",
          "protocol_version",
          "prompt_version",
          "prompt",
          "aspect_ratio",
          "resolution",
          "memory",
          "image_url",
          "end_image_url",
          "audio_url",
          "audio_bitrate",
          "seed",
          "script"
        ],
        "type": "object",
        "title": "ConfigureMessage",
        "additionalProperties": false
      },
      "MiniMaxH3MaxDirectorClientPingMessage": {
        "properties": {
          "ts": {
            "type": "number",
            "title": "Ts"
          },
          "type": {
            "const": "ping",
            "type": "string",
            "title": "Type"
          }
        },
        "required": [
          "type",
          "ts"
        ],
        "type": "object",
        "title": "PingMessage",
        "additionalProperties": false
      },
      "MiniMaxH3MaxDirectorClientPromptMessage": {
        "properties": {
          "audio_url": {
            "title": "Target audio",
            "x-fal-ui": {
              "field": "audio",
              "order": 30
            },
            "description": "FL2VA target audio for future chunks; this is not a Ref2VA reference. With `audio_behavior` 'replace' (default) it starts at the next undispatched chunk and drops any queued audio; with 'queue' it plays after every previously accepted source ends, sample-exact.",
            "default": null,
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "audio_behavior": {
            "type": "string",
            "enum": [
              "replace",
              "queue"
            ],
            "x-fal-ui": {
              "advanced": true,
              "order": 40
            },
            "description": "'replace' cuts to this audio at the next chunk; 'queue' appends it.",
            "default": "replace",
            "title": "Audio Behavior"
          },
          "script": {
            "default": null,
            "description": "A new script: beats at whole-second offsets from the first video generated under it. Exclusive with prompt/end_image_url/audio_url. With `script_mode` 'replace' (default) it replaces the pending and current direction at the next undispatched chunk; 'append' starts at the chunk boundary after the running script's last text beat is represented and its audio tails have finished (queued behind earlier appended scripts). Beats without a prompt keep the current text direction.",
            "title": "Script",
            "anyOf": [
              {
                "minItems": 1,
                "maxItems": 64,
                "items": {
                  "$ref": "#/$defs/MiniMaxH3MaxDirectorClientScriptBeat"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ]
          },
          "prompt_version": {
            "x-fal-ui": {
              "hidden": true
            },
            "type": "integer",
            "title": "Prompt Version",
            "minimum": 1
          },
          "end_image_url": {
            "x-fal-ui": {
              "field": "image",
              "order": 20
            },
            "title": "Last frame",
            "default": null,
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "prompt": {
            "x-fal-ui": {
              "field": "textarea",
              "order": 10
            },
            "title": "Prompt",
            "default": null,
            "anyOf": [
              {
                "maxLength": 50000,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "script_mode": {
            "enum": [
              "replace",
              "append"
            ],
            "default": "replace",
            "description": "'replace' cuts to the script at the next chunk; 'append' queues it.",
            "type": "string",
            "title": "Script Mode"
          },
          "type": {
            "const": "prompt",
            "x-fal-ui": {
              "hidden": true
            },
            "type": "string",
            "title": "Type"
          },
          "replan": {
            "title": "Replan",
            "x-fal-ui": {
              "advanced": true,
              "order": 50
            },
            "description": "When a prompt is included: true (default) busts the planned prompt queue so the new direction applies at the next undispatched chunk; false appends the direction after the already-planned chunks.",
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "type",
          "prompt_version"
        ],
        "type": "object",
        "title": "PromptMessage",
        "additionalProperties": false
      },
      "MiniMaxH3MaxDirectorClientScriptBeat": {
        "title": "ScriptBeat",
        "properties": {
          "audio_url": {
            "default": null,
            "description": "Audio that starts playing exactly at this offset as FL2VA target audio; overlapping sources are mixed. The source PCM itself plays.",
            "title": "Audio Url",
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "end_image_url": {
            "default": null,
            "description": "Exact final frame of the chunk that ends at this offset. Offsets of successive end images must be at least three seconds apart.",
            "title": "End Image Url",
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "prompt": {
            "default": null,
            "description": "Direction that starts at this offset and persists until the next text beat; it also appears as a timed span inside the chunk.",
            "title": "Prompt",
            "anyOf": [
              {
                "maxLength": 50000,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "offset": {
            "title": "Offset",
            "description": "Whole seconds from the start of the first video generated under this script. Text and audio placed here start at this second; an end image here is the exact final frame at this second.",
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "offset"
        ],
        "description": "A direction on the associated video's clock, never the stream clock.",
        "type": "object",
        "additionalProperties": false
      },
      "MiniMaxH3MaxDirectorClientStopMessage": {
        "properties": {
          "type": {
            "const": "stop",
            "type": "string",
            "title": "Type"
          }
        },
        "required": [
          "type"
        ],
        "type": "object",
        "title": "StopMessage",
        "additionalProperties": false
      }
    }
  }
}

Validate a payload

before you spend tokens
shell
$ curl -X POST https://modelschemas.com/v1/validate \
    -d '{"provider":"fal","endpointId":"minimax/h3-max/director","payload":{…}}'
→ {"valid": false, "errors": [{"path": "#", "keyword": "required", …}]}