{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/sketchxflow-com/json-schema/sketchxflow-com-generate-animation-request-schema.json",
  "title": "GenerateAnimationRequest",
  "description": "Body for /api/generate-animation — a self-contained auto-playing motion\ngraphic (logo reveal / kinetic-typography sting). Separate from website/\napp/creative/email generation; runs the agents/motion_generator engine.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/sketchxflow-com-openapi.json#/components/schemas/GenerateAnimationRequest",
  "properties": {
    "model": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Model"
    },
    "prompt": {
      "type": "string",
      "maxLength": 30000,
      "minLength": 4,
      "title": "Prompt"
    },
    "duration": {
      "type": "number",
      "title": "Duration",
      "default": 6.0
    },
    "brand_kit_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 64
        },
        {
          "type": "null"
        }
      ],
      "title": "Brand Kit Id"
    },
    "source_project_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 64
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Project Id"
    },
    "source_logo_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 64
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Logo Id"
    },
    "source_url": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2000
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Url"
    },
    "source_pdf": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 34000000
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Pdf"
    },
    "images": {
      "items": {
        "$ref": "#/$defs/ImageData"
      },
      "type": "array",
      "maxItems": 6,
      "title": "Images"
    },
    "demo": {
      "type": "boolean",
      "title": "Demo",
      "default": false
    },
    "format": {
      "type": "string",
      "enum": [
        "16x9",
        "9x16",
        "1x1",
        "4x5"
      ],
      "title": "Format",
      "default": "16x9"
    },
    "voiceover": {
      "type": "boolean",
      "title": "Voiceover",
      "default": false
    },
    "music": {
      "type": "string",
      "enum": [
        "none",
        "ambient",
        "generated"
      ],
      "title": "Music",
      "default": "ambient"
    },
    "ai_clip": {
      "type": "string",
      "enum": [
        "none",
        "veo",
        "omni"
      ],
      "title": "Ai Clip",
      "default": "none"
    },
    "captions": {
      "type": "boolean",
      "title": "Captions",
      "default": true
    },
    "mode": {
      "type": "string",
      "enum": [
        "simple",
        "ai",
        "presenter"
      ],
      "title": "Mode",
      "default": "simple"
    },
    "style": {
      "type": "string",
      "enum": [
        "calm",
        "hype"
      ],
      "title": "Style",
      "default": "calm"
    },
    "video_model": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "veo-fast",
            "veo",
            "veo-lite",
            "omni"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Video Model"
    },
    "voice": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ],
      "title": "Voice"
    },
    "presenter_voice": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Presenter Voice"
    },
    "presenter_source": {
      "type": "string",
      "enum": [
        "ai",
        "photo"
      ],
      "title": "Presenter Source",
      "default": "ai"
    },
    "presenter_photo": {
      "anyOf": [
        {
          "$ref": "#/$defs/ImageData"
        },
        {
          "type": "null"
        }
      ]
    },
    "presenter_description": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 300
        },
        {
          "type": "null"
        }
      ],
      "title": "Presenter Description"
    },
    "presenter_consent": {
      "type": "boolean",
      "title": "Presenter Consent",
      "default": false
    },
    "product_kind": {
      "type": "string",
      "enum": [
        "software",
        "physical"
      ],
      "title": "Product Kind",
      "default": "software"
    },
    "product_photo": {
      "anyOf": [
        {
          "$ref": "#/$defs/ImageData"
        },
        {
          "type": "null"
        }
      ]
    },
    "script": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Script"
    }
  },
  "type": "object",
  "required": [
    "prompt"
  ],
  "$defs": {
    "ImageData": {
      "properties": {
        "base64": {
          "type": "string",
          "title": "Base64"
        },
        "mime_type": {
          "type": "string",
          "title": "Mime Type",
          "default": "image/png"
        }
      },
      "type": "object",
      "required": [
        "base64"
      ],
      "title": "ImageData"
    }
  }
}