{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/apihubs-ru/json-schema/apihubs-ru-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/apihubs-ru-openapi.json#/components/schemas/CreateGenerationRequestDto",
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Модель генерации. Устаревшие идентификаторы по-прежнему принимаются и сопоставляются с текущей моделью: `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": "Параметры генерации (структура зависит от модели)",
      "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": "Вебхук для результата"
    }
  },
  "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": "Соотношение сторон видео",
          "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": "Случайное зерно"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Flux3ImageInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Описание изображения или инструкции по редактированию. Указания по расположению и ограничивающим рамкам можно включить в промпт."
        },
        "urls": {
          "description": "URL референсов для редактирования или генерации по нескольким изображениям (до 10). Для генерации по тексту не передавайте.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон. Auto следует первому референсу либо выбирает пропорции по промпту при генерации по тексту.",
          "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": "Разрешение результата; определяет цену одного изображения.",
          "enum": [
            "768SQ",
            "1K",
            "1.5K",
            "2K",
            "4K"
          ],
          "default": "1K"
        },
        "grounding": {
          "type": "boolean",
          "description": "Разрешить поиск в интернете и поиск изображений перед генерацией. Референсы и поиск не оплачиваются отдельно.",
          "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": "Подсказка пользователя"
        },
        "urls": {
          "description": "URL-адреса изображений для справки (URL-адреса или данные base64) для режима изображения в изображение",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон выходного изображения. Для моделей GPT Image 2.5 соотношения 1:3 и 3:1 требуют разрешения 2k или 4k.",
          "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": "Разрешение выходного изображения",
          "enum": [
            "1k",
            "2k",
            "4k"
          ],
          "default": "1k"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "GrokImagine2ImageInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Текстовое описание для генерации изображения"
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон изображения",
          "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": "Текстовое описание для генерации изображения"
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон изображения",
          "enum": [
            "1:1",
            "16:9",
            "9:16",
            "3:2",
            "2:3"
          ],
          "default": "1:1"
        },
        "urls": {
          "description": "Ссылки на изображения для режима «изображение-изображение»",
          "maxItems": 1,
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "prompt"
      ]
    },
    "GrokImagineInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Описание видеоконтента"
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон / размер видео",
          "enum": [
            "16:9",
            "9:16",
            "1:1",
            "3:2",
            "2:3"
          ],
          "default": "16:9"
        },
        "duration": {
          "type": "number",
          "description": "Длительность видео в секундах",
          "enum": [
            6,
            10,
            15,
            20,
            25,
            30
          ],
          "default": 6
        },
        "resolution": {
          "type": "string",
          "description": "Разрешение видео",
          "enum": [
            "480p",
            "720p"
          ],
          "default": "480p"
        },
        "urls": {
          "description": "Ссылки на изображения для режима «изображение-видео»",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Kling3InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Описание видеоконтента",
          "maxLength": 2500
        },
        "resolution": {
          "type": "string",
          "description": "Уровень разрешения видео (влияет на цену)",
          "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": "Необязательный текст сцены"
        },
        "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": "Режим ориентации персонажа. Определяет, чья ориентация задаёт трансфер движения",
          "enum": [
            "image",
            "video"
          ]
        },
        "resolution": {
          "type": "string",
          "description": "Выходное разрешение",
          "enum": [
            "720p",
            "1080p"
          ],
          "default": "720p"
        }
      },
      "required": [
        "imageUrls",
        "videoUrls",
        "characterOrientation"
      ]
    },
    "MidjourneyInputDto": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "description": "Действие / эндпоинт Midjourney. По умолчанию 'imagine' (текст в изображение). Последующие действия ссылаются на предыдущую генерацию через '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": "Подсказка; обязательна для imagine/edits. Разрешены встроенные флаги MJ (например, '--ar 16:9 --v 6.1'). Структурные поля тела переопределяют флаги подсказки."
        },
        "imageUrls": {
          "description": "URL изображений или данные URIs в base64. Используется как: направляющее изображение (imagine), источник (редактирование), набор для смешивания (2–4), описание (1).",
          "maxItems": 16,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "parentTaskId": {
          "type": "string",
          "description": "ID генерации родителя (предыдущее генерация 'midjourney' в нашей системе) для последующих действий (масштабирование/вариация/перезапуск/увеличение/панорамирование/инпэйнт/модальный режим/ремикс). На его основе определяется ID исходной задачи."
        },
        "index": {
          "type": "number",
          "description": "Индекс плитки (1–4) для масштабирования/вариации/увеличения/панорамирования/инпэйнт/ремикс, когда 'customId' не предоставлен.",
          "minimum": 1,
          "maximum": 4
        },
        "customId": {
          "type": "string",
          "description": "Исходный ID кнопки MJ для действия; если установлен, соответствие по 'index'/'direction' пропускается."
        },
        "speed": {
          "type": "string",
          "description": "Режим скорости. 'relax' (по умолчанию) не добавляет суффикс к оплате.",
          "enum": [
            "relax",
            "fast",
            "turbo"
          ],
          "default": "relax"
        },
        "direction": {
          "type": "string",
          "description": "Направление панорамирования (action=pan).",
          "enum": [
            "left",
            "right",
            "up",
            "down"
          ]
        },
        "zoomRatio": {
          "type": "number",
          "description": "Коэффициент увеличения (action=zoom). < 2 → уменьшение масштаба 1.5x; пропущено или >= 2 → 2x."
        },
        "maskUrl": {
          "type": "string",
          "description": "URL изображения маски или base64 (action=modal). Белый = перерисовать, прозрачный = оставить."
        },
        "dimensions": {
          "type": "string",
          "description": "Предустановка соотношения для смешивания (action=blend); переопределяется параметром 'size'.",
          "enum": [
            "SQUARE",
            "PORTRAIT",
            "LANDSCAPE"
          ],
          "default": "SQUARE"
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон 'w:h' (--ar), например, '16:9', '1:1', '21:9'."
        },
        "quality": {
          "type": "string",
          "description": "Качество (--q).",
          "enum": [
            "0.25",
            "0.5",
            "1",
            "2"
          ]
        },
        "style": {
          "type": "string",
          "description": "Стиль (--style), например, 'raw'."
        },
        "version": {
          "type": "string",
          "description": "Основная версия MJ (--v). С 'niji: true' и '7'/'6' нормализуется до Niji.",
          "enum": [
            "8.1",
            "7",
            "6.1",
            "5.2",
            "5.1"
          ]
        },
        "seed": {
          "type": "number",
          "description": "Семя (--seed)."
        },
        "negativePrompt": {
          "type": "string",
          "description": "Негативный промпт (--no), например, 'уродливый, размытый'."
        },
        "stylize": {
          "type": "number",
          "description": "Стилизация (--s), 0–1000."
        },
        "chaos": {
          "type": "number",
          "description": "Хаос (--c), 0–100."
        },
        "weird": {
          "type": "number",
          "description": "Странность (--w), 0–3000."
        },
        "tile": {
          "type": "boolean",
          "description": "Режим плитки (--tile)."
        },
        "niji": {
          "type": "boolean",
          "description": "Переключатель Niji (--niji). Использовать с версией 7/6."
        },
        "iw": {
          "type": "number",
          "description": "Вес изображения (--iw), 0–3."
        },
        "cw": {
          "type": "number",
          "description": "Вес персонажа (--cw), 0–100."
        },
        "sw": {
          "type": "number",
          "description": "Вес стиля (--sw), 0–1000."
        },
        "cref": {
          "type": "string",
          "description": "URL ссылки на персонажа (--cref)."
        },
        "sref": {
          "type": "string",
          "description": "URL ссылки на стиль (--sref)."
        },
        "dref": {
          "type": "string",
          "description": "URL ссылки на глубину (--dref)."
        },
        "dw": {
          "type": "number",
          "description": "Вес глубины (--dw), 0–100."
        },
        "repeat": {
          "type": "number",
          "description": "Повтор (--repeat), 2–40."
        },
        "raw": {
          "type": "boolean",
          "description": "Сырой стиль (--raw), v5.1+."
        },
        "draft": {
          "type": "boolean",
          "description": "Режим черновика (--draft), v7+."
        },
        "hd": {
          "type": "boolean",
          "description": "HD режим (--hd), только v8/v8.1."
        },
        "stop": {
          "type": "number",
          "description": "Раннее завершение (--stop), 10–100; только v5–6.1 / niji 5–6."
        },
        "extra": {
          "type": "string",
          "description": "Эвакуационный шлюз добавляется к подсказке дословно (любое '--xxx')."
        }
      }
    },
    "MidjourneyVideoInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Видео подсказка; необязательно при повторном использовании основной задачи."
        },
        "imageUrls": {
          "description": "Изображение первого кадра (1 изображение, URL или base64). Один из imageUrls / parentTaskId.",
          "maxItems": 1,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "parentTaskId": {
          "type": "string",
          "description": "Идентификатор родительской генерации (успешная генерация изображения 'midjourney'), который будет использован как источник. Один из imageUrls / parentTaskId."
        },
        "index": {
          "type": "number",
          "description": "Какой тайл на сетке родительского изображения является первым кадром (0–3).",
          "minimum": 0,
          "maximum": 3
        },
        "videoType": {
          "type": "string",
          "description": "Разрешение / уровень режима. Уровни 720 оплачиваются по тарифу 720p.",
          "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": "Режим анимации. 'auto' требует parentTaskId + индекс.",
          "enum": [
            "manual",
            "auto"
          ],
          "default": "manual"
        },
        "motion": {
          "type": "string",
          "description": "Сила движения. Не влияет на оплату.",
          "enum": [
            "low",
            "high"
          ],
          "default": "high"
        },
        "batchSize": {
          "type": "number",
          "description": "Размер партии (1 / 2 / 4). Оплата × N.",
          "enum": [
            1,
            2,
            4
          ],
          "default": 1
        },
        "endUrl": {
          "type": "string",
          "description": "Конечный кадр; при установке videoType автоматически повышается до стартового/конечного уровня."
        }
      }
    },
    "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": "Соотношение сторон видео",
          "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": "Случайное зерно"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "NanoBanana21InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Подсказка пользователя"
        },
        "urls": {
          "description": "Ссылки на изображения для генерации или редактирования изображений",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Соотношение размеров выходного изображения",
          "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": "Разрешение выходного изображения",
          "enum": [
            "1K",
            "2K",
            "4K"
          ],
          "default": "1K"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "NanoBananaInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Подсказка пользователя"
        },
        "urls": {
          "description": "Ссылки на изображения для генерации или редактирования изображений",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Соотношение размеров выходного изображения",
          "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": "Разрешение выходного изображения",
          "enum": [
            "512px",
            "1K",
            "2K",
            "4K"
          ],
          "default": "1K"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "PixverseInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Описание видеоконтента",
          "maxLength": 5000
        },
        "resolution": {
          "type": "string",
          "description": "Уровень разрешения видео (влияет на цену)",
          "enum": [
            "360p",
            "540p",
            "720p",
            "1080p"
          ],
          "default": "360p"
        },
        "duration": {
          "type": "number",
          "description": "Продолжительность видео в секундах (1-15). Режим перехода поддерживает только 5 или 8 секунд",
          "default": 5
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон видео. Эффективно только в режимах текст-видео и мультиэталонного слияния",
          "enum": [
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16",
            "2:3",
            "3:2",
            "21:9"
          ],
          "default": "16:9"
        },
        "seed": {
          "type": "number",
          "description": "Случайное зерно",
          "default": 0
        },
        "negativePrompt": {
          "type": "string",
          "description": "Негативный запрос для исключения нежелательного контента",
          "maxLength": 2048
        },
        "audio": {
          "type": "boolean",
          "description": "Генерировать аудиодорожку (увеличивает стоимость)",
          "default": false
        },
        "motionMode": {
          "type": "string",
          "description": "Режим движения. pixverse-v6 поддерживает только \"normal\"",
          "enum": [
            "normal"
          ]
        },
        "generateMultiClipSwitch": {
          "type": "boolean",
          "description": "Генерировать мультиклиповое непрерывное видео. Поддерживается только в режимах текст-видео и изображение-видео",
          "default": false
        },
        "imageUrls": {
          "description": "Массив URL изображений для режима изображение-видео (используется только первое изображение)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "firstFrameImage": {
          "type": "string",
          "description": "URL изображения первого кадра для режима перехода. Должен предоставляться вместе с lastFrameImage"
        },
        "lastFrameImage": {
          "type": "string",
          "description": "URL изображения последнего кадра для режима перехода. Должен предоставляться вместе с firstFrameImage"
        },
        "imgReferences": {
          "description": "URL-адреса эталонных изображений для режима многоссылочной фузии (1–7 изображений)",
          "minItems": 1,
          "maxItems": 7,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "extendFromTaskId": {
          "type": "string",
          "description": "ID исходной задачи для режима расширения видео"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Seedance15ProInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Описание видеоконтента. Обязательно для преобразования текста в видео; необязательно при предоставлении изображения (максимум 4000 символов).",
          "maxLength": 4000
        },
        "duration": {
          "type": "number",
          "description": "Длительность видео в секундах",
          "default": 4,
          "minimum": 4,
          "maximum": 15,
          "enum": [
            4,
            8,
            12
          ]
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон видео",
          "enum": [
            "16:9",
            "9:16",
            "1:1",
            "4:3",
            "3:4",
            "21:9"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Разрешение видео",
          "enum": [
            "480p",
            "720p",
            "1080p"
          ],
          "default": "480p"
        },
        "seed": {
          "type": "number",
          "description": "Случайное значение для контроля случайности"
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Генерировать ли аудио",
          "default": true
        },
        "imageUrls": {
          "description": "Публичные URL изображений для создания видео из изображений (максимум 9)",
          "maxItems": 9,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageWithRoles": {
          "description": "Изображения с явными ролями first_frame / last_frame. Не может комбинироваться с другими полями reference-media.",
          "maxItems": 2,
          "type": "array",
          "items": {
            "$ref": "#/$defs/SeedanceImageWithRole"
          }
        },
        "cameraFixed": {
          "type": "boolean",
          "description": "Фиксировать ли положение камеры",
          "default": false
        }
      }
    },
    "Seedance25ImageWithRoleDto": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Публичный URL изображения"
        },
        "role": {
          "type": "string",
          "description": "Роль кадра или референса, присвоенная этому изображению",
          "enum": [
            "first_frame",
            "last_frame",
            "reference_image"
          ]
        }
      },
      "required": [
        "url",
        "role"
      ]
    },
    "Seedance25InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Видеоподсказка. Позиционированные в подсказке изображения, видео и аудио-референсы."
        },
        "duration": {
          "type": "number",
          "description": "Продолжительность вывода в секундах (4-30). Для задач с видео-референсом входные и выходные секунды используют тариф референс-ввода.",
          "default": 5,
          "minimum": 4,
          "maximum": 30
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон вывода. Задания по первому/последнему кадру и расширению требуют адаптивного режима.",
          "enum": [
            "adaptive",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16",
            "21:9"
          ],
          "default": "adaptive"
        },
        "resolution": {
          "type": "string",
          "description": "Выходное разрешение и тариф за секунду",
          "enum": [
            "480p",
            "720p",
            "1080p"
          ],
          "default": "480p"
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Будет ли сгенерированное видео с аудио",
          "default": true
        },
        "seed": {
          "type": "number",
          "description": "Случайное значение; идентичный вывод не гарантирован"
        },
        "outputFormat": {
          "type": "string",
          "description": "Контейнер выходного видео",
          "enum": [
            "mp4",
            "mov"
          ],
          "default": "mp4"
        },
        "omniReferenceTaskType": {
          "type": "string",
          "description": "Необязательная подсказка типа задачи. Редактирование недоступно до поддержки расчетов по переменной продолжительности.",
          "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": "Изображения с явными ролями first_frame, last_frame или reference_image",
          "maxItems": 30,
          "type": "array",
          "items": {
            "$ref": "#/$defs/Seedance25ImageWithRoleDto"
          }
        },
        "videoUrls": {
          "description": "Публичные URL-адреса видео для справки (максимум 10; по 2–30 секунд каждый и 30 секунд всего). Их продолжительность проверяется перед оплатой.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "URL-адреса аудио для справки (максимум 10; всего 30 секунд)",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tools": {
          "description": "Необязательные улучшения, такие как привязка к веб-поиску",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Seedance25ToolDto"
          }
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Seedance25SpicyInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Видеоподсказка. Позиционированные в подсказке изображения, видео и аудио-референсы."
        },
        "duration": {
          "type": "number",
          "description": "Продолжительность вывода в секундах (4-30). Для задач с видео-референсом входные и выходные секунды используют тариф референс-ввода.",
          "default": 5,
          "minimum": 4,
          "maximum": 30
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон результата. Анимация первого кадра и продолжение видео требуют adaptive.",
          "enum": [
            "adaptive",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16",
            "21:9"
          ],
          "default": "adaptive"
        },
        "resolution": {
          "type": "string",
          "description": "Выходное разрешение и тариф за секунду",
          "enum": [
            "480p",
            "720p",
            "1080p"
          ],
          "default": "480p"
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Будет ли сгенерированное видео с аудио",
          "default": true
        },
        "omniReferenceTaskType": {
          "type": "string",
          "description": "auto выбирает режим по переданным медиа; reference использует все референсы; extend продолжает исходное видео и требует videoUrls. Редактирование видео недоступно.",
          "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": "Публичные URL-адреса видео для справки (максимум 10; по 2–30 секунд каждый и 30 секунд всего). Их продолжительность проверяется перед оплатой.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "URL аудиореференсов (до 10; до 30 секунд суммарно). Требуется хотя бы одно изображение или видео.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tools": {
          "description": "Необязательные улучшения, такие как привязка к веб-поиску",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Seedance25ToolDto"
          }
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Seedance25ToolDto": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Инструмент улучшения генерации",
          "enum": [
            "web_search"
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "SeedanceImageWithRole": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL изображения"
        },
        "role": {
          "type": "string",
          "description": "Роль изображения: first_frame или last_frame",
          "enum": [
            "first_frame",
            "last_frame"
          ]
        }
      },
      "required": [
        "url",
        "role"
      ]
    },
    "SeedanceInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Описание видеоконтента. Обязательно, если не предоставлены изображения или видеоматериалы для справки (максимум 4000 символов).",
          "maxLength": 4000
        },
        "duration": {
          "type": "number",
          "description": "Продолжительность видео в секундах (4-15)",
          "default": 5,
          "minimum": 4,
          "maximum": 15
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон видео. adaptive следует входному изображению или видео.",
          "enum": [
            "adaptive",
            "16:9",
            "9:16",
            "1:1",
            "4:3",
            "3:4",
            "21:9"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Выходное разрешение и тариф за секунду",
          "enum": [
            "480p",
            "720p",
            "1080p",
            "4k"
          ],
          "default": "480p"
        },
        "seed": {
          "type": "number",
          "description": "Случайное значение для контроля случайности"
        },
        "generateAudio": {
          "type": "boolean",
          "description": "Генерировать ли аудио",
          "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": "Изображения с явными ролями first_frame / last_frame. Не может комбинироваться с другими полями reference-media.",
          "maxItems": 2,
          "type": "array",
          "items": {
            "$ref": "#/$defs/SeedanceImageWithRole"
          }
        },
        "videoUrls": {
          "description": "Публичные URL для видео-референсов (максимум 3; общая длительность должна быть больше 1.8 с и меньше 15.2 с). Их длительность проверяется перед оплатой.",
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Публичные URL для аудио-референсов (максимум 3; общая длительность 15 секунд). Требует imageUrls или videoUrls.",
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tools": {
          "description": "Необязательные улучшения, такие как привязка к веб-поиску",
          "type": "array",
          "items": {
            "$ref": "#/$defs/SeedanceToolDto"
          }
        }
      }
    },
    "SeedanceToolDto": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Инструмент улучшения генерации",
          "enum": [
            "web_search"
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "Seedream50FlashInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Текстовое описание для создания или редактирования изображения (до 5000 символов)",
          "maxLength": 5000
        },
        "urls": {
          "description": "До 10 URL изображений для редактирования",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон изображения",
          "enum": [
            "1:1",
            "4:3",
            "3:4",
            "16:9",
            "9:16",
            "3:2",
            "2:3",
            "21:9"
          ],
          "default": "1:1"
        },
        "resolution": {
          "type": "string",
          "description": "Разрешение изображения",
          "enum": [
            "1K",
            "1.5K",
            "2K"
          ],
          "default": "1.5K"
        },
        "outputFormat": {
          "type": "string",
          "description": "Формат выходного изображения",
          "enum": [
            "jpeg",
            "png"
          ],
          "default": "jpeg"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "SeedreamInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Текстовое описание для генерации изображения"
        },
        "urls": {
          "description": "URL-адреса изображений для справки (URL-адреса или данные base64) для режима изображения в изображение",
          "maxItems": 14,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон изображения",
          "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": "Разрешение изображения",
          "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": "Режим оптимизации подсказки (только seedream-4-5; для других моделей игнорируется)",
          "enum": [
            "standard",
            "fast"
          ],
          "default": "standard"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "SunoCustomModelDto": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Название пользовательской модели"
        },
        "audioUrls": {
          "description": "Аудио URL для обучения (6–24)",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "name",
        "audioUrls"
      ]
    },
    "SunoInputDto": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "description": "Операция Suno",
          "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 для простого режима, true для пользовательского режима"
        },
        "gptDescriptionPrompt": {
          "type": "string",
          "description": "Простой режим: описание песни / эффекта (с необязательными текстами)"
        },
        "prompt": {
          "type": "string",
          "description": "Пользовательский режим: подробные тексты / запрос (также тексты или описание звука)"
        },
        "tags": {
          "type": "string",
          "description": "Пользовательский режим: жанровые / стилевые теги"
        },
        "title": {
          "type": "string",
          "description": "Название для результата"
        },
        "makeInstrumental": {
          "type": "boolean",
          "description": "Создать трек только с инструменталом",
          "default": false
        },
        "negativeTags": {
          "type": "string",
          "description": "Стили, которых следует избегать (пользовательский режим / звук)"
        },
        "personaId": {
          "type": "string",
          "description": "ID пользовательского голоса (персоны) для исполнения сгенерированной музыки"
        },
        "customModel": {
          "description": "Определение встроенной пользовательской модели (обязательно при 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": "URL аудиофайла для обработки"
        },
        "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": "Ссылка на одну из ваших предыдущих генераций Suno (ее taskId), используемая для действий с сохранением состояния, таких как extend, music-cover, replace-section, timestamped-lyrics, music-video, voice и wav."
        },
        "audioId": {
          "type": "string",
          "description": "Трек для обработки, идентифицируемый по его id (как возвращается в `output.tracks[].audioId` предыдущей генерации). Обычно генерация производит 2 трека; пропустите, чтобы использовать первый."
        },
        "fullLyrics": {
          "type": "string",
          "description": "replace-section: полные тексты песен для всего трека после редактирования"
        },
        "author": {
          "type": "string",
          "description": "музыкальное видео: имя артиста / создателя на обложке (макс. 50)"
        },
        "domainName": {
          "type": "string",
          "description": "музыкальное видео: водяной знак бренда / сайта внизу (макс. 50)"
        },
        "aspectRatio": {
          "type": "string",
          "description": "музыкальное видео: соотношение сторон на выходе",
          "enum": [
            "9:16",
            "16:9",
            "1:1",
            "3:4",
            "4:3"
          ],
          "default": "9:16"
        },
        "backgroundColors": {
          "description": "музыкальное видео: 1–4 шестнадцатеричных цвета для размытого градиентного фона (например, [\"#1B2635\", \"#8A6A4F\"])",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageUrl": {
          "type": "string",
          "description": "музыкальное видео: URL обложки для отображения внутри кольца (по умолчанию: обложка исходного трека, если доступна)"
        },
        "quality": {
          "type": "string",
          "description": "музыкальное видео: качество выходного файла. `compact` — небольшой файл, удобный для обмена (~5 МБ / 3 мин); `high` — более четкий выход 720p-класса примерно вдвое больше по размеру; `max` — 1080p-класс, примерно в 4 раза компактнее",
          "enum": [
            "compact",
            "high",
            "max"
          ],
          "default": "compact"
        },
        "startS": {
          "type": "number",
          "description": "Начальное время (секунды) затронутого диапазона. Используется функциями remove-section / crop / sample (диапазон), replace-section (диапазон для заполнения) и vox / voice-from-track (вокальное окно)."
        },
        "endS": {
          "type": "number",
          "description": "Конечное время (секунды) затронутого диапазона (> startS). См. startS для действий, которые его используют."
        },
        "bpm": {
          "type": "number",
          "description": "звук: темп в BPM"
        },
        "key": {
          "type": "string",
          "description": "звук: музыкальный ключ (Мажор C–B; Минор Cm–Bm)"
        },
        "type": {
          "type": "string",
          "description": "sound: 'one-shot' или 'loop' (по умолчанию 'one-shot')",
          "enum": [
            "one-shot",
            "loop"
          ]
        },
        "voiceAudioUrl": {
          "type": "string",
          "description": "голос: URL записи голоса"
        },
        "verificationAudioUrl": {
          "type": "string",
          "description": "голос: URL записи проверочной фразы"
        },
        "phraseId": {
          "type": "string",
          "description": "голос: ID фразы из эндпоинта проверочной фразы"
        },
        "name": {
          "type": "string",
          "description": "voice / custom-model: name"
        },
        "description": {
          "type": "string",
          "description": "голос: описание"
        },
        "styles": {
          "type": "string",
          "description": "голос: жанровые теги (например, 'funk edm')"
        },
        "singerSkillLevel": {
          "type": "string",
          "description": "голос: уровень мастерства певца",
          "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": "Вес стиля (0,00–1,00)"
        },
        "weirdnessConstraint": {
          "type": "number",
          "description": "Вес креативности / необычности (0,00–1,00)"
        },
        "audioWeight": {
          "type": "number",
          "description": "Вес аудио (0,00–1,00)"
        },
        "vocalGender": {
          "type": "string",
          "description": "Пол вокала: мужской или женский",
          "enum": [
            "Male",
            "Female"
          ]
        },
        "autoLyrics": {
          "type": "boolean",
          "description": "вдохновение: творчески переписать предоставленные тексты"
        },
        "variationCategory": {
          "type": "string",
          "description": "ремастеринг: интенсивность (тонкий / нормальный / высокий)",
          "enum": [
            "subtle",
            "normal",
            "high"
          ]
        },
        "stemType": {
          "type": "string",
          "description": "дорожки: какую дорожку извлечь (например, ведущий_вокал, бэк-вокалы, ударная_установка, бас, пианино, электрогитара). По умолчанию — ведущий_вокал."
        },
        "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: длительность появления/затухания в секундах"
        },
        "speed": {
          "type": "number",
          "description": "adjust-speed: множитель скорости (0.25–4)"
        },
        "keepPitch": {
          "type": "boolean",
          "description": "adjust-speed: сохранять оригинальную высоту тона (по умолчанию true)"
        },
        "sourceTaskIds": {
          "description": "mashup: ровно 2 предыдущих идентификатора генерации suno (taskIds) для совместного ремикса",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioIds": {
          "description": "mashup: параллельный массив к sourceTaskIds, выбирающий трек в каждом источнике по его audioId (как возвращается в output.tracks[].audioId); пропустите запись, чтобы использовать первый трек этого источника",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Veo3InputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Подсказка пользователя"
        },
        "aspectRatio": {
          "type": "string",
          "description": "Соотношение сторон",
          "enum": [
            "16:9",
            "9:16"
          ],
          "default": "16:9"
        },
        "urls": {
          "description": "URL изображений для генерации видео",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "resolution": {
          "type": "string",
          "description": "Качество разрешения видео",
          "enum": [
            "720p",
            "1080p",
            "4k"
          ],
          "default": "1080p"
        },
        "generationType": {
          "type": "string",
          "description": "Тип генерации для модели VEO3",
          "enum": [
            "frame",
            "reference"
          ]
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Veo3LiteInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Подсказка пользователя"
        },
        "aspectRatio": {
          "type": "string",
          "description": "Соотношение сторон",
          "enum": [
            "16:9",
            "9:16"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Качество разрешения видео",
          "enum": [
            "720p",
            "1080p",
            "4k"
          ],
          "default": "1080p"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Wan27ImageInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Текстовое описание для генерации изображения",
          "maxLength": 5000
        },
        "urls": {
          "description": "Справочные изображения для редактирования (1-4 URL). Их предоставление переключает запрос в режим редактирования. Порядок важен: ссылайтесь на них как на изображение 1, изображение 2 и т.д. в запросе.",
          "minItems": 1,
          "maxItems": 4,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон выходного изображения (игнорируется, если указаны ширина и высота)",
          "enum": [
            "1:1",
            "16:9",
            "9:16",
            "4:3",
            "3:4",
            "3:2",
            "2:3"
          ],
          "default": "1:1"
        },
        "width": {
          "type": "number",
          "description": "Пользовательская ширина выхода в пикселях (требуется высота). Перекрывает размер."
        },
        "height": {
          "type": "number",
          "description": "Пользовательская высота вывода в пикселях (требует ширину). Перекрывает размер."
        },
        "seed": {
          "type": "number",
          "description": "Случайное семя для воспроизводимого результата"
        }
      },
      "required": [
        "prompt"
      ]
    },
    "Wan27VideoInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Текстовая подсказка. Обязательна для text-to-video, reference-to-video и edit-video; необязательна для image-to-video."
        },
        "imageUrls": {
          "description": "Кадры из изображения в видео. Первый URL — это начальный кадр, второй необязательный URL — конечный кадр. Указание этого выбирает рабочий процесс «изображение в видео».",
          "maxItems": 2,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "referenceImageUrls": {
          "description": "Справочные изображения для рабочего процесса «ссылка на видео». Требуется запрос.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "referenceVideoUrls": {
          "description": "Справочные видео для рабочего процесса «ссылка на видео». Требуется запрос.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "editVideoUrl": {
          "type": "string",
          "description": "Исходное видео для редактирования. Указание этого выбирает рабочий процесс редактирования видео (требуется запрос)."
        },
        "referenceImageUrl": {
          "type": "string",
          "description": "Необязательное справочное изображение для управления рабочим процессом редактирования видео."
        },
        "continueVideoUrl": {
          "type": "string",
          "description": "Исходное видео для продолжения или расширения. Выбирает рабочий процесс продолжения видео. Не может сочетаться с imageUrls или audioUrl. Поддерживаемая длительность — 2-10 секунд."
        },
        "audioUrl": {
          "type": "string",
          "description": "Необязательный URL аудио (процессы text-to-video и image-to-video)."
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон (text-to-video, reference-to-video и edit-video). Игнорируется для image-to-video, где оно определяется исходными кадрами.",
          "enum": [
            "16:9",
            "9:16",
            "1:1",
            "4:3",
            "3:4"
          ],
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "description": "Выходное разрешение",
          "enum": [
            "720p",
            "1080p"
          ],
          "default": "720p"
        },
        "duration": {
          "type": "number",
          "description": "Продолжительность видео в секундах (2-15). Допустимые значения зависят от выбранного процесса: text-to-video принимает 5/10/15, image-to-video 2-15, reference-to-video 2-10, edit-video 0 или 2-10 (0 позволяет PoYo определить продолжительность исходного видео)."
        },
        "multiShots": {
          "type": "boolean",
          "description": "Включить генерацию нескольких кадров (процессы image, reference и edit)."
        },
        "audioSetting": {
          "type": "string",
          "description": "Настройка аудио для процесса edit-video."
        },
        "seed": {
          "type": "number",
          "description": "Случайное значение для контроля случайности"
        },
        "enableSafetyChecker": {
          "type": "boolean",
          "description": "Включить проверку безопасности модели"
        }
      }
    },
    "Wan30ImageWithRoleDto": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Адрес изображения (публичный URL или data:image/...;base64,...)"
        },
        "role": {
          "type": "string",
          "description": "Роль изображения. first_frame/last_frame относятся к семейству кадров, reference_image — к семейству ссылок; их нельзя смешивать.",
          "enum": [
            "first_frame",
            "last_frame",
            "reference_image"
          ]
        }
      },
      "required": [
        "url"
      ]
    },
    "Wan30VideoInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Текстовое описание. Обязательно, если не предоставлен хотя бы один медиа-ввод. В режиме ссылок вы можете адресовать ресурсы позиционно с метками \"图N / 视频N / 音频N\"; индексы идут по типу медиа.",
          "maxLength": 20000
        },
        "imageUrls": {
          "description": "URL-адреса изображений без явных ролей. В семействе кадров первый элемент — начальный кадр, а второй (опционально) — конечный кадр; в семействе ссылок каждый элемент является ссылочным изображением (до 10).",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageWithRoles": {
          "description": "Изображения с явными ролями. Используйте это, когда вам нужны первый/последний кадр или эталонные изображения, указанные явно, а не выводимые из порядка.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "$ref": "#/$defs/Wan30ImageWithRoleDto"
          }
        },
        "videoUrls": {
          "description": "Справочные видео, до 5 клипов по 1-15 секунд каждый (всего <= 15 секунд). Продолжительность исходного видео плюс запрашиваемая продолжительность результата должны оставаться в пределах 30 секунд.",
          "maxItems": 5,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Справочная аудиозапись, до 5 клипов по 1-15 секунд каждый (всего <= 15 секунд).",
          "maxItems": 5,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fileUrl": {
          "type": "string",
          "description": "Справочный документ, задающий генерацию (docx/xlsx/pptx/pdf/txt/md и подобные, <=100 МБ, <=50 страниц). Не может использоваться вместе с linkUrl. При его наличии использование подсказки необязательно."
        },
        "linkUrl": {
          "type": "string",
          "description": "Публичная веб-страница без входа в систему для превращения в видео. Не может использоваться вместе с fileUrl."
        },
        "generationType": {
          "type": "string",
          "description": "Как классифицируются чистые imageUrls: кадр (первый/последний кадр) или ссылка. Можно пропустить, чтобы это было определено автоматически — ссылка, если запрос уже содержит входные данные семейства ссылок, кадр в противном случае.",
          "enum": [
            "frame",
            "reference"
          ]
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон. `adaptive` позволяет модели выбрать одно из входных значений.",
          "enum": [
            "adaptive",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16"
          ],
          "default": "adaptive"
        },
        "resolution": {
          "type": "string",
          "description": "Разрешение вывода. Каждый уровень тарифицируется по собственной ставки за секунду, поэтому 1080p стоит в четыре раза дороже 480p за ту же продолжительность.",
          "enum": [
            "480p",
            "720p",
            "1080p"
          ],
          "default": "480p"
        },
        "duration": {
          "type": "number",
          "description": "Продолжительность в секундах (2-30). Оплата производится за секунду по тарифу выбранного разрешения. С опорными видео общая продолжительность входного видео плюс это значение не должна превышать 30 секунд.",
          "default": 5,
          "minimum": 2,
          "maximum": 30
        },
        "audio": {
          "type": "boolean",
          "description": "Включить аудиодорожку в вывод.",
          "default": true
        },
        "seed": {
          "type": "number",
          "description": "Случайное значение для контроля случайности",
          "minimum": 0,
          "maximum": 2147483647
        }
      }
    },
    "Wan30VideoProInputDto": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Текстовое описание. Обязательно, если не предоставлен хотя бы один медиа-ввод. В режиме ссылок вы можете адресовать ресурсы позиционно с метками \"图N / 视频N / 音频N\"; индексы идут по типу медиа.",
          "maxLength": 20000
        },
        "imageUrls": {
          "description": "URL-адреса изображений без явных ролей. В семействе кадров первый элемент — начальный кадр, а второй (опционально) — конечный кадр; в семействе ссылок каждый элемент является ссылочным изображением (до 10).",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "imageWithRoles": {
          "description": "Изображения с явными ролями. Используйте это, когда вам нужны первый/последний кадр или эталонные изображения, указанные явно, а не выводимые из порядка.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "$ref": "#/$defs/Wan30ImageWithRoleDto"
          }
        },
        "videoUrls": {
          "description": "Справочные видео, до 5 клипов по 1-15 секунд каждый (всего <= 15 секунд). Продолжительность исходного видео плюс запрашиваемая продолжительность результата должны оставаться в пределах 30 секунд.",
          "maxItems": 5,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "audioUrls": {
          "description": "Справочная аудиозапись, до 5 клипов по 1-15 секунд каждый (всего <= 15 секунд).",
          "maxItems": 5,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fileUrl": {
          "type": "string",
          "description": "Справочный документ, задающий генерацию (docx/xlsx/pptx/pdf/txt/md и подобные, <=100 МБ, <=50 страниц). Не может использоваться вместе с linkUrl. При его наличии использование подсказки необязательно."
        },
        "linkUrl": {
          "type": "string",
          "description": "Публичная веб-страница без входа в систему для превращения в видео. Не может использоваться вместе с fileUrl."
        },
        "generationType": {
          "type": "string",
          "description": "Как классифицируются чистые imageUrls: кадр (первый/последний кадр) или ссылка. Можно пропустить, чтобы это было определено автоматически — ссылка, если запрос уже содержит входные данные семейства ссылок, кадр в противном случае.",
          "enum": [
            "frame",
            "reference"
          ]
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон. `adaptive` позволяет модели выбрать одно из входных значений.",
          "enum": [
            "adaptive",
            "16:9",
            "4:3",
            "1:1",
            "3:4",
            "9:16"
          ],
          "default": "adaptive"
        },
        "duration": {
          "type": "number",
          "description": "Продолжительность в секундах (2-30). Оплата производится за секунду по тарифу выбранного разрешения. С опорными видео общая продолжительность входного видео плюс это значение не должна превышать 30 секунд.",
          "default": 5,
          "minimum": 2,
          "maximum": 30
        },
        "audio": {
          "type": "boolean",
          "description": "Включить аудиодорожку в вывод.",
          "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": "Текстовое описание для генерации изображения",
          "maxLength": 1000
        },
        "urls": {
          "description": "Дополнительное справочное изображение для редактирования (ровно один URL). Предоставление его переключает запрос на редактирование изображения.",
          "maxItems": 1,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size": {
          "type": "string",
          "description": "Соотношение сторон изображения. Обязательно для текста в изображение; необязательно для редактирования изображения (по умолчанию следует за справочным изображением).",
          "enum": [
            "1:1",
            "4:3",
            "3:4",
            "16:9",
            "9:16"
          ],
          "default": "1:1"
        },
        "enableSafetyChecker": {
          "type": "boolean",
          "description": "Включить средство проверки безопасности модели (по умолчанию включено)"
        }
      },
      "required": [
        "prompt"
      ]
    }
  }
}