{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/api-stock-com/json-schema/api-stock-com-create-generation-request-dto-schema.json",
  "title": "CreateGenerationRequestDto",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/api-stock-com-openapi.json#/components/schemas/CreateGenerationRequestDto",
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Model of generation. Retired ids are still accepted and map to the current model: `doubao-seedance-2.0` → `seedance-2.0`, `doubao-seedance-2.0-fast` → `seedance-2.0-fast`, `doubao-seedance-2.0-mini` → `seedance-2.0-mini`, `doubao-seedance-2.5` → `seedance-2.5`, `doubao-seedance-1-5-pro` → `seedance-1-5-pro`, `doubao-seedream-4-5` → `seedream-4-5`, `doubao-seedream-5-0-lite` → `seedream-5-0-lite`, `doubao-seedream-5-0-pro` → `seedream-5-0-pro`.",
      "enum": [
        "veo3.1-fast",
        "veo3.1-quality",
        "veo3.1-lite",
        "nano-banana",
        "nano-banana-pro",
        "nano-banana-2",
        "nano-banana-2.1",
        "nano-banana-2-lite",
        "grok-imagine-1.5-video",
        "grok-imagine-1.5-image",
        "grok-imagine-2.0-image",
        "seedance-2.0",
        "seedance-2.0-fast",
        "seedance-2.0-mini",
        "seedance-2.5",
        "seedance-2.5-spicy",
        "seedance-1-5-pro",
        "gpt-image-2",
        "gpt-image-2.5-sunburst",
        "gpt-image-2.5-flare",
        "kling-3.0-motion-control",
        "kling-3.0",
        "kling-4.0",
        "pixverse-v6",
        "seedream-5-0-lite",
        "seedream-5-0-flash",
        "seedream-5-0-pro",
        "seedream-4-5",
        "wan2.7-video",
        "wan3.0-video",
        "wan3.0-video-prime",
        "wan3.0-video-pro",
        "flux-3-video",
        "flux-3-image",
        "gemini-omni-1.1-flash",
        "minimax-h3",
        "agnes-video-2.5",
        "z-image",
        "wan2.7-image",
        "wan2.7-image-pro",
        "midjourney",
        "midjourney-video",
        "suno"
      ]
    },
    "input": {
      "description": "Generation parameters (structure depends on the model)",
      "anyOf": [
        {
          "$ref": "#/$defs/Veo3InputDto"
        },
        {
          "$ref": "#/$defs/Veo3LiteInputDto"
        },
        {
          "$ref": "#/$defs/NanoBananaInputDto"
        },
        {
          "$ref": "#/$defs/NanoBanana21InputDto"
        },
        {
          "$ref": "#/$defs/GrokImagineInputDto"
        },
        {
          "$ref": "#/$defs/GrokImagineImageInputDto"
        },
        {
          "$ref": "#/$defs/GrokImagine2ImageInputDto"
        },
        {
          "$ref": "#/$defs/Flux3ImageInputDto"
        },
        {
          "$ref": "#/$defs/SeedanceInputDto"
        },
        {
          "$ref": "#/$defs/Seedance25InputDto"
        },
        {
          "$ref": "#/$defs/Seedance25SpicyInputDto"
        },
        {
          "$ref": "#/$defs/Seedance15ProInputDto"
        },
        {
          "$ref": "#/$defs/GptImageInputDto"
        },
        {
          "$ref": "#/$defs/KlingMotionControlInputDto"
        },
        {
          "$ref": "#/$defs/Kling3InputDto"
        },
        {
          "$ref": "#/$defs/Kling4InputDto"
        },
        {
          "$ref": "#/$defs/PixverseInputDto"
        },
        {
          "$ref": "#/$defs/SeedreamInputDto"
        },
        {
          "$ref": "#/$defs/Seedream50FlashInputDto"
        },
        {
          "$ref": "#/$defs/Wan27VideoInputDto"
        },
        {
          "$ref": "#/$defs/Wan30VideoInputDto"
        },
        {
          "$ref": "#/$defs/Wan30VideoProInputDto"
        },
        {
          "$ref": "#/$defs/Flux3VideoInputDto"
        },
        {
          "$ref": "#/$defs/GeminiOmni11InputDto"
        },
        {
          "$ref": "#/$defs/MinimaxH3InputDto"
        },
        {
          "$ref": "#/$defs/AgnesVideoInputDto"
        },
        {
          "$ref": "#/$defs/ZImageInputDto"
        },
        {
          "$ref": "#/$defs/Wan27ImageInputDto"
        },
        {
          "$ref": "#/$defs/MidjourneyInputDto"
        },
        {
          "$ref": "#/$defs/MidjourneyVideoInputDto"
        },
        {
          "$ref": "#/$defs/SunoInputDto"
        }
      ]
    },
    "webhook": {
      "type": "string",
      "description": "Webhook for result"
    }
  },
  "required": [
    "model",
    "input"
  ],
  "$defs": {
    "AgnesVideoInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Describe the scene, motion and audio. Refer to supplied images and audio in the prompt."
        },
        "aspectRatio": {
          "type": "string",
          "description": "Video aspect ratio",
          "enum": [
            "16:9",
            "9:16",
            "21:9",
            "4:3",
            "1:1",
            "3:4"
          ],
          "default": "16:9"
        },
        "imageUrls": {
          "description": "Reference image URLs (up to 9). Included in the per-second price.",
          "maxItems": 9,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Reference audio URLs (up to 3), free of additional charge.",
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "resolution": {
          "type": "string",
          "description": "Output video resolution.",
          "enum": [
            "720p",
            "1080p",
            "2k"
          ],
          "default": "720p"
        },
        "duration": {
          "type": "number",
          "description": "Output duration in seconds (1–12).",
          "minimum": 1,
          "maximum": 12,
          "default": 5
        },
        "seed": {
          "type": "number",
          "description": "Random seed"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Flux3ImageInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text description or image editing instructions. Layout and bounding-box instructions may be included in the prompt."
        },
        "urls": {
          "description": "Reference image URLs for editing or multi-image guidance (up to 10 images). Omit for text-to-image generation.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Image aspect ratio. Auto follows the first reference image, or the prompt when generating from text.",
          "enum": [
            "auto",
            "21:9",
            "2:1",
            "16:9",
            "3:2",
            "7:5",
            "4:3",
            "5:4",
            "1:1",
            "4:5",
            "3:4",
            "5:7",
            "2:3",
            "9:16",
            "1:2",
            "9:21"
          ],
          "default": "auto"
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution tier; determines the per-image price.",
          "enum": [
            "768SQ",
            "1K",
            "1.5K",
            "2K",
            "4K"
          ],
          "default": "1K"
        },
        "grounding": {
          "type": "boolean",
          "description": "Allow web and image search before generation. Reference images and search do not add a separate charge.",
          "default": true
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Flux3VideoInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Scene description: subject, action, camera movement, dialogue and sound"
        },
        "resolution": {
          "type": "string",
          "description": "Video resolution (affects pricing). Draft mode supports 720p only",
          "enum": [
            "720p",
            "1080p"
          ],
          "default": "720p"
        },
        "duration": {
          "type": "number",
          "description": "Video duration in seconds (5-20). Billed per second",
          "default": 5,
          "minimum": 5,
          "maximum": 20
        },
        "aspectRatio": {
          "type": "string",
          "description": "Video aspect ratio. `auto` lets the model choose from the prompt and input frames",
          "enum": [
            "auto",
            "21:9",
            "2:1",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16"
          ],
          "default": "auto"
        },
        "imageUrls": {
          "description": "Keyframes for image-to-video, in playback order. One image is the start frame, two are start + end, three or more are spread evenly across the clip",
          "minItems": 1,
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "videoUrl": {
          "type": "string",
          "description": "Source video (mp4) to continue. Continuation is billed at a higher per-second rate and cannot be combined with imageUrls"
        },
        "draft": {
          "type": "boolean",
          "description": "Draft mode: a fast, low-quality 720p preview at about a third of the price",
          "default": false
        },
        "safetyTolerance": {
          "type": "number",
          "description": "Moderation tolerance from 0 (strictest) to 4 (most permissive)",
          "default": 2,
          "minimum": 0,
          "maximum": 4
        }
      },
      "required": [
        "prompt"
      ]
    },
    "GeminiOmni11InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Describe the scene, motion and sound.",
          "maxLength": 4000
        },
        "imageUrls": {
          "description": "First frame and optional last frame. Cannot be combined with reference inputs.",
          "maxItems": 2,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "referenceImageUrls": {
          "description": "Reference images (up to 7; up to 5 with a reference video). Cannot be combined with imageUrls.",
          "maxItems": 7,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "referenceVideoUrls": {
          "description": "One source video, 3–10 seconds. Output follows source duration and is billed per generation. Cannot be combined with imageUrls.",
          "maxItems": 1,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "aspectRatio": {
          "type": "string",
          "description": "Output aspect ratio",
          "enum": [
            "16:9",
            "9:16"
          ],
          "default": "16:9"
        },
        "duration": {
          "type": "number",
          "description": "Output duration. Ignored with a source video, which uses a flat per-generation price.",
          "enum": [
            4,
            6,
            8,
            10
          ],
          "default": 8
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution; 1080p and 4K are upscaled outputs.",
          "enum": [
            "360p",
            "720p",
            "1080p",
            "4k"
          ],
          "default": "720p"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "GptImageInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "User's prompt"
        },
        "urls": {
          "description": "Reference image URLs (URLs or base64 data URIs) for image-to-image mode",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Output image aspect ratio. For GPT Image 2.5 models, 1:3 and 3:1 require 2k or 4k resolution.",
          "enum": [
            "auto",
            "1:1",
            "16:9",
            "9:16",
            "4:3",
            "3:4",
            "3:2",
            "2:3",
            "5:4",
            "4:5",
            "2:1",
            "1:2",
            "3:1",
            "1:3",
            "21:9",
            "9:21"
          ],
          "default": "1:1"
        },
        "resolution": {
          "type": "string",
          "description": "Output image resolution",
          "enum": [
            "1k",
            "2k",
            "4k"
          ],
          "default": "1k"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "GrokImagine2ImageInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text description for image generation"
        },
        "size": {
          "type": "string",
          "description": "Image aspect ratio",
          "enum": [
            "1:1",
            "2:3",
            "3:2",
            "3:4",
            "4:3",
            "9:16",
            "16:9"
          ],
          "default": "1:1"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "GrokImagineImageInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text description for image generation"
        },
        "size": {
          "type": "string",
          "description": "Image aspect ratio",
          "enum": [
            "1:1",
            "16:9",
            "9:16",
            "3:2",
            "2:3"
          ],
          "default": "1:1"
        },
        "urls": {
          "description": "Reference image URLs for image-to-image mode",
          "maxItems": 1,
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "prompt"
      ]
    },
    "GrokImagineInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Video content description"
        },
        "size": {
          "type": "string",
          "description": "Video aspect ratio / size",
          "enum": [
            "16:9",
            "9:16",
            "1:1",
            "3:2",
            "2:3"
          ],
          "default": "16:9"
        },
        "duration": {
          "type": "number",
          "description": "Video duration in seconds",
          "enum": [
            6,
            10,
            15,
            20,
            25,
            30
          ],
          "default": 6
        },
        "resolution": {
          "type": "string",
          "description": "Video resolution",
          "enum": [
            "480p",
            "720p"
          ],
          "default": "480p"
        },
        "urls": {
          "description": "Reference image URLs for image-to-video mode",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Kling3InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Video content description",
          "maxLength": 2500
        },
        "resolution": {
          "type": "string",
          "description": "Video resolution tier (affects pricing)",
          "enum": [
            "720p",
            "1080p",
            "4k"
          ],
          "default": "720p"
        },
        "duration": {
          "type": "number",
          "description": "Video duration in seconds (3-15). Billed per second",
          "default": 5,
          "minimum": 3,
          "maximum": 15
        },
        "aspectRatio": {
          "type": "string",
          "description": "Video aspect ratio. Ignored in image-to-video mode — the ratio is taken from the input frame",
          "enum": [
            "16:9",
            "9:16",
            "1:1"
          ],
          "default": "16:9"
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Whether to generate a native audio track (increases pricing on 720p and 1080p)",
          "default": false
        },
        "imageUrls": {
          "description": "Input frames for image-to-video. One URL is used as the first frame, two as first + last frame",
          "maxItems": 2,
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Kling4ElementDto": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "Subject description (up to 100 characters)",
          "maxLength": 100
        },
        "type": {
          "type": "string",
          "description": "Element media type",
          "enum": [
            "image",
            "video"
          ],
          "default": "image"
        },
        "imageUrls": {
          "description": "Image element references (1–4 URLs)",
          "minItems": 1,
          "maxItems": 4,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "videoUrl": {
          "type": "string",
          "description": "Video element source URL"
        }
      }
    },
    "Kling4InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Describe the scene. Use @Image1 / @Element1 for references. Required unless multiShots is supplied; mutually exclusive with multiShots."
        },
        "videoMode": {
          "type": "string",
          "description": "Omit for pure text-to-video. Use elements for references, start_end_frame for keyframes, transform or video_reference for a source video.",
          "enum": [
            "elements",
            "start_end_frame",
            "transform",
            "video_reference"
          ]
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution (4K is not available)",
          "enum": [
            "720p",
            "1080p"
          ],
          "default": "720p"
        },
        "duration": {
          "type": "number",
          "description": "Output seconds, 3–30. Ignored with source video (its probed duration is billed) or multiShots (shot durations are summed).",
          "minimum": 3,
          "maximum": 30,
          "default": 3
        },
        "aspectRatio": {
          "type": "string",
          "description": "Aspect ratio; must be auto with a source video. Keyframes determine their own ratio.",
          "enum": [
            "auto",
            "16:9",
            "9:16",
            "1:1",
            "21:9"
          ]
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Generate native stereo audio (included in the price)",
          "default": true
        },
        "keepAudio": {
          "type": "boolean",
          "description": "Preserve source video audio",
          "default": true
        },
        "imageUrls": {
          "description": "Raw references (up to 10); address as @Image1, @Image2. Requires elements, transform or video_reference mode.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "startImageIndex": {
          "type": "number",
          "description": "1-based imageUrls index anchoring the first frame (elements mode)",
          "minimum": 1,
          "maximum": 10
        },
        "elements": {
          "description": "Subject elements: { description?: string, type?: image | video, imageUrls?: string[1..4], videoUrl?: string }. Up to 7, at most 3 video elements. Images and elements together: at most 15, or 14 with source video.",
          "minItems": 1,
          "maxItems": 7,
          "type": "array",
          "items": {
            "$ref": "#/$defs/Kling4ElementDto"
          }
        },
        "startFrameUrl": {
          "type": "string",
          "description": "Required first frame in start_end_frame mode"
        },
        "keyframeUrls": {
          "description": "Ordered middle frames (up to 8) in start_end_frame mode; at most 10 total frames",
          "maxItems": 8,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "endFrameUrl": {
          "type": "string",
          "description": "Optional last frame in start_end_frame mode"
        },
        "videoUrl": {
          "type": "string",
          "description": "Source video for transform / video_reference. Duration is probed before charging; 3–10 seconds for transform, 3–30 for video_reference. Transform needs a short side of at least 700px."
        },
        "multiShots": {
          "description": "2–6 scenes totalling 3–30 seconds; replaces prompt and duration. Only text-to-video and elements modes.",
          "minItems": 2,
          "maxItems": 6,
          "type": "array",
          "items": {
            "$ref": "#/$defs/Kling4ShotDto"
          }
        }
      }
    },
    "Kling4ShotDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Scene description"
        },
        "duration": {
          "type": "number",
          "description": "Scene duration in seconds; all shots must total 3–30 seconds",
          "minimum": 1,
          "maximum": 30
        }
      },
      "required": [
        "prompt",
        "duration"
      ]
    },
    "KlingMotionControlInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Optional scene prompt"
        },
        "imageUrls": {
          "description": "Reference image URL (exactly one). Use one clearly visible person, with the head, shoulders, arms and torso in frame. JPG/JPEG/PNG, max 10MB. An image whose longer side exceeds 3850px is downscaled automatically",
          "minItems": 1,
          "maxItems": 1,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "videoUrls": {
          "description": "Reference video URL (exactly one). Keep one person's complete upper body visible, including the first frame; cropped or multiple people may be rejected. MP4/MOV, max 100MB",
          "minItems": 1,
          "maxItems": 1,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "characterOrientation": {
          "type": "string",
          "description": "Character orientation mode. Determines whose orientation drives the motion transfer",
          "enum": [
            "image",
            "video"
          ]
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution",
          "enum": [
            "720p",
            "1080p"
          ],
          "default": "720p"
        }
      },
      "required": [
        "imageUrls",
        "videoUrls",
        "characterOrientation"
      ]
    },
    "MidjourneyInputDto": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "description": "Midjourney action / endpoint. Defaults to 'imagine' (text-to-image). Follow-up actions reference a previous generation via 'parentTaskId'.",
          "enum": [
            "imagine",
            "edits",
            "blend",
            "describe",
            "upscale",
            "variation",
            "high-variation",
            "low-variation",
            "reroll",
            "zoom",
            "pan",
            "inpaint",
            "modal",
            "remix-strong",
            "remix-subtle"
          ],
          "default": "imagine"
        },
        "prompt": {
          "type": "string",
          "description": "Prompt; required for imagine/edits. Native MJ flags allowed (e.g. '--ar 16:9 --v 6.1'). Structured body fields override prompt flags."
        },
        "imageUrls": {
          "description": "Image URLs or base64 data URIs. Used as: image-guided (imagine), source (edits), blend set (2–4), describe (1).",
          "maxItems": 16,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "parentTaskId": {
          "type": "string",
          "description": "Parent generation id (a previous 'midjourney' generation in our system) for follow-up actions (upscale/variation/reroll/zoom/pan/inpaint/modal/remix). The upstream task id is resolved from it."
        },
        "index": {
          "type": "number",
          "description": "Tile index (1–4) for upscale/variation/zoom/pan/inpaint/remix when 'customId' is not provided.",
          "minimum": 1,
          "maximum": 4
        },
        "customId": {
          "type": "string",
          "description": "Raw MJ button id for the action; when set, 'index'/'direction' matching is skipped."
        },
        "speed": {
          "type": "string",
          "description": "Speed mode. 'relax' (default) adds no billing suffix.",
          "enum": [
            "relax",
            "fast",
            "turbo"
          ],
          "default": "relax"
        },
        "direction": {
          "type": "string",
          "description": "Pan direction (action=pan).",
          "enum": [
            "left",
            "right",
            "up",
            "down"
          ]
        },
        "zoomRatio": {
          "type": "number",
          "description": "Zoom factor (action=zoom). < 2 → Zoom Out 1.5x; omitted or >= 2 → 2x."
        },
        "maskUrl": {
          "type": "string",
          "description": "Mask image URL or base64 (action=modal). White = repaint, transparent = keep."
        },
        "dimensions": {
          "type": "string",
          "description": "Aspect preset for blend (action=blend); overridden by 'size'.",
          "enum": [
            "SQUARE",
            "PORTRAIT",
            "LANDSCAPE"
          ],
          "default": "SQUARE"
        },
        "size": {
          "type": "string",
          "description": "Aspect ratio 'w:h' (--ar), e.g. '16:9', '1:1', '21:9'."
        },
        "quality": {
          "type": "string",
          "description": "Quality (--q).",
          "enum": [
            "0.25",
            "0.5",
            "1",
            "2"
          ]
        },
        "style": {
          "type": "string",
          "description": "Style (--style), e.g. 'raw'."
        },
        "version": {
          "type": "string",
          "description": "Main MJ version (--v). With 'niji: true' and '7'/'6' it normalizes to Niji.",
          "enum": [
            "8.1",
            "7",
            "6.1",
            "5.2",
            "5.1"
          ]
        },
        "seed": {
          "type": "number",
          "description": "Seed (--seed)."
        },
        "negativePrompt": {
          "type": "string",
          "description": "Negative prompt (--no), e.g. 'ugly, blurry'."
        },
        "stylize": {
          "type": "number",
          "description": "Stylize (--s), 0–1000."
        },
        "chaos": {
          "type": "number",
          "description": "Chaos (--c), 0–100."
        },
        "weird": {
          "type": "number",
          "description": "Weird (--w), 0–3000."
        },
        "tile": {
          "type": "boolean",
          "description": "Tile mode (--tile)."
        },
        "niji": {
          "type": "boolean",
          "description": "Niji switch (--niji). Use with version 7/6."
        },
        "iw": {
          "type": "number",
          "description": "Image weight (--iw), 0–3."
        },
        "cw": {
          "type": "number",
          "description": "Character weight (--cw), 0–100."
        },
        "sw": {
          "type": "number",
          "description": "Style weight (--sw), 0–1000."
        },
        "cref": {
          "type": "string",
          "description": "Character reference URL (--cref)."
        },
        "sref": {
          "type": "string",
          "description": "Style reference URL (--sref)."
        },
        "dref": {
          "type": "string",
          "description": "Depth reference URL (--dref)."
        },
        "dw": {
          "type": "number",
          "description": "Depth weight (--dw), 0–100."
        },
        "repeat": {
          "type": "number",
          "description": "Repeat (--repeat), 2–40."
        },
        "raw": {
          "type": "boolean",
          "description": "Raw style (--raw), v5.1+."
        },
        "draft": {
          "type": "boolean",
          "description": "Draft mode (--draft), v7+."
        },
        "hd": {
          "type": "boolean",
          "description": "HD mode (--hd), v8/v8.1 only."
        },
        "stop": {
          "type": "number",
          "description": "Early stop (--stop), 10–100; v5–6.1 / niji 5–6 only."
        },
        "extra": {
          "type": "string",
          "description": "Escape hatch appended to the prompt verbatim (any '--xxx')."
        }
      }
    },
    "MidjourneyVideoInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Video prompt; optional when reusing a parent task."
        },
        "imageUrls": {
          "description": "First-frame image (1 image, URL or base64). One of imageUrls / parentTaskId.",
          "maxItems": 1,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "parentTaskId": {
          "type": "string",
          "description": "Parent generation id (a SUCCESS 'midjourney' imagine generation) to reuse as the source. One of imageUrls / parentTaskId."
        },
        "index": {
          "type": "number",
          "description": "Which tile of the parent imagine grid is the first frame (0–3).",
          "minimum": 0,
          "maximum": 3
        },
        "videoType": {
          "type": "string",
          "description": "Resolution / mode tier. 720 tiers bill at the 720p rate.",
          "enum": [
            "vid_1.1_i2v_480",
            "vid_1.1_i2v_720",
            "vid_1.1_i2v_start_end_480",
            "vid_1.1_i2v_start_end_720"
          ],
          "default": "vid_1.1_i2v_480"
        },
        "animateMode": {
          "type": "string",
          "description": "Animation mode. 'auto' requires parentTaskId + index.",
          "enum": [
            "manual",
            "auto"
          ],
          "default": "manual"
        },
        "motion": {
          "type": "string",
          "description": "Motion amount. No billing impact.",
          "enum": [
            "low",
            "high"
          ],
          "default": "high"
        },
        "batchSize": {
          "type": "number",
          "description": "Batch size (1 / 2 / 4). Billed × N.",
          "enum": [
            1,
            2,
            4
          ],
          "default": 1
        },
        "endUrl": {
          "type": "string",
          "description": "End frame; when set, videoType auto-upgrades to a start/end tier."
        }
      }
    },
    "MinimaxH3InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Describe the scene, motion and audio. Refer to supplied images and audio in the prompt."
        },
        "aspectRatio": {
          "type": "string",
          "description": "Video aspect ratio",
          "enum": [
            "16:9",
            "9:16"
          ],
          "default": "16:9"
        },
        "imageUrls": {
          "description": "Reference image URLs (up to 9). The first 5 are free; each additional image is billed separately per request.",
          "maxItems": 9,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Reference audio URLs (up to 3), free of additional charge.",
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution; 1080p supports at most 10 seconds.",
          "enum": [
            "480p",
            "768p",
            "1080p"
          ],
          "default": "480p"
        },
        "duration": {
          "type": "number",
          "description": "Output duration in seconds (1–15; at most 10 at 1080p).",
          "minimum": 1,
          "maximum": 15,
          "default": 5
        },
        "seed": {
          "type": "number",
          "description": "Random seed"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "NanoBanana21InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "User's prompt"
        },
        "urls": {
          "description": "Reference image URLs for image generation or editing",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Output image size ratio",
          "enum": [
            "1:1",
            "2:3",
            "3:2",
            "3:4",
            "4:3",
            "4:5",
            "5:4",
            "9:16",
            "16:9",
            "21:9",
            "1:4",
            "1:8",
            "4:1",
            "8:1"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Output image resolution",
          "enum": [
            "1K",
            "2K",
            "4K"
          ],
          "default": "1K"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "NanoBananaInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "User's prompt"
        },
        "urls": {
          "description": "Reference image URLs for image generation or editing",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Output image size ratio",
          "enum": [
            "1:1",
            "2:3",
            "3:2",
            "3:4",
            "4:3",
            "4:5",
            "5:4",
            "9:16",
            "16:9",
            "21:9",
            "1:4",
            "1:8",
            "4:1",
            "8:1"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Output image resolution",
          "enum": [
            "512px",
            "1K",
            "2K",
            "4K"
          ],
          "default": "1K"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "PixverseInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Video content description",
          "maxLength": 5000
        },
        "resolution": {
          "type": "string",
          "description": "Video resolution tier (affects pricing)",
          "enum": [
            "360p",
            "540p",
            "720p",
            "1080p"
          ],
          "default": "360p"
        },
        "duration": {
          "type": "number",
          "description": "Video duration in seconds (1-15). Transition mode only supports 5 or 8",
          "default": 5
        },
        "size": {
          "type": "string",
          "description": "Video aspect ratio. Only effective in text-to-video and multi-reference fusion modes",
          "enum": [
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16",
            "2:3",
            "3:2",
            "21:9"
          ],
          "default": "16:9"
        },
        "seed": {
          "type": "number",
          "description": "Random seed",
          "default": 0
        },
        "negativePrompt": {
          "type": "string",
          "description": "Negative prompt to exclude unwanted content",
          "maxLength": 2048
        },
        "audio": {
          "type": "boolean",
          "description": "Whether to generate an audio track (increases pricing)",
          "default": false
        },
        "motionMode": {
          "type": "string",
          "description": "Motion mode. pixverse-v6 only supports \"normal\"",
          "enum": [
            "normal"
          ]
        },
        "generateMultiClipSwitch": {
          "type": "boolean",
          "description": "Whether to generate a multi-clip continuous video. Only supported in text-to-video and image-to-video modes",
          "default": false
        },
        "imageUrls": {
          "description": "Input image URL array for image-to-video mode (only the first image is used)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "firstFrameImage": {
          "type": "string",
          "description": "First frame image URL for transition mode. Must be provided together with lastFrameImage"
        },
        "lastFrameImage": {
          "type": "string",
          "description": "Last frame image URL for transition mode. Must be provided together with firstFrameImage"
        },
        "imgReferences": {
          "description": "Reference image URLs for multi-reference fusion mode (1-7 images)",
          "minItems": 1,
          "maxItems": 7,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "extendFromTaskId": {
          "type": "string",
          "description": "Source task ID for video extension mode"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Seedance15ProInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Video content description. Required for text-to-video; optional when image input is provided (maximum 4000 characters).",
          "maxLength": 4000
        },
        "duration": {
          "type": "number",
          "description": "Video duration in seconds",
          "default": 4,
          "minimum": 4,
          "maximum": 15,
          "enum": [
            4,
            8,
            12
          ]
        },
        "size": {
          "type": "string",
          "description": "Video aspect ratio",
          "enum": [
            "16:9",
            "9:16",
            "1:1",
            "4:3",
            "3:4",
            "21:9"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Video resolution",
          "enum": [
            "480p",
            "720p",
            "1080p"
          ],
          "default": "480p"
        },
        "seed": {
          "type": "number",
          "description": "Random seed for controlling randomness"
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Whether to generate audio",
          "default": true
        },
        "imageUrls": {
          "description": "Public image URLs for image-to-video (maximum 9)",
          "maxItems": 9,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageWithRoles": {
          "description": "Images with explicit first_frame / last_frame roles. Cannot be combined with other reference-media fields.",
          "maxItems": 2,
          "type": "array",
          "items": {
            "$ref": "#/$defs/SeedanceImageWithRole"
          }
        },
        "cameraFixed": {
          "type": "boolean",
          "description": "Whether to fix the camera position",
          "default": false
        }
      }
    },
    "Seedance25ImageWithRoleDto": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Public image URL"
        },
        "role": {
          "type": "string",
          "description": "Frame or reference role assigned to this image",
          "enum": [
            "first_frame",
            "last_frame",
            "reference_image"
          ]
        }
      },
      "required": [
        "url",
        "role"
      ]
    },
    "Seedance25InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Video prompt. Reference images, videos and audio positionally in the prompt."
        },
        "duration": {
          "type": "number",
          "description": "Output duration in seconds (4-30). For reference-video jobs, input and output seconds use the reference-input tariff.",
          "default": 5,
          "minimum": 4,
          "maximum": 30
        },
        "size": {
          "type": "string",
          "description": "Output aspect ratio. First/last-frame and extend jobs require adaptive.",
          "enum": [
            "adaptive",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16",
            "21:9"
          ],
          "default": "adaptive"
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution and per-second billing tier",
          "enum": [
            "480p",
            "720p",
            "1080p"
          ],
          "default": "480p"
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Whether the generated video includes audio",
          "default": true
        },
        "seed": {
          "type": "number",
          "description": "Random seed; identical output is not guaranteed"
        },
        "outputFormat": {
          "type": "string",
          "description": "Output video container",
          "enum": [
            "mp4",
            "mov"
          ],
          "default": "mp4"
        },
        "omniReferenceTaskType": {
          "type": "string",
          "description": "Optional task-type hint. edit is unavailable until variable-duration billing settlement is supported.",
          "enum": [
            "auto",
            "reference",
            "extend"
          ],
          "default": "auto"
        },
        "imageUrls": {
          "description": "Reference image URLs (maximum 30 across both image fields). Very narrow or wide images may be padded to a width-to-height ratio of 0.4–2.5 without cropping. In first-frame mode, padding becomes part of the frame.",
          "maxItems": 30,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageWithRoles": {
          "description": "Images with explicit first_frame, last_frame or reference_image roles",
          "maxItems": 30,
          "type": "array",
          "items": {
            "$ref": "#/$defs/Seedance25ImageWithRoleDto"
          }
        },
        "videoUrls": {
          "description": "Public reference-video URLs (maximum 10; 2-30 seconds each and 30 seconds total). Their duration is probed before charging.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Reference audio URLs (maximum 10; 30 seconds total)",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tools": {
          "description": "Optional enhancements such as web search grounding",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Seedance25ToolDto"
          }
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Seedance25SpicyInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Video prompt. Reference images, videos and audio positionally in the prompt."
        },
        "duration": {
          "type": "number",
          "description": "Output duration in seconds (4-30). For reference-video jobs, input and output seconds use the reference-input tariff.",
          "default": 5,
          "minimum": 4,
          "maximum": 30
        },
        "size": {
          "type": "string",
          "description": "Output aspect ratio. First-frame animation and extend jobs require adaptive.",
          "enum": [
            "adaptive",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16",
            "21:9"
          ],
          "default": "adaptive"
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution and per-second billing tier",
          "enum": [
            "480p",
            "720p",
            "1080p"
          ],
          "default": "480p"
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Whether the generated video includes audio",
          "default": true
        },
        "omniReferenceTaskType": {
          "type": "string",
          "description": "auto selects the mode from the supplied media; reference uses all supplied references; extend continues a source video and requires videoUrls. Video editing is unavailable.",
          "enum": [
            "auto",
            "reference",
            "extend"
          ],
          "default": "auto"
        },
        "imageUrls": {
          "description": "Reference image URLs (maximum 30). One image without other media animates the first frame; use reference mode to treat it as a style reference. Images outside a width-to-height ratio of 0.4–2.5 are padded without cropping when preparation succeeds. In first-frame mode, padding becomes part of the frame.",
          "maxItems": 30,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "videoUrls": {
          "description": "Public reference-video URLs (maximum 10; 2-30 seconds each and 30 seconds total). Their duration is probed before charging.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Reference audio URLs (maximum 10; 30 seconds total). Requires at least one reference image or video.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tools": {
          "description": "Optional enhancements such as web search grounding",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Seedance25ToolDto"
          }
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Seedance25ToolDto": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Generation enhancement tool",
          "enum": [
            "web_search"
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "SeedanceImageWithRole": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Image URL"
        },
        "role": {
          "type": "string",
          "description": "Image role: first_frame or last_frame",
          "enum": [
            "first_frame",
            "last_frame"
          ]
        }
      },
      "required": [
        "url",
        "role"
      ]
    },
    "SeedanceInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Video content description. Required unless image or video reference media is provided (maximum 4000 characters).",
          "maxLength": 4000
        },
        "duration": {
          "type": "number",
          "description": "Video duration in seconds (4-15)",
          "default": 5,
          "minimum": 4,
          "maximum": 15
        },
        "size": {
          "type": "string",
          "description": "Video aspect ratio. adaptive follows the input image or video.",
          "enum": [
            "adaptive",
            "16:9",
            "9:16",
            "1:1",
            "4:3",
            "3:4",
            "21:9"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution and per-second billing tier",
          "enum": [
            "480p",
            "720p",
            "1080p",
            "4k"
          ],
          "default": "480p"
        },
        "seed": {
          "type": "number",
          "description": "Random seed for controlling randomness"
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Whether to generate audio",
          "default": true
        },
        "imageUrls": {
          "description": "Public image URLs for image-to-video (maximum 9). Very narrow or wide images may be padded to a width-to-height ratio of 0.4–2.5 without cropping. In first-frame mode, padding becomes part of the frame.",
          "maxItems": 9,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageWithRoles": {
          "description": "Images with explicit first_frame / last_frame roles. Cannot be combined with other reference-media fields.",
          "maxItems": 2,
          "type": "array",
          "items": {
            "$ref": "#/$defs/SeedanceImageWithRole"
          }
        },
        "videoUrls": {
          "description": "Public reference-video URLs (maximum 3; total duration must be more than 1.8s and less than 15.2s). Their duration is probed before charging.",
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Public reference-audio URLs (maximum 3; 15 seconds total). Requires imageUrls or videoUrls.",
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tools": {
          "description": "Optional enhancements such as web search grounding",
          "type": "array",
          "items": {
            "$ref": "#/$defs/SeedanceToolDto"
          }
        }
      }
    },
    "SeedanceToolDto": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Generation enhancement tool",
          "enum": [
            "web_search"
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "Seedream50FlashInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text description for image generation or editing (up to 5000 characters)",
          "maxLength": 5000
        },
        "urls": {
          "description": "Up to 10 reference image URLs for image-to-image mode",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Image aspect ratio",
          "enum": [
            "1:1",
            "4:3",
            "3:4",
            "16:9",
            "9:16",
            "3:2",
            "2:3",
            "21:9"
          ],
          "default": "1:1"
        },
        "resolution": {
          "type": "string",
          "description": "Image resolution",
          "enum": [
            "1K",
            "1.5K",
            "2K"
          ],
          "default": "1.5K"
        },
        "outputFormat": {
          "type": "string",
          "description": "Output image format",
          "enum": [
            "jpeg",
            "png"
          ],
          "default": "jpeg"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "SeedreamInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text description for image generation"
        },
        "urls": {
          "description": "Reference image URLs (URLs or base64 data URIs) for image-to-image mode",
          "maxItems": 14,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Image aspect ratio",
          "enum": [
            "1:1",
            "4:3",
            "3:4",
            "16:9",
            "9:16",
            "3:2",
            "2:3",
            "21:9",
            "9:21",
            "auto"
          ],
          "default": "1:1"
        },
        "resolution": {
          "type": "string",
          "description": "Image resolution",
          "enum": [
            "1K",
            "1.5K",
            "2K",
            "3K",
            "4K"
          ],
          "default": "2K"
        },
        "outputFormat": {
          "type": "string",
          "description": "Output image format (Seedream 5.0 Lite / Pro / Flash only; ignored by other models)",
          "enum": [
            "jpeg",
            "png"
          ],
          "default": "jpeg"
        },
        "promptOptimizeMode": {
          "type": "string",
          "description": "Prompt optimization mode (seedream-4-5 only; ignored by other models)",
          "enum": [
            "standard",
            "fast"
          ],
          "default": "standard"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "SunoCustomModelDto": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Custom model name"
        },
        "audioUrls": {
          "description": "Audio URLs to train on (6–24)",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "name",
        "audioUrls"
      ]
    },
    "SunoInputDto": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "description": "Suno operation",
          "enum": [
            "music",
            "extend",
            "cover",
            "add-instrumental",
            "add-vocals",
            "sound",
            "stems",
            "stems-all",
            "wav",
            "lyrics",
            "voice",
            "timestamped-lyrics",
            "boost-style",
            "music-cover",
            "replace-section",
            "music-video",
            "inspo",
            "upload",
            "remaster",
            "add-stem",
            "vox",
            "remove-section",
            "crop",
            "fade-in",
            "fade-out",
            "adjust-speed",
            "concat",
            "mashup",
            "sample",
            "midi",
            "bpm",
            "custom-model"
          ],
          "default": "music"
        },
        "mv": {
          "type": "string",
          "description": "Engine version. Audio actions: v6 (default) | v6-wild | v6-mini | custom. The retired versions v3.5 … v5.5 are still accepted and run on v6. lyrics: remi-v1 | default. Not used by stems/stems-all/wav/voice. variety, maxMode, audioFormat, duration and customModelId need a V6 engine (any value except custom)."
        },
        "custom": {
          "type": "boolean",
          "description": "false for simple mode, true for custom mode"
        },
        "gptDescriptionPrompt": {
          "type": "string",
          "description": "Simple mode: song / effect description (with optional lyrics)"
        },
        "prompt": {
          "type": "string",
          "description": "Custom mode: detailed lyrics / prompt (also the lyrics or sound description)"
        },
        "tags": {
          "type": "string",
          "description": "Custom mode: genre / style tags"
        },
        "title": {
          "type": "string",
          "description": "Title for the result"
        },
        "makeInstrumental": {
          "type": "boolean",
          "description": "Generate an instrumental-only track",
          "default": false
        },
        "negativeTags": {
          "type": "string",
          "description": "Styles to avoid (custom mode / sound)"
        },
        "personaId": {
          "type": "string",
          "description": "ID of a custom voice (persona) to sing the generated music"
        },
        "customModel": {
          "description": "Inline custom model definition (required when mv=custom)",
          "allOf": [
            {
              "$ref": "#/$defs/SunoCustomModelDto"
            }
          ]
        },
        "customModelId": {
          "type": "string",
          "description": "Id of a reusable custom model created by the `custom-model` action (its `output.customModelId`). Generates in that model's style; cannot be combined with mv or personaId."
        },
        "variety": {
          "type": "string",
          "description": "Style variation: off | normal | high | extra | max. V6 generative actions.",
          "enum": [
            "off",
            "normal",
            "high",
            "extra",
            "max"
          ]
        },
        "maxMode": {
          "type": "boolean",
          "description": "Max mode: higher-quality V6 generation, billed at twice the regular price. Requires custom mode, except on inspo and replace-section.",
          "default": false
        },
        "audioFormat": {
          "type": "string",
          "description": "Output audio format: mp3 | m4a | wav. V6 generative actions plus sound, remaster, stems and stems-all.",
          "enum": [
            "mp3",
            "m4a",
            "wav"
          ]
        },
        "duration": {
          "type": "number",
          "description": "music / extend / cover: target length in seconds (10–360), custom mode only. The actual length is decided by the model.",
          "minimum": 10,
          "maximum": 360
        },
        "audioUrl": {
          "type": "string",
          "description": "Audio file URL to operate on"
        },
        "continueAt": {
          "type": "number",
          "description": "extend: time in seconds where the extension should begin (at least 1 for a sourceTaskId or audioUrl source)"
        },
        "sourceTaskId": {
          "type": "string",
          "description": "Reference to one of your prior Suno generations (its taskId), used by stateful actions such as extend, music-cover, replace-section, timestamped-lyrics, music-video, voice and wav."
        },
        "audioId": {
          "type": "string",
          "description": "The track to operate on, identified by its id (as returned in a prior generation's `output.tracks[].audioId`). A generation usually produces 2 tracks; omit to use the first."
        },
        "fullLyrics": {
          "type": "string",
          "description": "replace-section: complete lyrics for the whole track after the edit"
        },
        "author": {
          "type": "string",
          "description": "music-video: artist / creator name on the cover (max 50)"
        },
        "domainName": {
          "type": "string",
          "description": "music-video: brand / site watermark at the bottom (max 50)"
        },
        "aspectRatio": {
          "type": "string",
          "description": "music-video: output aspect ratio",
          "enum": [
            "9:16",
            "16:9",
            "1:1",
            "3:4",
            "4:3"
          ],
          "default": "9:16"
        },
        "backgroundColors": {
          "description": "music-video: 1–4 hex colors for the blurred gradient backdrop (e.g. [\"#1B2635\", \"#8A6A4F\"])",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageUrl": {
          "type": "string",
          "description": "music-video: cover image URL to show inside the ring (default: the source track's cover art when available)"
        },
        "quality": {
          "type": "string",
          "description": "music-video: output quality. `compact` — small share-friendly file (~5MB / 3 min); `high` — sharper 720p-class output at roughly double the size; `max` — 1080p-class, ~4× compact",
          "enum": [
            "compact",
            "high",
            "max"
          ],
          "default": "compact"
        },
        "startS": {
          "type": "number",
          "description": "Start time (seconds) of the affected range. Used by remove-section / crop / sample (the range), replace-section (the infill range) and vox / voice-from-track (the vocal window)."
        },
        "endS": {
          "type": "number",
          "description": "End time (seconds) of the affected range (> startS). See startS for the actions that use it."
        },
        "bpm": {
          "type": "number",
          "description": "sound: tempo in BPM"
        },
        "key": {
          "type": "string",
          "description": "sound: musical key (Major C–B; Minor Cm–Bm)"
        },
        "type": {
          "type": "string",
          "description": "sound: 'one-shot' or 'loop' (defaults to one-shot)",
          "enum": [
            "one-shot",
            "loop"
          ]
        },
        "voiceAudioUrl": {
          "type": "string",
          "description": "voice: URL to the voice recording"
        },
        "verificationAudioUrl": {
          "type": "string",
          "description": "voice: URL to the verification-phrase recording"
        },
        "phraseId": {
          "type": "string",
          "description": "voice: phrase ID from the verification-phrase endpoint"
        },
        "name": {
          "type": "string",
          "description": "voice / custom-model: name"
        },
        "description": {
          "type": "string",
          "description": "voice: description"
        },
        "styles": {
          "type": "string",
          "description": "voice: genre tags (e.g. 'funk edm')"
        },
        "singerSkillLevel": {
          "type": "string",
          "description": "voice: singer skill level",
          "enum": [
            "Beginner",
            "Intermediate",
            "Advanced",
            "Professional"
          ]
        },
        "audioUrls": {
          "description": "Public audio URLs. inspo: 1–4 inspiration references; custom-model: 6–24 training tracks (MP3, WAV or M4A).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "styleWeight": {
          "type": "number",
          "description": "Style weight (0.00–1.00)"
        },
        "weirdnessConstraint": {
          "type": "number",
          "description": "Creativity / weirdness weight (0.00–1.00)"
        },
        "audioWeight": {
          "type": "number",
          "description": "Audio weight (0.00–1.00)"
        },
        "vocalGender": {
          "type": "string",
          "description": "Vocal gender: Male or Female",
          "enum": [
            "Male",
            "Female"
          ]
        },
        "autoLyrics": {
          "type": "boolean",
          "description": "inspo: rewrite the provided lyrics creatively"
        },
        "variationCategory": {
          "type": "string",
          "description": "remaster: intensity (subtle / normal / high)",
          "enum": [
            "subtle",
            "normal",
            "high"
          ]
        },
        "stemType": {
          "type": "string",
          "description": "stems: which stem to extract (e.g. lead_vocal, backing_vocals, drum_kit, bass, piano, electric_guitar). Defaults to lead_vocal."
        },
        "voxAudioId": {
          "type": "string",
          "description": "Deprecated and ignored: a persona is now created straight from the track (voice with sourceTaskId), no vox extraction needed.",
          "deprecated": true
        },
        "durationS": {
          "type": "number",
          "description": "fade-in / fade-out: fade duration in seconds"
        },
        "speed": {
          "type": "number",
          "description": "adjust-speed: speed multiplier (0.25–4)"
        },
        "keepPitch": {
          "type": "boolean",
          "description": "adjust-speed: keep the original pitch (defaults to true)"
        },
        "sourceTaskIds": {
          "description": "mashup: exactly 2 prior suno generation ids (taskIds) to remix together",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioIds": {
          "description": "mashup: parallel array to sourceTaskIds selecting the track in each source by its audioId (as returned in output.tracks[].audioId); omit an entry to use that source's first track",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Veo3InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "User's prompt"
        },
        "aspectRatio": {
          "type": "string",
          "description": "Aspect ratio",
          "enum": [
            "16:9",
            "9:16"
          ],
          "default": "16:9"
        },
        "urls": {
          "description": "Image URLs for video generation",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "resolution": {
          "type": "string",
          "description": "Video resolution quality",
          "enum": [
            "720p",
            "1080p",
            "4k"
          ],
          "default": "1080p"
        },
        "generationType": {
          "type": "string",
          "description": "Generation type for VEO3 model",
          "enum": [
            "frame",
            "reference"
          ]
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Veo3LiteInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "User's prompt"
        },
        "aspectRatio": {
          "type": "string",
          "description": "Aspect ratio",
          "enum": [
            "16:9",
            "9:16"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Video resolution quality",
          "enum": [
            "720p",
            "1080p",
            "4k"
          ],
          "default": "1080p"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Wan27ImageInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text description for image generation",
          "maxLength": 5000
        },
        "urls": {
          "description": "Reference images for editing (1-4 URLs). Providing them switches the request to edit mode. Order matters: reference them as image 1, image 2, etc. in the prompt.",
          "minItems": 1,
          "maxItems": 4,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Output aspect ratio (ignored when width + height are provided)",
          "enum": [
            "1:1",
            "16:9",
            "9:16",
            "4:3",
            "3:4",
            "3:2",
            "2:3"
          ],
          "default": "1:1"
        },
        "width": {
          "type": "number",
          "description": "Custom output width in pixels (requires height). Overrides size."
        },
        "height": {
          "type": "number",
          "description": "Custom output height in pixels (requires width). Overrides size."
        },
        "seed": {
          "type": "number",
          "description": "Random seed for reproducible output"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Wan27VideoInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text prompt. Required for text-to-video, reference-to-video and edit-video; optional for image-to-video."
        },
        "imageUrls": {
          "description": "Image-to-video frames. First URL is the starting frame, an optional second URL is the ending frame. Providing this selects the image-to-video workflow.",
          "maxItems": 2,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "referenceImageUrls": {
          "description": "Reference images for the reference-to-video workflow. Requires a prompt.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "referenceVideoUrls": {
          "description": "Reference videos for the reference-to-video workflow. Requires a prompt.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "editVideoUrl": {
          "type": "string",
          "description": "Source video to edit. Providing this selects the edit-video workflow (requires a prompt)."
        },
        "referenceImageUrl": {
          "type": "string",
          "description": "Optional reference image guiding the edit-video workflow."
        },
        "continueVideoUrl": {
          "type": "string",
          "description": "Source video to continue or extend. Selects the video-continuation workflow. Cannot be combined with imageUrls or audioUrl. Supported duration is 2-10 seconds."
        },
        "audioUrl": {
          "type": "string",
          "description": "Optional audio URL (text-to-video and image-to-video workflows)."
        },
        "size": {
          "type": "string",
          "description": "Aspect ratio (text-to-video, reference-to-video and edit-video). Ignored for image-to-video, where it is derived from the input frames.",
          "enum": [
            "16:9",
            "9:16",
            "1:1",
            "4:3",
            "3:4"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution",
          "enum": [
            "720p",
            "1080p"
          ],
          "default": "720p"
        },
        "duration": {
          "type": "number",
          "description": "Video duration in seconds (2-15). Allowed values depend on the resolved workflow: text-to-video accepts 5/10/15, image-to-video 2-15, reference-to-video 2-10, edit-video 0 or 2-10 (0 lets PoYo detect the source video duration)."
        },
        "multiShots": {
          "type": "boolean",
          "description": "Enable multi-shot generation (image, reference and edit workflows)."
        },
        "audioSetting": {
          "type": "string",
          "description": "Audio setting for the edit-video workflow."
        },
        "seed": {
          "type": "number",
          "description": "Random seed for controlling randomness"
        },
        "enableSafetyChecker": {
          "type": "boolean",
          "description": "Enable the model's safety checker"
        }
      }
    },
    "Wan30ImageWithRoleDto": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Image address (public URL or data:image/...;base64,...)"
        },
        "role": {
          "type": "string",
          "description": "Role of the image. first_frame/last_frame belong to the frame family, reference_image to the reference family; the two cannot be mixed.",
          "enum": [
            "first_frame",
            "last_frame",
            "reference_image"
          ]
        }
      },
      "required": [
        "url"
      ]
    },
    "Wan30VideoInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text description. Required unless at least one media input is supplied. In reference mode you can address assets positionally with \"图N / 视频N / 音频N\" labels; indices run per media type.",
          "maxLength": 20000
        },
        "imageUrls": {
          "description": "Image URLs without explicit roles. In the frame family the first item is the start frame and an optional second is the end frame; in the reference family every item is a reference image (up to 10).",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageWithRoles": {
          "description": "Images with explicit roles. Use this when you need first/last frame or reference images stated outright rather than inferred from order.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "$ref": "#/$defs/Wan30ImageWithRoleDto"
          }
        },
        "videoUrls": {
          "description": "Reference videos, up to 5 clips of 1-15s each (total <= 15s). Input video duration plus the requested output duration must stay within 30 seconds.",
          "maxItems": 5,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Reference audio, up to 5 clips of 1-15s each (total <= 15s).",
          "maxItems": 5,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fileUrl": {
          "type": "string",
          "description": "Reference document driving the generation (docx/xlsx/pptx/pdf/txt/md and similar, <=100MB, <=50 pages). Cannot be combined with linkUrl. A prompt is optional when this is supplied."
        },
        "linkUrl": {
          "type": "string",
          "description": "Public, login-free web page to turn into a video. Cannot be combined with fileUrl."
        },
        "generationType": {
          "type": "string",
          "description": "How bare imageUrls are classified: frame (first/last frame) or reference. Omit to let it be inferred — reference when the request already carries reference-family inputs, frame otherwise.",
          "enum": [
            "frame",
            "reference"
          ]
        },
        "size": {
          "type": "string",
          "description": "Aspect ratio. `adaptive` lets the model pick one from the inputs.",
          "enum": [
            "adaptive",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16"
          ],
          "default": "adaptive"
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution. Each tier is billed at its own per-second rate, so 1080p costs four times 480p for the same duration.",
          "enum": [
            "480p",
            "720p",
            "1080p"
          ],
          "default": "480p"
        },
        "duration": {
          "type": "number",
          "description": "Duration in seconds (2-30). Billing is per second at the resolution's rate. With reference videos, total input video duration plus this value must be at most 30 seconds.",
          "default": 5,
          "minimum": 2,
          "maximum": 30
        },
        "audio": {
          "type": "boolean",
          "description": "Include an audio track in the output.",
          "default": true
        },
        "seed": {
          "type": "number",
          "description": "Random seed for controlling randomness",
          "minimum": 0,
          "maximum": 2147483647
        }
      }
    },
    "Wan30VideoProInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text description. Required unless at least one media input is supplied. In reference mode you can address assets positionally with \"图N / 视频N / 音频N\" labels; indices run per media type.",
          "maxLength": 20000
        },
        "imageUrls": {
          "description": "Image URLs without explicit roles. In the frame family the first item is the start frame and an optional second is the end frame; in the reference family every item is a reference image (up to 10).",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageWithRoles": {
          "description": "Images with explicit roles. Use this when you need first/last frame or reference images stated outright rather than inferred from order.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "$ref": "#/$defs/Wan30ImageWithRoleDto"
          }
        },
        "videoUrls": {
          "description": "Reference videos, up to 5 clips of 1-15s each (total <= 15s). Input video duration plus the requested output duration must stay within 30 seconds.",
          "maxItems": 5,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Reference audio, up to 5 clips of 1-15s each (total <= 15s).",
          "maxItems": 5,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fileUrl": {
          "type": "string",
          "description": "Reference document driving the generation (docx/xlsx/pptx/pdf/txt/md and similar, <=100MB, <=50 pages). Cannot be combined with linkUrl. A prompt is optional when this is supplied."
        },
        "linkUrl": {
          "type": "string",
          "description": "Public, login-free web page to turn into a video. Cannot be combined with fileUrl."
        },
        "generationType": {
          "type": "string",
          "description": "How bare imageUrls are classified: frame (first/last frame) or reference. Omit to let it be inferred — reference when the request already carries reference-family inputs, frame otherwise.",
          "enum": [
            "frame",
            "reference"
          ]
        },
        "size": {
          "type": "string",
          "description": "Aspect ratio. `adaptive` lets the model pick one from the inputs.",
          "enum": [
            "adaptive",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16"
          ],
          "default": "adaptive"
        },
        "duration": {
          "type": "number",
          "description": "Duration in seconds (2-30). Billing is per second at the resolution's rate. With reference videos, total input video duration plus this value must be at most 30 seconds.",
          "default": 5,
          "minimum": 2,
          "maximum": 30
        },
        "audio": {
          "type": "boolean",
          "description": "Include an audio track in the output.",
          "default": true
        },
        "resolution": {
          "type": "string",
          "description": "Output resolution. Billing is per second, including reference video seconds.",
          "enum": [
            "480p",
            "720p",
            "1080p",
            "2K",
            "4K"
          ],
          "default": "480p"
        },
        "promptExtend": {
          "type": "boolean",
          "description": "Let the model expand the prompt. Set false to keep the literal prompt.",
          "default": true
        }
      }
    },
    "ZImageInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Text description for image generation",
          "maxLength": 1000
        },
        "urls": {
          "description": "Optional reference image for editing (exactly one URL). Providing it switches the request to image editing.",
          "maxItems": 1,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Image aspect ratio. Required for text-to-image; optional for image editing (defaults to following the reference image).",
          "enum": [
            "1:1",
            "4:3",
            "3:4",
            "16:9",
            "9:16"
          ],
          "default": "1:1"
        },
        "enableSafetyChecker": {
          "type": "boolean",
          "description": "Enable the model's safety checker (defaults to true)"
        }
      },
      "required": [
        "prompt"
      ]
    }
  }
}