GET

/v1/schemas/runway/video/v1/text_to_video

kind inputactivity videohash dd8a4cfe…extracted Aug 29, 2026version currentsource upstream spec ↗
fieldrecorded source
schemaSource linked above.

upstream-spec

Source trace
569985a2515541ad2d2654301b82d21986a69eb7a2de2e54836ff67e0a275165
{
  "fetchedAt": 1787980873,
  "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": "runway",
  "activity": "video",
  "endpointId": "v1/text_to_video",
  "kind": "input",
  "contentHash": "dd8a4cfe60cc3b7803942baa9b7291cac56cf0d7b3c5ceeba649e34a6feb3f7c",
  "specRevision": null,
  "provenance": {
    "sourceUrl": "https://raw.githubusercontent.com/runwayml/openapi/next/openapi.json",
    "sourceHash": "569985a2515541ad2d2654301b82d21986a69eb7a2de2e54836ff67e0a275165",
    "fetchedAt": 1787980873,
    "extractorVersion": "1",
    "derivation": "upstream-spec",
    "verifiedAt": null
  },
  "createdAt": 1787980873,
  "supersededAt": null,
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "oneOf": [
      {
        "title": "gen4.5",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty string up to 1000 characters (measured in UTF-16 code units). This should describe in detail what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "ratio": {
            "description": "The resolution of the output video.",
            "type": "string",
            "enum": [
              "1280:720",
              "720:1280"
            ]
          },
          "duration": {
            "description": "The number of seconds of duration for the output video. Must be an integer from 2 to 10.",
            "type": "integer",
            "minimum": 2,
            "maximum": 10
          },
          "seed": {
            "description": "If unspecified, a random number is chosen. Varying the seed integer is a way to get different results for the same other request parameters. Using the same seed integer for an identical request will produce similar results.",
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "contentModeration": {
            "description": "Settings that affect the behavior of the content moderation system.",
            "type": "object",
            "properties": {
              "publicFigureThreshold": {
                "description": "When set to `low`, the content moderation system will be less strict about preventing generations that include recognizable public figures.",
                "type": "string",
                "enum": [
                  "auto",
                  "low"
                ]
              }
            },
            "additionalProperties": false
          },
          "outputFormat": {
            "description": "The container/encoding of the output. `mp4` (default) returns an H.264 .mp4. `prores` returns a ProRes .mov. `png_sequence` returns a .zip of PNG frames (plus a separate .wav artifact when the output has audio). `hdr10` (HEVC Main 10, BT.2020 + PQ) and `hlg` (HEVC Main 10, BT.2020 + HLG) return true-HDR 10-bit .mp4s; `sdr_rec709_10bit` returns a 10-bit Rec.709 HEVC .mp4 for SDR grading pipelines; `hdr_pq_12bit_master` returns a 12-bit 4:4:4 BT.2020 + PQ HEVC .mov with measured HDR10 content-light metadata for mastering; `hdr_prores` returns a BT.2020 + PQ ProRes .mov editorial mezzanine, whose tier is selectable with `proresProfile` (`422`, `422 HQ`, or `4444`; defaults to `422 HQ`); `hdr_png_sequence` returns a .zip of 16-bit PNG frames carrying the PQ signal losslessly (plus a colorimetry.json sidecar and a separate .wav when the output has audio); `hdr_exr_sequence` returns a .zip of half-float OpenEXR frames carrying the HDR signal as linear BT.2020 display light, 1.0 = 100 nits (plus a colorimetry.json sidecar and a separate .wav when the output has audio). Non-mp4 formats incur an additional per-second credit surcharge: 5 credits per second for `prores` and `png_sequence`, and 20 credits per second for every 10-bit and deeper profile (including the 12-bit, 16-bit, and EXR ones), rising to 40 credits per second when the output is larger than 4 megapixels (roughly 4K).",
            "type": "string",
            "enum": [
              "mp4",
              "prores",
              "png_sequence",
              "hdr10",
              "hlg",
              "sdr_rec709_10bit",
              "hdr_pq_12bit_master",
              "hdr_prores",
              "hdr_png_sequence",
              "hdr_exr_sequence"
            ]
          },
          "proresProfile": {
            "description": "The ProRes profile to use. Only valid when `outputFormat` is `prores` or `hdr_prores`. For `prores`, any profile is accepted and the default is `4444`. For `hdr_prores`, only `422`, `422 HQ` and `4444` are available and the default is `422 HQ` — `422 Proxy` and `422 LT` quantize too heavily to hold the HDR gradients, and 12-bit output is served by `hdr_pq_12bit_master` instead of `4444 XQ`.",
            "type": "string",
            "enum": [
              "422",
              "4444",
              "422 Proxy",
              "422 LT",
              "422 HQ",
              "4444 XQ"
            ]
          },
          "model": {
            "type": "string",
            "const": "gen4.5"
          }
        },
        "required": [
          "promptText",
          "ratio",
          "duration",
          "model"
        ]
      },
      {
        "title": "veo3.1",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty string up to 1000 characters (measured in UTF-16 code units). This should describe in detail what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "ratio": {
            "description": "The resolution of the output video.",
            "type": "string",
            "enum": [
              "1280:720",
              "720:1280",
              "1080:1920",
              "1920:1080"
            ]
          },
          "audio": {
            "description": "Whether to generate audio for the video. Audio inclusion affects pricing.",
            "default": true,
            "type": "boolean"
          },
          "negativePrompt": {
            "description": "Text describing what should not appear in the output video.",
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "number",
            "enum": [
              4,
              6,
              8
            ]
          },
          "model": {
            "type": "string",
            "const": "veo3.1"
          }
        },
        "required": [
          "promptText",
          "ratio",
          "model"
        ]
      },
      {
        "title": "veo3.1_fast",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty string up to 1000 characters (measured in UTF-16 code units). This should describe in detail what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "ratio": {
            "description": "The resolution of the output video.",
            "type": "string",
            "enum": [
              "1280:720",
              "720:1280",
              "1080:1920",
              "1920:1080"
            ]
          },
          "audio": {
            "description": "Whether to generate audio for the video. Audio inclusion affects pricing.",
            "default": true,
            "type": "boolean"
          },
          "negativePrompt": {
            "description": "Text describing what should not appear in the output video.",
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "number",
            "enum": [
              4,
              6,
              8
            ]
          },
          "model": {
            "type": "string",
            "const": "veo3.1_fast"
          }
        },
        "required": [
          "promptText",
          "ratio",
          "model"
        ]
      },
      {
        "title": "hailuo3",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty text prompt describing what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 6000
          },
          "resolution": {
            "description": "The output resolution. MiniMax H3 supports 768P and 2K.",
            "type": "string",
            "enum": [
              "2K",
              "768P"
            ]
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "integer",
            "minimum": 5,
            "maximum": 15
          },
          "ratio": {
            "description": "The aspect ratio of the output video. Use adaptive only when image or video references are provided; text-only requests require a concrete ratio.",
            "type": "string",
            "enum": [
              "adaptive",
              "21:9",
              "16:9",
              "4:3",
              "1:1",
              "3:4",
              "9:16"
            ]
          },
          "references": {
            "description": "An optional array of image references (up to 9). See [our docs](/assets/inputs#images) on image inputs for more information.",
            "maxItems": 9,
            "type": "array",
            "items": {
              "title": "PromptImage",
              "x-stainless-variantName": "PromptImage",
              "type": "object",
              "properties": {
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                  "example": "https://example.com/image.jpg",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:image/png;base64,...`, up to 5MB) containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                      "example": "https://example.com/image.jpg",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5242880,
                      "pattern": "^data:image\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "referenceVideos": {
            "description": "An optional array of video references. The combined duration across all video references must not exceed 15 seconds. See [our docs](/assets/inputs#videos) on video inputs for more information.",
            "maxItems": 3,
            "type": "array",
            "items": {
              "title": "VideoReference",
              "description": "A video reference allows the model to use the video as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "video"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                  "example": "https://example.com/video.mp4",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:video/mp4;base64,...`, up to 16MB) containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                      "example": "https://example.com/video.mp4",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:video\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "referenceAudio": {
            "description": "An optional array of audio references. Audio references require a text prompt, and the total combined duration must not exceed 15 seconds.",
            "maxItems": 3,
            "type": "array",
            "items": {
              "title": "AudioReference",
              "description": "An audio reference allows the model to use the audio as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "audio"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                  "example": "https://example.com/audio.mp3",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:audio/mp3;base64,...`, up to 16MB) containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                      "example": "https://example.com/audio.mp3",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:audio\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "model": {
            "type": "string",
            "const": "hailuo3"
          }
        },
        "required": [
          "promptText",
          "model"
        ],
        "additionalProperties": false
      },
      {
        "title": "happyhorse_1_0",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty string up to 2500 characters (measured in UTF-16 code units). This should describe in detail what should appear in the output.",
            "type": "string",
            "minLength": 2,
            "maxLength": 2500
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "integer",
            "minimum": 3,
            "maximum": 15
          },
          "ratio": {
            "description": "The resolution of the output video.",
            "type": "string",
            "enum": [
              "1280:720",
              "720:1280",
              "960:960",
              "1108:832",
              "832:1108",
              "1920:1080",
              "1080:1920",
              "1440:1440",
              "1662:1248",
              "1248:1662"
            ]
          },
          "model": {
            "type": "string",
            "const": "happyhorse_1_0"
          }
        },
        "required": [
          "promptText",
          "model"
        ],
        "additionalProperties": false
      },
      {
        "title": "seedance2",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty text prompt up to 3500 characters describing what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 3500
          },
          "audio": {
            "description": "Whether to generate audio for the video.",
            "default": true,
            "type": "boolean"
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "integer",
            "minimum": 4,
            "maximum": 15
          },
          "ratio": {
            "description": "The resolution of the output video.",
            "type": "string",
            "enum": [
              "992:432",
              "864:496",
              "752:560",
              "640:640",
              "560:752",
              "496:864",
              "1470:630",
              "1280:720",
              "1112:834",
              "960:960",
              "834:1112",
              "720:1280",
              "2206:946",
              "1920:1080",
              "1664:1248",
              "1440:1440",
              "1248:1664",
              "1080:1920",
              "3840:1646",
              "3840:2160",
              "3840:2880",
              "3840:3840",
              "2880:3840",
              "2160:3840"
            ]
          },
          "references": {
            "description": "An optional array of image references (up to 9). See [our docs](/assets/inputs#images) on image inputs for more information.",
            "maxItems": 9,
            "type": "array",
            "items": {
              "title": "PromptImage",
              "x-stainless-variantName": "PromptImage",
              "type": "object",
              "properties": {
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                  "example": "https://example.com/image.jpg",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:image/png;base64,...`, up to 5MB) containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                      "example": "https://example.com/image.jpg",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5242880,
                      "pattern": "^data:image\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "referenceVideos": {
            "description": "An optional array of video references. The combined duration across all video references must not exceed 15 seconds. See [our docs](/assets/inputs#videos) on video inputs for more information.",
            "maxItems": 3,
            "type": "array",
            "items": {
              "title": "VideoReference",
              "description": "A video reference allows the model to use the video as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "video"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                  "example": "https://example.com/video.mp4",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:video/mp4;base64,...`, up to 16MB) containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                      "example": "https://example.com/video.mp4",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:video\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ]
            }
          },
          "referenceAudio": {
            "description": "An optional array of audio references. The total combined duration must not exceed 15 seconds.",
            "maxItems": 3,
            "type": "array",
            "items": {
              "title": "AudioReference",
              "description": "An audio reference allows the model to use the audio as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "audio"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                  "example": "https://example.com/audio.mp3",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:audio/mp3;base64,...`, up to 16MB) containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                      "example": "https://example.com/audio.mp3",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:audio\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ]
            }
          },
          "model": {
            "type": "string",
            "const": "seedance2"
          }
        },
        "required": [
          "promptText",
          "model"
        ],
        "additionalProperties": false
      },
      {
        "title": "seedance2_fast",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty text prompt up to 3500 characters describing what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 3500
          },
          "audio": {
            "description": "Whether to generate audio for the video.",
            "default": true,
            "type": "boolean"
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "integer",
            "minimum": 4,
            "maximum": 15
          },
          "ratio": {
            "description": "The resolution of the output video. Seedance 2.0 Fast supports 480p and 720p only.",
            "type": "string",
            "enum": [
              "992:432",
              "864:496",
              "752:560",
              "640:640",
              "560:752",
              "496:864",
              "1470:630",
              "1280:720",
              "1112:834",
              "960:960",
              "834:1112",
              "720:1280"
            ]
          },
          "references": {
            "description": "An optional array of image references (up to 9). See [our docs](/assets/inputs#images) on image inputs for more information.",
            "maxItems": 9,
            "type": "array",
            "items": {
              "title": "PromptImage",
              "x-stainless-variantName": "PromptImage",
              "type": "object",
              "properties": {
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                  "example": "https://example.com/image.jpg",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:image/png;base64,...`, up to 5MB) containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                      "example": "https://example.com/image.jpg",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5242880,
                      "pattern": "^data:image\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "referenceVideos": {
            "description": "An optional array of video references. The combined duration across all video references must not exceed 15 seconds. See [our docs](/assets/inputs#videos) on video inputs for more information.",
            "maxItems": 3,
            "type": "array",
            "items": {
              "title": "VideoReference",
              "description": "A video reference allows the model to use the video as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "video"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                  "example": "https://example.com/video.mp4",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:video/mp4;base64,...`, up to 16MB) containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                      "example": "https://example.com/video.mp4",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:video\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ]
            }
          },
          "referenceAudio": {
            "description": "An optional array of audio references. The total combined duration must not exceed 15 seconds.",
            "maxItems": 3,
            "type": "array",
            "items": {
              "title": "AudioReference",
              "description": "An audio reference allows the model to use the audio as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "audio"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                  "example": "https://example.com/audio.mp3",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:audio/mp3;base64,...`, up to 16MB) containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                      "example": "https://example.com/audio.mp3",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:audio\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ]
            }
          },
          "model": {
            "type": "string",
            "const": "seedance2_fast"
          }
        },
        "required": [
          "promptText",
          "model"
        ],
        "additionalProperties": false
      },
      {
        "title": "seedance2_mini",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty text prompt up to 3500 characters describing what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 3500
          },
          "audio": {
            "description": "Whether to generate audio for the video.",
            "default": true,
            "type": "boolean"
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "integer",
            "minimum": 4,
            "maximum": 15
          },
          "ratio": {
            "description": "The resolution of the output video. Seedance 2.0 Mini supports 480p and 720p only.",
            "type": "string",
            "enum": [
              "992:432",
              "864:496",
              "752:560",
              "640:640",
              "560:752",
              "496:864",
              "1470:630",
              "1280:720",
              "1112:834",
              "960:960",
              "834:1112",
              "720:1280"
            ]
          },
          "references": {
            "description": "An optional array of image references (up to 9). See [our docs](/assets/inputs#images) on image inputs for more information.",
            "maxItems": 9,
            "type": "array",
            "items": {
              "title": "PromptImage",
              "x-stainless-variantName": "PromptImage",
              "type": "object",
              "properties": {
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                  "example": "https://example.com/image.jpg",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:image/png;base64,...`, up to 5MB) containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                      "example": "https://example.com/image.jpg",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5242880,
                      "pattern": "^data:image\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "referenceVideos": {
            "description": "An optional array of video references. The combined duration across all video references must not exceed 15 seconds. See [our docs](/assets/inputs#videos) on video inputs for more information.",
            "maxItems": 3,
            "type": "array",
            "items": {
              "title": "VideoReference",
              "description": "A video reference allows the model to use the video as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "video"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                  "example": "https://example.com/video.mp4",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:video/mp4;base64,...`, up to 16MB) containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                      "example": "https://example.com/video.mp4",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:video\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ]
            }
          },
          "referenceAudio": {
            "description": "An optional array of audio references. The total combined duration must not exceed 15 seconds.",
            "maxItems": 3,
            "type": "array",
            "items": {
              "title": "AudioReference",
              "description": "An audio reference allows the model to use the audio as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "audio"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                  "example": "https://example.com/audio.mp3",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:audio/mp3;base64,...`, up to 16MB) containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                      "example": "https://example.com/audio.mp3",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:audio\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ]
            }
          },
          "model": {
            "type": "string",
            "const": "seedance2_mini"
          }
        },
        "required": [
          "promptText",
          "model"
        ],
        "additionalProperties": false
      },
      {
        "title": "gemini_omni_flash",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty text prompt describing the video to generate.",
            "type": "string",
            "minLength": 1,
            "maxLength": 4000
          },
          "ratio": {
            "description": "The aspect ratio of the output video: `1280:720` (landscape) or `720:1280` (portrait).",
            "type": "string",
            "enum": [
              "1280:720",
              "720:1280"
            ]
          },
          "duration": {
            "description": "The duration of the output video in seconds, as a whole number from 3 to 10.",
            "type": "integer",
            "minimum": 3,
            "maximum": 10
          },
          "model": {
            "type": "string",
            "const": "gemini_omni_flash"
          }
        },
        "required": [
          "promptText",
          "model"
        ]
      },
      {
        "title": "seedance2_5",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "An optional text prompt up to 15000 characters describing what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 15000
          },
          "audio": {
            "description": "Whether to generate audio for the video.",
            "default": true,
            "type": "boolean"
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "integer",
            "minimum": 4,
            "maximum": 30
          },
          "ratio": {
            "description": "The resolution of the output video. Seedance 2.5 supports 480p, 720p, and 1080p.",
            "type": "string",
            "enum": [
              "992:432",
              "854:480",
              "752:560",
              "640:640",
              "560:752",
              "480:854",
              "1470:630",
              "1280:720",
              "1112:834",
              "960:960",
              "834:1112",
              "720:1280",
              "2206:946",
              "1920:1080",
              "1664:1248",
              "1440:1440",
              "1248:1664",
              "1080:1920"
            ]
          },
          "references": {
            "description": "An optional array of image references (up to 30). See [our docs](/assets/inputs#images) on image inputs for more information.",
            "maxItems": 30,
            "type": "array",
            "items": {
              "title": "PromptImage",
              "x-stainless-variantName": "PromptImage",
              "type": "object",
              "properties": {
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                  "example": "https://example.com/image.jpg",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:image/png;base64,...`, up to 5MB) containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                      "example": "https://example.com/image.jpg",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5242880,
                      "pattern": "^data:image\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "referenceVideos": {
            "description": "An optional array of video references. The combined duration across all video references must not exceed 30 seconds. See [our docs](/assets/inputs#videos) on video inputs for more information.",
            "maxItems": 10,
            "type": "array",
            "items": {
              "title": "VideoReference",
              "description": "A video reference allows the model to use the video as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "video"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                  "example": "https://example.com/video.mp4",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:video/mp4;base64,...`, up to 16MB) containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                      "example": "https://example.com/video.mp4",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:video\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ]
            }
          },
          "referenceAudio": {
            "description": "An optional array of audio references. The total combined duration must be less than 30 seconds.",
            "maxItems": 10,
            "type": "array",
            "items": {
              "title": "AudioReference",
              "description": "An audio reference allows the model to use the audio as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "audio"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                  "example": "https://example.com/audio.mp3",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:audio/mp3;base64,...`, up to 16MB) containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                      "example": "https://example.com/audio.mp3",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:audio\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ]
            }
          },
          "model": {
            "type": "string",
            "const": "seedance2_5"
          }
        },
        "required": [
          "model"
        ],
        "additionalProperties": false
      },
      {
        "title": "grok_imagine_1_5",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty text prompt describing what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 2500
          },
          "resolution": {
            "description": "The output resolution. Requests with image references are capped at 720p.",
            "type": "string",
            "enum": [
              "480p",
              "720p",
              "1080p"
            ]
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "integer",
            "minimum": 1,
            "maximum": 15
          },
          "ratio": {
            "description": "The aspect ratio of the output video.",
            "type": "string",
            "enum": [
              "1:1",
              "16:9",
              "9:16",
              "4:3",
              "3:4",
              "3:2",
              "2:3"
            ]
          },
          "references": {
            "description": "An optional array of image references. Referenced images can be addressed in the prompt as [Image 1], [Image 2], and so on. See [our docs](/assets/inputs#images) on image inputs for more information.",
            "maxItems": 7,
            "type": "array",
            "items": {
              "title": "PromptImage",
              "x-stainless-variantName": "PromptImage",
              "type": "object",
              "properties": {
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                  "example": "https://example.com/image.jpg",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:image/png;base64,...`, up to 5MB) containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                      "example": "https://example.com/image.jpg",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5242880,
                      "pattern": "^data:image\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "referenceAudio": {
            "description": "An optional array of audio references. Audio references require at least one image reference, and each clip must be between 3 and 15 seconds.",
            "maxItems": 3,
            "type": "array",
            "items": {
              "title": "AudioReference",
              "description": "An audio reference allows the model to drive the output with the supplied audio.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "audio"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                  "example": "https://example.com/audio.mp3",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:audio/mp3;base64,...`, up to 16MB) containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                      "example": "https://example.com/audio.mp3",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 16777216,
                      "pattern": "^data:audio\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "model": {
            "type": "string",
            "const": "grok_imagine_1_5"
          }
        },
        "required": [
          "promptText",
          "model"
        ],
        "additionalProperties": false
      },
      {
        "title": "wan3",
        "type": "object",
        "properties": {
          "promptText": {
            "description": "A non-empty text prompt describing what should appear in the output.",
            "type": "string",
            "minLength": 1,
            "maxLength": 20000
          },
          "audio": {
            "description": "Whether to generate audio with the video.",
            "type": "boolean"
          },
          "duration": {
            "description": "The number of seconds of duration for the output video.",
            "type": "integer",
            "minimum": 2,
            "maximum": 30
          },
          "ratio": {
            "description": "The resolution of the output video, as `<width>:<height>`. Use `auto_480p`, `auto_720p`, or `auto_1080p` to let the model pick framing at that quality tier.",
            "type": "string",
            "enum": [
              "832:480",
              "640:480",
              "480:480",
              "480:640",
              "480:832",
              "1280:720",
              "960:720",
              "720:720",
              "720:960",
              "720:1280",
              "1920:1080",
              "1440:1080",
              "1080:1080",
              "1080:1440",
              "1080:1920",
              "auto_480p",
              "auto_720p",
              "auto_1080p"
            ]
          },
          "references": {
            "description": "An optional array of image references (up to 10). See [our docs](/assets/inputs#images) on image inputs for more information.",
            "maxItems": 10,
            "type": "array",
            "items": {
              "title": "PromptImage",
              "x-stainless-variantName": "PromptImage",
              "type": "object",
              "properties": {
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                  "example": "https://example.com/image.jpg",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:image/png;base64,...`, up to 5MB) containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.",
                      "example": "https://example.com/image.jpg",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media, up to 5MB.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5242880,
                      "pattern": "^data:image\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "referenceVideos": {
            "description": "An optional array of video references. The combined duration across all video references must not exceed 15 seconds. See [our docs](/assets/inputs#videos) on video inputs for more information.",
            "maxItems": 5,
            "type": "array",
            "items": {
              "title": "VideoReference",
              "description": "A video reference allows the model to use the video as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "video"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                  "example": "https://example.com/video.mp4",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:video/mp4;base64,...`, up to 5MB) containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.",
                      "example": "https://example.com/video.mp4",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media, up to 5MB.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5242880,
                      "pattern": "^data:video\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "referenceAudio": {
            "description": "An optional array of audio references. The total combined duration must not exceed 15 seconds.",
            "maxItems": 5,
            "type": "array",
            "items": {
              "title": "AudioReference",
              "description": "An audio reference allows the model to use the audio as additional context for the output.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "audio"
                },
                "uri": {
                  "description": "A HTTPS URL, Runway or data URI containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                  "example": "https://example.com/audio.mp3",
                  "anyOf": [
                    {
                      "description": "A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:audio/mp3;base64,...`, up to 5MB) containing an encoded audio. See [our docs](/assets/inputs#audio) on audio inputs for more information.",
                      "example": "https://example.com/audio.mp3",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 2048,
                      "pattern": "^https:\\/\\/.*"
                    },
                    {
                      "description": "A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.",
                      "example": "runway://<token>",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5000,
                      "pattern": "^runway:\\/\\/.*"
                    },
                    {
                      "description": "A data URI containing encoded media, up to 5MB.",
                      "example": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
                      "type": "string",
                      "minLength": 13,
                      "maxLength": 5242880,
                      "pattern": "^data:audio\\/.*"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "uri"
              ],
              "additionalProperties": false
            }
          },
          "model": {
            "type": "string",
            "const": "wan3"
          }
        },
        "required": [
          "promptText",
          "model"
        ],
        "additionalProperties": false
      }
    ],
    "discriminator": {
      "propertyName": "model"
    }
  }
}

Validate a payload

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