{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/animgen-com/json-schema/animgen-com-video-generation-create-request-schema.json",
  "title": "VideoGenerationCreateRequest",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/animgen-com-openapi.json#/components/schemas/VideoGenerationCreateRequest",
  "properties": {
    "input": {
      "$ref": "#/$defs/GenerationInput",
      "description": "Images owned by the caller or supplied for this generation.",
      "x-description-zh": "调用方所属或本次提供的生成图片。"
    },
    "prompt": {
      "type": "string",
      "maxLength": 8000,
      "title": "Prompt",
      "description": "Motion instruction; nonempty when the model requires a prompt. Keep private prompts out of logs.",
      "default": "",
      "x-description-zh": "动作提示词；模型要求时不能为空，私有提示词不得写入日志。"
    },
    "negative_prompt": {
      "type": "string",
      "maxLength": 4000,
      "title": "Negative Prompt",
      "description": "Optional exclusions, only when the model supports negative prompts.",
      "default": "",
      "x-description-zh": "可选负向提示词，仅适用于支持的模型。"
    },
    "video": {
      "$ref": "#/$defs/VideoOptions",
      "description": "Model-compatible generation settings.",
      "default": {
        "transparency": {
          "key_selection": "auto",
          "mode": "standard"
        }
      },
      "x-description-zh": "符合模型能力的生成设置。"
    },
    "metadata": {
      "additionalProperties": true,
      "type": "object",
      "title": "Metadata",
      "description": "Caller metadata: simple string/number/boolean/null values, at most 4 KiB JSON. Do not store secrets.",
      "default": {},
      "x-description-zh": "调用方元数据，仅字符串、数字、布尔或 null；JSON 不超过 4 KiB，不存凭据。"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "input"
  ],
  "$defs": {
    "Base64ImageInput": {
      "properties": {
        "type": {
          "type": "string",
          "const": "base64",
          "title": "Type"
        },
        "media_type": {
          "type": "string",
          "enum": [
            "image/png",
            "image/jpeg",
            "image/webp"
          ],
          "title": "Media Type",
          "description": "Actual image MIME type.",
          "x-description-zh": "图片实际 MIME 类型。"
        },
        "data": {
          "type": "string",
          "minLength": 4,
          "title": "Data",
          "description": "Pure Base64 without a data URL prefix; decoded limits: 10 MiB per image, 20 MiB total.",
          "x-description-zh": "纯 Base64，不含 data URL 前缀；解码后单张 10 MiB、合计 20 MiB。"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "media_type",
        "data"
      ],
      "title": "Base64ImageInput"
    },
    "FileImageInput": {
      "properties": {
        "type": {
          "type": "string",
          "const": "file",
          "title": "Type"
        },
        "file_id": {
          "type": "string",
          "format": "uuid",
          "title": "File Id",
          "description": "Owned public file ID from POST /files or complete_image_upload; not a Studio upload ID.",
          "x-description-zh": "POST /files 或 complete_image_upload 返回的所属公共文件 ID，不是 Studio uploadId。"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "file_id"
      ],
      "title": "FileImageInput"
    },
    "GenerationInput": {
      "properties": {
        "first_frame": {
          "oneOf": [
            {
              "$ref": "#/$defs/FileImageInput"
            },
            {
              "$ref": "#/$defs/Base64ImageInput"
            },
            {
              "$ref": "#/$defs/UrlImageInput"
            }
          ],
          "title": "First Frame",
          "description": "Required starting image; use the type discriminator to select an input representation.",
          "x-description-zh": "必需首帧，用 type 选择图片传入方式。"
        },
        "last_frame": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/FileImageInput"
                },
                {
                  "$ref": "#/$defs/Base64ImageInput"
                },
                {
                  "$ref": "#/$defs/UrlImageInput"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Last Frame",
          "description": "Optional end image; the selected model must support first/last-frame mode.",
          "x-description-zh": "可选尾帧，所选模型必须支持首尾帧模式。"
        },
        "reference_images": {
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/FileImageInput"
              },
              {
                "$ref": "#/$defs/Base64ImageInput"
              },
              {
                "$ref": "#/$defs/UrlImageInput"
              }
            ]
          },
          "type": "array",
          "maxItems": 8,
          "title": "Reference Images",
          "description": "Additional references, excluding the first frame. The live model can impose a smaller limit.",
          "default": [],
          "x-description-zh": "额外参考图，不含首帧；实时模型可能有更低上限。"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "first_frame"
      ],
      "title": "GenerationInput"
    },
    "GenerationTransparency": {
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "standard",
            "alpha_key"
          ],
          "title": "Mode",
          "description": "standard keeps the scene; alpha_key requires meaningful alpha in all active input images. Raw videos remain opaque.",
          "default": "standard",
          "x-description-zh": "standard 保留场景；alpha_key 要求所有参与图片有有效 Alpha，原始视频仍不透明。"
        },
        "key_color": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Key Color",
          "description": "Temporary key color when using manual selection; normally leave automatic selection enabled.",
          "x-description-zh": "手动选择时使用的临时键色；通常保留自动选择。"
        },
        "key_selection": {
          "type": "string",
          "enum": [
            "auto",
            "manual"
          ],
          "title": "Key Selection",
          "description": "How the temporary key color is selected.",
          "default": "auto",
          "x-description-zh": "临时键色的选择方式。"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "GenerationTransparency"
    },
    "InputCanvasOptions": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "title": "Enabled",
          "description": "Whether to prepare an expanded input canvas.",
          "default": true,
          "x-description-zh": "是否准备扩展输入画布。"
        },
        "source_scale": {
          "type": "number",
          "maximum": 1.0,
          "minimum": 0.5,
          "title": "Source Scale",
          "description": "Source subject scale within the canvas.",
          "default": 0.8,
          "x-description-zh": "原图主体在画布中的缩放比例。"
        },
        "position_x": {
          "type": "number",
          "maximum": 1.0,
          "minimum": 0.0,
          "title": "Position X",
          "description": "Normalized horizontal source position.",
          "default": 0.5,
          "x-description-zh": "归一化水平位置。"
        },
        "position_y": {
          "type": "number",
          "maximum": 1.0,
          "minimum": 0.0,
          "title": "Position Y",
          "description": "Normalized vertical source position.",
          "default": 0.5,
          "x-description-zh": "归一化垂直位置。"
        },
        "aspect_ratio": {
          "type": "string",
          "enum": [
            "follow_output",
            "source"
          ],
          "title": "Aspect Ratio",
          "description": "Follow the output ratio or preserve the source ratio.",
          "default": "follow_output",
          "x-description-zh": "跟随输出比例或保持原图比例。"
        },
        "background": {
          "type": "string",
          "enum": [
            "auto",
            "transparent",
            "solid"
          ],
          "title": "Background",
          "description": "Canvas extension background strategy.",
          "default": "auto",
          "x-description-zh": "画布扩展区域的背景策略。"
        },
        "background_color": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ],
          "title": "Background Color",
          "description": "Six-digit RGB color for a solid extension.",
          "x-description-zh": "纯色扩展区域的六位 RGB 颜色。"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "InputCanvasOptions"
    },
    "UrlImageInput": {
      "properties": {
        "type": {
          "type": "string",
          "const": "url",
          "title": "Type"
        },
        "url": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 9,
          "title": "Url",
          "description": "Public HTTPS image on port 443, without credentials or fragments. Private networks and unsafe redirects are rejected. Keep bytes stable across retries.",
          "x-description-zh": "公开 HTTPS 图片，443 端口，不带凭据或 fragment；禁止私网和不安全跳转，重试期间保持图片字节稳定。"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "url"
      ],
      "title": "UrlImageInput"
    },
    "VideoOptions": {
      "properties": {
        "model": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Model",
          "description": "provider:model ID from GET /models; omission uses the configured default model.",
          "x-description-zh": "GET /models 返回的 provider:model ID；省略时使用配置的默认模型。"
        },
        "duration_seconds": {
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Duration Seconds",
          "description": "Seconds; choose a supported duration for the model and resolution. Omission uses its default.",
          "x-description-zh": "秒数，需符合模型与分辨率支持范围；省略时使用模型默认值。"
        },
        "resolution": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Resolution",
          "description": "Resolution value from the live model catalog.",
          "x-description-zh": "实时模型目录中的分辨率值。"
        },
        "ratio": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ratio",
          "description": "Aspect ratio supported by the current model and input mode.",
          "x-description-zh": "当前模型与输入模式支持的画幅比例。"
        },
        "seed": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 2147483647.0,
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Seed",
          "description": "Optional seed only for models advertising seed support; not a universal determinism guarantee.",
          "x-description-zh": "仅适用于声明支持 seed 的模型，不保证所有输出确定性。"
        },
        "style_preset": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Style Preset",
          "description": "Optional style preset supported by the selected provider/model.",
          "x-description-zh": "所选供应商或模型支持的可选风格预设。"
        },
        "watermark": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Watermark",
          "description": "Optional watermark setting; check the model capability.",
          "x-description-zh": "可选水印设置，需检查模型能力。"
        },
        "transparency": {
          "$ref": "#/$defs/GenerationTransparency",
          "description": "Source transparency workflow; transparent exports require alpha_key.",
          "default": {
            "mode": "standard",
            "key_selection": "auto"
          },
          "x-description-zh": "来源透明流程；透明导出要求 alpha_key。"
        },
        "input_canvas": {
          "anyOf": [
            {
              "$ref": "#/$defs/InputCanvasOptions"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional input framing; omit to keep the source framing.",
          "x-description-zh": "可选输入画布设置；省略时保持来源构图。"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "VideoOptions"
    }
  }
}