GET

/v1/schemas/bfl/video/v1/flux-3-video

kind inputactivity videohash f843ef6d…extracted Oct 22, 2026version currentsource upstream spec ↗
fieldrecorded source
schemaSource linked above.

upstream-spec

Source trace
ea458c661ef8b0e03d72ee6b29267451f5a04ae65f35e55ea8a87e53645ef670
{
  "fetchedAt": 1792645846,
  "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": "bfl",
  "activity": "video",
  "endpointId": "v1/flux-3-video",
  "kind": "input",
  "contentHash": "f843ef6d86888530345c55cd043d25fde690aee3873b008dfabc856bde94f020",
  "specRevision": null,
  "provenance": {
    "sourceUrl": "https://api.bfl.ai/openapi.json",
    "sourceHash": "ea458c661ef8b0e03d72ee6b29267451f5a04ae65f35e55ea8a87e53645ef670",
    "fetchedAt": 1792645846,
    "extractorVersion": "1",
    "derivation": "upstream-spec",
    "verifiedAt": null
  },
  "createdAt": 1792645846,
  "supersededAt": null,
  "schema": {
    "oneOf": [
      {
        "$ref": "#/$defs/Flux3VideoT2VInputs"
      },
      {
        "$ref": "#/$defs/Flux3VideoI2VInputs"
      },
      {
        "$ref": "#/$defs/Flux3VideoV2VInputs"
      },
      {
        "$ref": "#/$defs/Flux3VideoDraftEnhanceInputs"
      }
    ],
    "title": "Flux3VideoInputsBody",
    "description": "Route body wrapper: FastAPI drops the union's discriminator when the\nbare union is the top-level body param, so 422s enumerate every mode\nclass instead of the one the client sent. The RootModel keeps\ndiscrimination inside pydantic; routes unwrap `.root`.",
    "discriminator": {
      "propertyName": "mode",
      "mapping": {
        "draft_enhance": "#/components/schemas/Flux3VideoDraftEnhanceInputs",
        "i2v": "#/components/schemas/Flux3VideoI2VInputs",
        "t2v": "#/components/schemas/Flux3VideoT2VInputs",
        "v2v": "#/components/schemas/Flux3VideoV2VInputs"
      }
    },
    "$defs": {
      "Flux3VideoDraftEnhanceInputs": {
        "properties": {
          "user": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 256,
                "minLength": 1,
                "pattern": "^[^\\x00]*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "User",
            "description": "Opaque identifier for the end user supplied by the calling platform."
          },
          "mode": {
            "type": "string",
            "const": "draft_enhance",
            "title": "Mode"
          },
          "draft_cache": {
            "type": "string",
            "title": "Draft Cache",
            "description": "Encrypted draft-cache bundle from a prior `draft` generation. Primary form: the base64-encoded `.bin` file downloaded from the prior result's `draft_cache` URL. An http(s) URL is also accepted for replays within the download URL's expiry window. The harness is skipped and the original FLUX call is reproduced at full quality; the original inputs are embedded in the bundle."
          },
          "resolution": {
            "type": "string",
            "enum": [
              "hd",
              "fhd",
              "qhd",
              "uhd"
            ],
            "title": "Resolution",
            "description": "Video resolution class of the enhanced result: `fhd` (default), `qhd`, and `uhd` finish the reproduced generation with the video upsampler at that canvas, `hd` returns it without that pass. The reproduced generation is identical whichever is chosen; only the finishing pass differs.",
            "default": "fhd"
          },
          "safety_tolerance": {
            "type": "integer",
            "maximum": 7,
            "minimum": 0,
            "title": "Safety Tolerance",
            "description": "Harm moderation tolerance from 0 to 7, with 0 the strictest. The route and organization determine the approved maximum and per-category ceilings. Unapproved levels return 422 with approved levels.",
            "default": 2
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "mode",
          "draft_cache"
        ],
        "title": "Draft Enhance",
        "description": "Full-quality render of a prior `draft` generation. The bundle pins the\ngeneration itself -- the original mode, prompt, seed, and conditioning\nmedia -- so `resolution` is the only output choice left to the caller."
      },
      "Flux3VideoI2VInputs": {
        "properties": {
          "user": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 256,
                "minLength": 1,
                "pattern": "^[^\\x00]*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "User",
            "description": "Opaque identifier for the end user supplied by the calling platform."
          },
          "prompt": {
            "type": "string",
            "title": "Prompt",
            "description": "Free-form prompt describing the video."
          },
          "aspect_ratio": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "21:9",
                  "2:1",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "9:21"
                ]
              },
              {
                "type": "string",
                "const": "auto"
              }
            ],
            "title": "Aspect Ratio",
            "description": "Output aspect ratio. `auto` lets the harness choose from the prompt and any references.",
            "default": "auto"
          },
          "duration": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 20,
                "minimum": 5
              },
              {
                "type": "string",
                "const": "auto"
              }
            ],
            "title": "Duration",
            "description": "Video duration in seconds (any whole second from 5 to 20), or `auto` to fit the content.",
            "default": "auto"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "hd",
              "fhd",
              "qhd",
              "uhd"
            ],
            "title": "Resolution",
            "description": "Video resolution class: `hd`, or `fhd`/`qhd`/`uhd` for a higher-resolution result finished by the video upsampler. Exact dimensions vary with the aspect ratio.",
            "default": "hd"
          },
          "version": {
            "type": "string",
            "const": "latest",
            "title": "Version",
            "description": "Endpoint version. `latest` (default) serves the current release; dated pinnable release tags are added here as they are published.",
            "default": "latest"
          },
          "generate_audio": {
            "type": "boolean",
            "title": "Generate Audio",
            "description": "Generate synchronized audio alongside the video.",
            "default": true
          },
          "safety_tolerance": {
            "type": "integer",
            "maximum": 7,
            "minimum": 0,
            "title": "Safety Tolerance",
            "description": "Harm moderation tolerance from 0 to 7, with 0 the strictest. The route and organization determine the approved maximum and per-category ceilings. Unapproved levels return 422 with approved levels.",
            "default": 2
          },
          "draft": {
            "type": "boolean",
            "title": "Draft",
            "description": "Draft mode: generate a fast preview and return a `draft_cache` download URL in the result. Download that bundle and pass it back later to render the full-quality version of the same generation.",
            "default": false
          },
          "mode": {
            "type": "string",
            "const": "i2v",
            "title": "Mode"
          },
          "keyframes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "prefixItems": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ],
                "type": "array",
                "maxItems": 2,
                "minItems": 2
              },
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "items": {
                  "prefixItems": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "type": "array",
                  "maxItems": 2,
                  "minItems": 2
                },
                "type": "array"
              }
            ],
            "title": "Keyframes",
            "description": "Your images become frames of the video; each is an http(s) URL or base64, one to ten total. Plain images: one starts the video, two start and end it, with more the first starts it, the last ends it, and the rest fall evenly in between (3 or more need a set `duration`). To control the timing yourself, send `[seconds, image]` pairs in time order, e.g. `[[0, \"...\"], [3.5, \"...\"]]`: each image becomes the frame at that second, and with `duration: \"auto\"` the video runs to the last pair's second, rounded up (20s max)."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "prompt",
          "mode",
          "keyframes"
        ],
        "title": "Image to Video",
        "description": "Image continuation: your images become frames of the video. One image\nstarts the video; two start and end it; with more, the first starts it,\nthe last ends it, and the rest fall evenly in between. To control the\ntiming yourself, send `[seconds, image]` pairs: each image becomes the\nframe at that second."
      },
      "Flux3VideoT2VInputs": {
        "properties": {
          "user": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 256,
                "minLength": 1,
                "pattern": "^[^\\x00]*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "User",
            "description": "Opaque identifier for the end user supplied by the calling platform."
          },
          "prompt": {
            "type": "string",
            "title": "Prompt",
            "description": "Free-form prompt describing the video."
          },
          "aspect_ratio": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "21:9",
                  "2:1",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "9:21"
                ]
              },
              {
                "type": "string",
                "const": "auto"
              }
            ],
            "title": "Aspect Ratio",
            "description": "Output aspect ratio. `auto` lets the harness choose from the prompt and any references.",
            "default": "auto"
          },
          "duration": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 20,
                "minimum": 5
              },
              {
                "type": "string",
                "const": "auto"
              }
            ],
            "title": "Duration",
            "description": "Video duration in seconds (any whole second from 5 to 20), or `auto` to fit the content.",
            "default": "auto"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "hd",
              "fhd",
              "qhd",
              "uhd"
            ],
            "title": "Resolution",
            "description": "Video resolution class: `hd`, or `fhd`/`qhd`/`uhd` for a higher-resolution result finished by the video upsampler. Exact dimensions vary with the aspect ratio.",
            "default": "hd"
          },
          "version": {
            "type": "string",
            "const": "latest",
            "title": "Version",
            "description": "Endpoint version. `latest` (default) serves the current release; dated pinnable release tags are added here as they are published.",
            "default": "latest"
          },
          "generate_audio": {
            "type": "boolean",
            "title": "Generate Audio",
            "description": "Generate synchronized audio alongside the video.",
            "default": true
          },
          "safety_tolerance": {
            "type": "integer",
            "maximum": 7,
            "minimum": 0,
            "title": "Safety Tolerance",
            "description": "Harm moderation tolerance from 0 to 7, with 0 the strictest. The route and organization determine the approved maximum and per-category ceilings. Unapproved levels return 422 with approved levels.",
            "default": 2
          },
          "draft": {
            "type": "boolean",
            "title": "Draft",
            "description": "Draft mode: generate a fast preview and return a `draft_cache` download URL in the result. Download that bundle and pass it back later to render the full-quality version of the same generation.",
            "default": false
          },
          "mode": {
            "type": "string",
            "const": "t2v",
            "title": "Mode"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "prompt",
          "mode"
        ],
        "title": "Text to Video"
      },
      "Flux3VideoV2VInputs": {
        "properties": {
          "user": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 256,
                "minLength": 1,
                "pattern": "^[^\\x00]*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "User",
            "description": "Opaque identifier for the end user supplied by the calling platform."
          },
          "prompt": {
            "type": "string",
            "title": "Prompt",
            "description": "Free-form prompt describing the video."
          },
          "aspect_ratio": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "21:9",
                  "2:1",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "9:21"
                ]
              },
              {
                "type": "string",
                "const": "auto"
              }
            ],
            "title": "Aspect Ratio",
            "description": "Output aspect ratio. `auto` lets the harness choose from the prompt and any references.",
            "default": "auto"
          },
          "duration": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 15,
                "minimum": 5
              },
              {
                "type": "string",
                "const": "auto"
              }
            ],
            "title": "Duration",
            "description": "Video duration in seconds (any whole second from 5 to 15), or `auto` to fit the content.",
            "default": "auto"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "hd",
              "fhd",
              "qhd",
              "uhd"
            ],
            "title": "Resolution",
            "description": "Video resolution class: `hd`, or `fhd`/`qhd`/`uhd` for a higher-resolution result finished by the video upsampler. Exact dimensions vary with the aspect ratio.",
            "default": "hd"
          },
          "version": {
            "type": "string",
            "const": "latest",
            "title": "Version",
            "description": "Endpoint version. `latest` (default) serves the current release; dated pinnable release tags are added here as they are published.",
            "default": "latest"
          },
          "generate_audio": {
            "type": "boolean",
            "title": "Generate Audio",
            "description": "Generate synchronized audio alongside the video.",
            "default": true
          },
          "safety_tolerance": {
            "type": "integer",
            "maximum": 7,
            "minimum": 0,
            "title": "Safety Tolerance",
            "description": "Harm moderation tolerance from 0 to 7, with 0 the strictest. The route and organization determine the approved maximum and per-category ceilings. Unapproved levels return 422 with approved levels.",
            "default": 2
          },
          "draft": {
            "type": "boolean",
            "title": "Draft",
            "description": "Draft mode: generate a fast preview and return a `draft_cache` download URL in the result. Download that bundle and pass it back later to render the full-quality version of the same generation.",
            "default": false
          },
          "mode": {
            "type": "string",
            "const": "v2v",
            "title": "Mode"
          },
          "start_video": {
            "type": "string",
            "title": "Start Video",
            "description": "The video to continue, an http(s) URL or base64 mp4; the generated clip carries on from its final frames."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "prompt",
          "mode",
          "start_video"
        ],
        "title": "Video Continuation",
        "description": "Video continuation: the generated clip carries on from your video's\nfinal frames."
      }
    }
  }
}

Validate a payload

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