{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/beyondwords/main/json-schema/beyondwords-get-projects-projectid-video-settings-response-schema.json",
  "title": "GetProjectsProjectidVideoSettingsResponse",
  "x-generated": "2026-10-28",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_ae-authored/beyondwords-openapi-generated.yml#/components/schemas/GetProjectsProjectidVideoSettingsResponse",
  "type": "object",
  "properties": {
    "enabled": {
      "type": "boolean",
      "description": "When true, video generation is enabled for this project"
    },
    "logo_image_url": {
      "type": "string",
      "description": "The logo that should appear in the corner of the video. Defaults to the BeyondWords logo. Maximum string length: 2048"
    },
    "logo_image_position": {
      "type": "string",
      "description": "The position of the logo that appears in the corner of the video. Available options : top-left , top-right"
    },
    "background_color": {
      "type": "string",
      "description": "The background color of the video when there is no image. Supports CSS colors including linear-gradient(to right, ...)"
    },
    "text_transform": {
      "type": "string",
      "description": "Text transformation to apply to captions. Available options : none , uppercase , lowercase , titlecase"
    },
    "text_background_color": {
      "type": "string",
      "description": "The background color to show behind text. Supports CSS colors including linear-gradient(to right, ...)"
    },
    "text_background_radius": {
      "type": "number",
      "description": "Border radius of the text background. Required range : 0 <= x <= 100"
    },
    "text_color": {
      "type": "string",
      "description": "The foreground color of text. Supports CSS colors including linear-gradient(to right, ...)"
    },
    "text_secondary_color": {
      "type": "string",
      "description": "Color of the text captions to show on every other scene (CSS color format)"
    },
    "text_highlight_color": {
      "type": "string",
      "description": "The foreground color of text whilst the word is being read out. Supports CSS colors including linear-gradient(to right, ...)"
    },
    "text_highlight_secondary_color": {
      "type": "string",
      "description": "Color of highlighted text to show on every other scene. Maximum string length: 100"
    },
    "text_highlight_background_color": {
      "type": "string",
      "description": "Color of the background behind the highlighted text (CSS color format, supports linear-gradient(to right, ...)). Maximum string length: 100"
    },
    "text_highlight_secondary_background_color": {
      "type": "string",
      "description": "Color of the background behind the highlighted text to show on every other scene (CSS color format, supports linear-gradient(to right, ...)). Maximum string length: 100"
    },
    "text_highlight_background_radius": {
      "type": "number",
      "description": "Border radius of the highlight text background. Required range : 0 <= x <= 100"
    },
    "text_shadow": {
      "type": "string",
      "description": "Text shadow of non-highlighted words (CSS format, supports linear-gradient(to right, ...)). Maximum string length: 200"
    },
    "text_highlight_shadow": {
      "type": "string",
      "description": "Text shadow of highlighted words (CSS format, supports linear-gradient(to right, ...)). Maximum string length: 200"
    },
    "text_stroke": {
      "type": "string",
      "description": "Text outline of non-highlighted words (CSS format, supports linear-gradient(to right, ...) and inside/center/outside). Maximum string length: 200"
    },
    "text_highlight_stroke": {
      "type": "string",
      "description": "Text outline of highlighted words (CSS format, supports linear-gradient(to right, ...) and inside/center/outside). Maximum string length: 200"
    },
    "text_fonts": {
      "type": "array",
      "description": "A list of fonts to use. Fonts will be prioritized automatically based on glyph coverage for the text."
    },
    "text_font_size": {
      "type": "integer",
      "description": "Font size for text captions (30-90). Required range : 30 <= x <= 90"
    },
    "text_width": {
      "type": "number",
      "description": "Maximum width of text as a ratio of the frame width. Required range : 0 <= x <= 1"
    },
    "text_lines": {
      "type": "integer",
      "description": "The maximum number of lines of text to show at once. Must be between 1 and 5."
    },
    "text_words": {
      "type": "integer",
      "description": "Maximum number of words to show per line. Required range : x >= 1"
    },
    "text_horizontal_align": {
      "type": "string",
      "description": "The horizontal alignment of text lines, either 'start', 'center', or 'end'."
    },
    "text_vertical_align": {
      "type": "string",
      "description": "The vertical alignment of text lines, either 'start', 'center', or 'end'."
    },
    "text_horizontal_offset": {
      "type": "number",
      "description": "The horizontal offset of text relative to the frame width, between -1.0 and 1.0"
    },
    "text_vertical_offset": {
      "type": "number",
      "description": "The vertical offset of text relative to the frame height, between -1.0 and 1.0"
    },
    "text_animation": {
      "type": "string",
      "description": "The text animation to show. Available options : classic , reveal , karaoke , pop"
    },
    "entrance_animation": {
      "type": "string",
      "description": "The entrance animation for image and video segments. Available options : none , fade , zoom-in , zoom-out , slide-up , slide-down , slide-left , slide-right , pop"
    },
    "exit_animation": {
      "type": "string",
      "description": "The exit animation for image and video segments. Available options : none , fade , zoom-in , zoom-out , slide-up , slide-down , slide-left , slide-right , pop"
    },
    "waveform_color": {
      "type": "string",
      "description": "The color of the audio waveform bars. Supports CSS colors including linear-gradient(to right, ...)"
    },
    "content_image_enabled": {
      "type": "boolean",
      "description": "When true, uses the content's featured image as video background"
    },
    "image_extraction_enabled": {
      "type": "boolean",
      "description": "When true, automatically extracts images from HTML content."
    },
    "pan_and_zoom_enabled": {
      "type": "boolean",
      "description": "When true, applies pan and zoom effects to background images"
    },
    "audio_and_waveform_enabled": {
      "type": "boolean",
      "description": "When true, video includes audio and animated waveform visualization"
    },
    "text_captions_enabled": {
      "type": "boolean",
      "description": "When true, displays text captions overlaid on the video"
    },
    "playback_mode": {
      "type": "string",
      "description": "The playback mode for images in the video. Available options : cycle , space-evenly , follow-article"
    },
    "cycle_time": {
      "type": "integer",
      "description": "The time in milliseconds to show each image when playback_mode is set to 'cycle'. Required range : 1000 <= x <= 60000"
    },
    "variants": {
      "type": "array"
    },
    "sizes": {
      "type": "array"
    }
  }
}