> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vturb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fetch a video



## OpenAPI

````yaml /openapi.yaml get /v1/videos/{id}
openapi: 3.1.0
info:
  title: VTurb API
  version: v1
  description: |
    Public REST API for VTurb. Dev-first and agents-first: every documented
    response is recorded from the API's real behavior.
  contact:
    name: VTurb API
    url: https://vturb.com
servers:
  - url: https://api.vturb.com
security:
  - bearerAuth: []
paths:
  /v1/videos/{id}:
    get:
      tags:
        - Videos
      summary: Fetch a video
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          example: 652f2b1e8f1b2c3d4e5f6a7b
      responses:
        '200':
          description: The video with its configuration set.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  folder_id:
                    type: string
                  status:
                    type: string
                  controls:
                    type: object
                    properties:
                      backward:
                        type: boolean
                      big_play:
                        type: boolean
                      forward:
                        type: boolean
                      fullscreen:
                        type: boolean
                      play_pause:
                        type: boolean
                      seekbar:
                        type: boolean
                      time:
                        type: boolean
                      volume:
                        type: boolean
                      fake_bar:
                        type: boolean
                      speed:
                        type: boolean
                    required:
                      - backward
                      - big_play
                      - forward
                      - fullscreen
                      - play_pause
                      - seekbar
                      - time
                      - volume
                      - fake_bar
                      - speed
                  call_actions:
                    type: object
                    items:
                      type: object
                      properties:
                        base:
                          type: object
                          properties:
                            name:
                              type: string
                            type:
                              type: string
                            active:
                              type: boolean
                          required:
                            - name
                            - type
                            - active
                        window:
                          type: object
                          properties:
                            start:
                              type: integer
                            end:
                              type: integer
                            persist_on_video_end:
                              type: boolean
                            show_to_returning_viewer:
                              type: boolean
                          required:
                            - start
                            - end
                            - persist_on_video_end
                            - show_to_returning_viewer
                        action:
                          type: object
                          properties:
                            content:
                              type: string
                            url:
                              type: string
                            open_in_new_tab:
                              type: boolean
                            html:
                              type: string
                            as_html:
                              type: boolean
                          required:
                            - content
                            - url
                            - open_in_new_tab
                            - html
                            - as_html
                        scroll:
                          type: object
                          properties:
                            scroll_enabled:
                              type: boolean
                            scroll_type:
                              type: string
                            scroll_offset:
                              type: integer
                          required:
                            - scroll_enabled
                            - scroll_type
                            - scroll_offset
                        image:
                          type: object
                          properties:
                            image_as_button:
                              type: boolean
                            image_url:
                              type: string
                            image_styles:
                              type: object
                              properties:
                                height:
                                  type: integer
                                width:
                                  type: integer
                                opacity:
                                  type: integer
                              required:
                                - height
                                - width
                                - opacity
                          required:
                            - image_as_button
                            - image_url
                            - image_styles
                        delay:
                          type: object
                          properties:
                            delay:
                              type: boolean
                            delay_options:
                              type: object
                              properties:
                                query:
                                  type: string
                                query_type:
                                  type: string
                              required:
                                - query
                                - query_type
                          required:
                            - delay
                            - delay_options
                        design:
                          type: object
                          properties:
                            typography:
                              type: object
                              properties:
                                family:
                                  type: string
                                letter_spacing:
                                  type: integer
                                line_height:
                                  type: number
                                  format: float
                                size:
                                  type: integer
                                weight:
                                  type: integer
                              required:
                                - family
                                - letter_spacing
                                - line_height
                                - size
                                - weight
                            styles:
                              type: object
                              properties:
                                background_color:
                                  type: string
                                background_hover_color:
                                  type: string
                                text_color:
                                  type: string
                                text_hover_color:
                                  type: string
                                border_radius:
                                  type: integer
                                padding:
                                  type: object
                                  properties:
                                    binding:
                                      type: boolean
                                    values:
                                      type: array
                                      items:
                                        type: integer
                                  required:
                                    - binding
                                    - values
                                shadow_enabled:
                                  type: boolean
                                shadow:
                                  type: object
                                  properties:
                                    blur:
                                      type: integer
                                    color:
                                      type: string
                                    horizontal:
                                      type: integer
                                    vertical:
                                      type: integer
                                    spread:
                                      type: integer
                                  required:
                                    - blur
                                    - color
                                    - horizontal
                                    - vertical
                                    - spread
                              required:
                                - background_color
                                - background_hover_color
                                - text_color
                                - text_hover_color
                                - border_radius
                                - padding
                                - shadow_enabled
                                - shadow
                            animation:
                              type: object
                              properties:
                                type:
                                  type: string
                              required:
                                - type
                            rich_element:
                              type: object
                              properties:
                                type:
                                  type: string
                                width:
                                  type: integer
                                height:
                                  type: integer
                                x:
                                  type: integer
                                'y':
                                  type: integer
                                opacity:
                                  type: integer
                                order:
                                  type: integer
                                rotation:
                                  type: integer
                              required:
                                - type
                                - width
                                - height
                                - x
                                - 'y'
                                - opacity
                                - order
                                - rotation
                          required:
                            - typography
                            - styles
                            - animation
                            - rich_element
                        id:
                          type: string
                      required:
                        - base
                        - window
                        - action
                        - scroll
                        - image
                        - delay
                        - design
                        - id
                    properties:
                      enabled:
                        type: boolean
                      items:
                        type: array
                        items:
                          type: object
                          properties:
                            base:
                              type: object
                              properties:
                                name:
                                  type: string
                                type:
                                  type: string
                                active:
                                  type: boolean
                              required:
                                - name
                                - type
                                - active
                            window:
                              type: object
                              properties:
                                start:
                                  type: integer
                                end:
                                  type: integer
                                persist_on_video_end:
                                  type: boolean
                                show_to_returning_viewer:
                                  type: boolean
                              required:
                                - start
                                - end
                                - persist_on_video_end
                                - show_to_returning_viewer
                            action:
                              type: object
                              properties:
                                content:
                                  type: string
                                url:
                                  type: string
                                open_in_new_tab:
                                  type: boolean
                                html:
                                  type: string
                                as_html:
                                  type: boolean
                              required:
                                - content
                                - url
                                - open_in_new_tab
                                - html
                                - as_html
                            scroll:
                              type: object
                              properties:
                                scroll_enabled:
                                  type: boolean
                                scroll_type:
                                  type: string
                                scroll_offset:
                                  type: integer
                              required:
                                - scroll_enabled
                                - scroll_type
                                - scroll_offset
                            image:
                              type: object
                              properties:
                                image_as_button:
                                  type: boolean
                                image_url:
                                  type: string
                                image_styles:
                                  type: object
                                  properties:
                                    height:
                                      type: integer
                                    width:
                                      type: integer
                                    opacity:
                                      type: integer
                                  required:
                                    - height
                                    - width
                                    - opacity
                              required:
                                - image_as_button
                                - image_url
                                - image_styles
                            delay:
                              type: object
                              properties:
                                delay:
                                  type: boolean
                                delay_options:
                                  type: object
                                  properties:
                                    query:
                                      type: string
                                    query_type:
                                      type: string
                                  required:
                                    - query
                                    - query_type
                              required:
                                - delay
                                - delay_options
                            design:
                              type: object
                              properties:
                                typography:
                                  type: object
                                  properties:
                                    family:
                                      type: string
                                    letter_spacing:
                                      type: integer
                                    line_height:
                                      type: number
                                      format: float
                                    size:
                                      type: integer
                                    weight:
                                      type: integer
                                  required:
                                    - family
                                    - letter_spacing
                                    - line_height
                                    - size
                                    - weight
                                styles:
                                  type: object
                                  properties:
                                    background_color:
                                      type: string
                                    background_hover_color:
                                      type: string
                                    text_color:
                                      type: string
                                    text_hover_color:
                                      type: string
                                    border_radius:
                                      type: integer
                                    padding:
                                      type: object
                                      properties:
                                        binding:
                                          type: boolean
                                        values:
                                          type: array
                                          items:
                                            type: integer
                                      required:
                                        - binding
                                        - values
                                    shadow_enabled:
                                      type: boolean
                                    shadow:
                                      type: object
                                      properties:
                                        blur:
                                          type: integer
                                        color:
                                          type: string
                                        horizontal:
                                          type: integer
                                        vertical:
                                          type: integer
                                        spread:
                                          type: integer
                                      required:
                                        - blur
                                        - color
                                        - horizontal
                                        - vertical
                                        - spread
                                  required:
                                    - background_color
                                    - background_hover_color
                                    - text_color
                                    - text_hover_color
                                    - border_radius
                                    - padding
                                    - shadow_enabled
                                    - shadow
                                animation:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                  required:
                                    - type
                                rich_element:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                    width:
                                      type: integer
                                    height:
                                      type: integer
                                    x:
                                      type: integer
                                    'y':
                                      type: integer
                                    opacity:
                                      type: integer
                                    order:
                                      type: integer
                                    rotation:
                                      type: integer
                                  required:
                                    - type
                                    - width
                                    - height
                                    - x
                                    - 'y'
                                    - opacity
                                    - order
                                    - rotation
                              required:
                                - typography
                                - styles
                                - animation
                                - rich_element
                            id:
                              type: string
                          required:
                            - base
                            - window
                            - action
                            - scroll
                            - image
                            - delay
                            - design
                            - id
                    required:
                      - enabled
                      - items
                  alternative_video:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                      id:
                        type: string
                    required:
                      - enabled
                      - id
                  traffic_filter:
                    type: object
                    properties:
                      fallback_video_id:
                        type:
                          - string
                          - 'null'
                      token:
                        type:
                          - string
                          - 'null'
                      languages:
                        type:
                          - array
                          - 'null'
                        items:
                          type: string
                        description: >
                          Base ISO-639-1 codes, lowercase — `pt`, `en`, `es`.
                          **Not locales**: a stored `pt-BR` can never match
                          anyone.
                      countries:
                        type:
                          - array
                          - 'null'
                        items:
                          type: string
                        description: >
                          ISO-3166-1 alpha-2 codes, **uppercase** — `BR`, `US`.
                          Compared with no normalization: a lowercase value
                          stores fine and then matches nobody.
                      devices:
                        type:
                          - array
                          - 'null'
                        items:
                          type: string
                          enum:
                            - desktop
                            - mobile
                            - tablet
                        description: >
                          Device classes allowed through, as detected at the
                          edge.
                      query_params:
                        type:
                          - array
                          - 'null'
                        items:
                          type: string
                        description: >
                          Names of query-string keys; their values are ignored.
                          Matched with OR — the viewer passes if the page URL
                          carries **any one** of these keys.
                      block_proxy:
                        type:
                          - boolean
                          - 'null'
                        description: >
                          The edge blocks proxies whenever the gate is active
                          and never reads this flag; it only decides whether the
                          gate counts as configured at all.
                      enabled:
                        type: boolean
                    required:
                      - fallback_video_id
                      - token
                      - languages
                      - countries
                      - devices
                      - query_params
                      - block_proxy
                    description: >
                      The gate in front of the video: a viewer who fails any
                      rule is served `fallback_video_id` instead. It does
                      nothing unless `enabled` is true **and** that fallback is
                      set.
                  styles:
                    type: object
                    properties:
                      background_color:
                        type: string
                      foreground_color:
                        type: string
                      border_radius:
                        type: integer
                      linear_gradient:
                        type: object
                        properties:
                          angle:
                            type:
                              - integer
                              - 'null'
                          primary_color:
                            type:
                              - string
                              - 'null'
                          primary_stop:
                            type:
                              - integer
                              - 'null'
                          secondary_color:
                            type:
                              - string
                              - 'null'
                          secondary_stop:
                            type:
                              - integer
                              - 'null'
                          enabled:
                            type:
                              - boolean
                              - 'null'
                        required:
                          - angle
                          - primary_color
                          - primary_stop
                          - secondary_color
                          - secondary_stop
                        description: >
                          Turns the brand color into a two-stop gradient on the
                          seek bar and big-play button. `angle` in degrees,
                          stops in percent; older videos carry it all null.
                    required:
                      - background_color
                      - foreground_color
                      - border_radius
                      - linear_gradient
                    description: >
                      The player's base look: brand color, text/icon color over
                      it, corner radius in pixels, optional gradient. Colors are
                      CSS strings kept exactly as sent.
                  general:
                    type: object
                    properties:
                      currency:
                        type: string
                        enum:
                          - BRL
                          - USD
                          - EUR
                      pitch_time:
                        type: integer
                      preload_type:
                        type: string
                      start_quality:
                        type: string
                        enum:
                          - auto
                          - low
                          - medium
                          - high
                    required:
                      - currency
                      - pitch_time
                      - preload_type
                      - start_quality
                    description: >
                      Standalone settings: `currency` for revenue metrics,
                      `pitch_time` the second the offer is made, `preload_type`
                      the loading screen, `start_quality` the starting
                      rendition.
                  immersive_mode:
                    type: object
                    properties:
                      desktop:
                        type: boolean
                      disable_scrolling:
                        type: boolean
                      expand_on_play:
                        type: boolean
                      minimize_on_pause:
                        type: boolean
                      mobile:
                        type: boolean
                      enabled:
                        type: boolean
                    required:
                      - desktop
                      - disable_scrolling
                      - expand_on_play
                      - minimize_on_pause
                      - mobile
                  mini_hooks:
                    type: object
                    properties:
                      elements:
                        type: array
                        items:
                          type: object
                          properties:
                            base:
                              type: object
                              properties:
                                name:
                                  type: string
                                type:
                                  type: string
                                  description: >
                                    `image` and `countdown-text` are the two in
                                    use and the only ones with declared fields;
                                    `box` and `text` may still appear but
                                    publish only a frame.
                                  enum:
                                    - box
                                    - countdown-text
                                    - image
                                    - text
                                active:
                                  type: boolean
                              required:
                                - name
                                - type
                                - active
                              description: >
                                What the overlay is: `name` labels it, `type`
                                picks which fields matter, and `active` decides
                                whether it is drawn at all.
                            window:
                              type: object
                              properties:
                                start:
                                  type: integer
                                end:
                                  type: integer
                              required:
                                - start
                                - end
                              description: >
                                When the overlay is on screen, in seconds
                                counted from the start of the video — shown from
                                `start` until `end`.
                            layout:
                              type: object
                              properties:
                                x:
                                  type: number
                                  format: float
                                'y':
                                  type: number
                                  format: float
                                width:
                                  type: number
                                  format: float
                                height:
                                  type: number
                                  format: float
                                rotation:
                                  type: integer
                                opacity:
                                  type: number
                                  format: float
                                order:
                                  type: integer
                              required:
                                - x
                                - 'y'
                                - width
                                - height
                                - rotation
                                - opacity
                                - order
                              description: >
                                Position and size in **pixels of the source
                                video**, not the rendered player. Values outside
                                the frame bleed the overlay past the edge on
                                purpose.
                            content:
                              type: object
                              properties:
                                src:
                                  type:
                                    - string
                                    - 'null'
                                alt:
                                  type:
                                    - string
                                    - 'null'
                                value:
                                  type:
                                    - string
                                    - 'null'
                              required:
                                - src
                                - alt
                                - value
                              description: >
                                What the overlay shows: `image` uses
                                `src`/`alt`, `countdown-text` uses `value`. A
                                `{mm:ss}` token in `value` becomes a live
                                countdown from `window.start`.
                            style:
                              type: object
                              properties:
                                align:
                                  type:
                                    - string
                                    - 'null'
                                background_color:
                                  type:
                                    - string
                                    - 'null'
                                border_radius:
                                  type:
                                    - integer
                                    - 'null'
                                padding:
                                  type:
                                    - array
                                    - 'null'
                                  items:
                                    type: number
                                    format: float
                                text_color:
                                  type:
                                    - string
                                    - 'null'
                              required:
                                - align
                                - background_color
                                - border_radius
                                - padding
                                - text_color
                              description: >
                                How the box is drawn: `align` places the text,
                                `padding` is top/right/bottom/left, colors are
                                CSS strings as stored. Only a `countdown-text`
                                paints a box.
                            typography:
                              type: object
                              properties:
                                family:
                                  type:
                                    - string
                                    - 'null'
                                size:
                                  type:
                                    - number
                                    - 'null'
                                  format: float
                                weight:
                                  type:
                                    - integer
                                    - 'null'
                              required:
                                - family
                                - size
                                - weight
                              description: >
                                Font of a `countdown-text`'s text: `family`,
                                `size` in source-video pixels, `weight` on the
                                usual CSS scale. All three null on an image.
                            counter:
                              type: object
                              properties:
                                color:
                                  type:
                                    - string
                                    - 'null'
                                font_size:
                                  type:
                                    - number
                                    - 'null'
                                  format: float
                                font_weight:
                                  type:
                                    - integer
                                    - 'null'
                              required:
                                - color
                                - font_size
                                - font_weight
                              description: >
                                Font of the countdown's digits, styled apart
                                from the text around them. No `family` here —
                                the digits inherit `typography.family`.
                            id:
                              type: string
                          required:
                            - base
                            - window
                            - layout
                            - content
                            - style
                            - typography
                            - counter
                            - id
                        description: >
                          The overlays themselves. Every entry carries all seven
                          objects below; `base.type` decides which fields mean
                          anything — expect the rest to be null.
                      enabled:
                        type: boolean
                    required:
                      - elements
                    description: >
                      Timed overlays drawn on top of the video — artwork and
                      countdowns with a schedule. With `enabled` off the player
                      draws nothing.
                  pixels:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          properties:
                            base:
                              type: object
                              properties:
                                name:
                                  type: string
                                type:
                                  type: string
                                  enum:
                                    - facebook
                                    - google
                                    - custom
                              required:
                                - name
                                - type
                              description: >
                                `name` labels the pixel; `type` is the
                                destination — `facebook`, `google` or `custom` —
                                and picks the `tag` fields that carry the
                                payload.
                            tag:
                              type: object
                              properties:
                                id:
                                  type: string
                                value:
                                  type: string
                                html:
                                  type: string
                              required:
                                - id
                                - value
                                - html
                              description: >
                                What reaches the third party: `id` and `value`
                                for `facebook`/`google`, `html` for `custom`.
                                Fields the type does not use stay null.
                            dispatch:
                              type: object
                              properties:
                                active:
                                  type: boolean
                                threshold:
                                  type: integer
                                mode:
                                  type: string
                                  enum:
                                    - percent
                                    - time
                              required:
                                - active
                                - threshold
                                - mode
                              description: >
                                When the pixel fires: at `threshold`, in seconds
                                (`mode: time`) or percent watched (`mode:
                                percent`). `active` only matters on `facebook`.
                            id:
                              type: string
                          required:
                            - base
                            - tag
                            - dispatch
                            - id
                        description: >
                          The pixels themselves. Every entry carries all three
                          objects below; `base.type` decides which fields mean
                          anything — expect the rest to be null.
                      enabled:
                        type: boolean
                    required:
                      - items
                    description: >
                      Third-party tracking the player fires while the video
                      plays. `enabled` gates the whole object — with it off the
                      player fires nothing, whatever `items` holds.
                  playback:
                    type: object
                    properties:
                      disable_pause:
                        type: boolean
                      scroll_to_action_in:
                        type: integer
                      smart_pause:
                        type: boolean
                      action_after_finish:
                        type: object
                        properties:
                          type:
                            type: string
                          start:
                            type: integer
                        required:
                          - type
                          - start
                      enabled:
                        type: boolean
                    required:
                      - disable_pause
                      - scroll_to_action_in
                      - smart_pause
                      - action_after_finish
                  subtitle:
                    type: object
                    properties:
                      control:
                        type: boolean
                      track:
                        type: object
                        properties:
                          name:
                            type:
                              - string
                              - 'null'
                          url:
                            type:
                              - string
                              - 'null'
                        required:
                          - name
                          - url
                      style:
                        type: object
                        properties:
                          font_size:
                            type:
                              - string
                              - 'null'
                          color:
                            type:
                              - string
                              - 'null'
                          background_color:
                            type:
                              - string
                              - 'null'
                          text_align:
                            type:
                              - string
                              - 'null'
                          bottom:
                            type:
                              - string
                              - 'null'
                          max_width:
                            type:
                              - string
                              - 'null'
                          show_by_default:
                            type:
                              - boolean
                              - 'null'
                        required:
                          - font_size
                          - color
                          - background_color
                          - text_align
                          - bottom
                          - max_width
                          - show_by_default
                      enabled:
                        type: boolean
                    required:
                      - control
                      - track
                      - style
                  thumbsniper:
                    type: object
                    properties:
                      background_color:
                        type: string
                      images:
                        type: object
                        properties:
                          start:
                            type: string
                          pause:
                            type: string
                          finish:
                            type: string
                        required:
                          - start
                          - pause
                          - finish
                        description: >
                          One absolute URL per idle moment: `start` before first
                          play, `pause` while paused, `finish` after the end —
                          drawn over `background_color`.
                      cards:
                        type: array
                        items:
                          type: object
                          properties:
                            base:
                              type: object
                              properties:
                                name:
                                  type: string
                                image:
                                  type: string
                              required:
                                - name
                                - image
                              description: >
                                What the card is: `name` labels it for whoever
                                manages the video, `image` is the artwork the
                                player draws while the card is on screen.
                            window:
                              type: object
                              properties:
                                start:
                                  type: integer
                                end:
                                  type: integer
                              required:
                                - start
                                - end
                              description: >
                                When the card is on screen, in seconds counted
                                from the start of the video — shown from `start`
                                until `end`.
                            button:
                              type: object
                              properties:
                                active:
                                  type: boolean
                                text:
                                  type: string
                                url:
                                  type: string
                                new_tab:
                                  type: boolean
                                style:
                                  type: object
                                  properties:
                                    size:
                                      type: string
                                      enum:
                                        - sm
                                        - md
                                        - lg
                                    position:
                                      type: string
                                      enum:
                                        - tl
                                        - tc
                                        - tr
                                        - cl
                                        - cc
                                        - cr
                                        - bl
                                        - bc
                                        - br
                                    text_color:
                                      type: string
                                    background_color:
                                      type: string
                                    background_hover_color:
                                      type: string
                                  required:
                                    - size
                                    - position
                                    - text_color
                                    - background_color
                                    - background_hover_color
                                  description: >
                                    How the button is drawn: `size` and
                                    `position` place it on the card, and the
                                    three colors are CSS strings kept exactly as
                                    stored, never normalized.
                              required:
                                - active
                                - text
                                - url
                                - new_tab
                                - style
                              description: >
                                The card's optional call to action. `active`
                                decides whether it is drawn, `text` is the
                                label; the rest applies only while it is on.
                            id:
                              type: string
                          required:
                            - base
                            - window
                            - button
                            - id
                        description: >
                          Timed cards overlaid on the video — artwork, a time
                          window and an optional button. They share only
                          `enabled` with `images`.
                      enabled:
                        type: boolean
                    required:
                      - background_color
                      - images
                      - cards
                    description: >
                      Still images shown whenever no frame is playing, plus
                      timed cards on top. Not the video's own thumbnail, which
                      is set apart from these.
                  turbo:
                    description: >
                      Playback speed the player applies on its own instead of
                      leaving the viewer at 1x. `mode` says if the rate is set
                      by hand or under an A/B test; the tabs follow it.
                    allOf:
                      - type: object
                        properties:
                          enabled:
                            type: boolean
                            description: >
                              Whether the player applies a turbo speed at all.
                              While false the video plays at 1x and every rate
                              below is inert.
                          mode:
                            type: string
                            enum:
                              - single
                              - auto_test
                            description: >
                              `single` serves one rate to everyone; `auto_test`
                              means a test is running and returns to `single`
                              when it closes.
                        required:
                          - enabled
                          - mode
                      - oneOf:
                          - title: single
                            type: object
                            description: >-
                              A single configured rate is in force; no test is
                              running.
                            properties:
                              speed:
                                type: number
                                format: float
                                description: >
                                  The configured rate, 1 being normal — the
                                  dashboard offers 0.9 to 1.5 in steps of 0.1. A
                                  named `winner` is served in its place.
                            required:
                              - speed
                          - title: auto_test
                            type: object
                            description: >
                              A test is running; the player sweeps
                              `speed_start`…`speed_end` and deals each viewer
                              one rate.
                            properties:
                              speed_start:
                                type: number
                                format: float
                                description: >-
                                  The lowest rate under test, where the swept
                                  range opens.
                              speed_end:
                                type: number
                                format: float
                                description: >
                                  The highest rate under test; the sweep walks
                                  from `speed_start` to here in steps of 0.1.
                              winner:
                                type:
                                  - number
                                  - 'null'
                                format: float
                                description: >
                                  The rate the test settled on — null while it
                                  is still running. Served to everyone in place
                                  of `speed`.
                            required:
                              - speed_start
                              - speed_end
                  headline:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                        description: >
                          Whether any headline is drawn at all. While false
                          nothing renders and the variants below are inert.
                      mode:
                        type: string
                        enum:
                          - single
                          - auto_test
                        description: >
                          `single` shows one variant to everyone. `auto_test`
                          means a test is dealing variants out; it returns to
                          `single` when the test closes.
                      active_number:
                        type: integer
                        description: >
                          The variant served to everyone, matched against
                          `base.number`; no match falls back to the first. Null
                          while the video rotates its whole set.
                      variants:
                        type: array
                        items:
                          type: object
                          properties:
                            base:
                              type: object
                              properties:
                                name:
                                  type: string
                                number:
                                  type: integer
                                active:
                                  type: boolean
                              required:
                                - name
                                - number
                                - active
                            content:
                              type: object
                              properties:
                                kind:
                                  type: string
                                responsive:
                                  type: boolean
                                url_desktop:
                                  type:
                                    - string
                                    - 'null'
                                url_mobile:
                                  type:
                                    - string
                                    - 'null'
                                html:
                                  type: string
                                css:
                                  type:
                                    - string
                                    - 'null'
                              required:
                                - kind
                                - responsive
                                - url_desktop
                                - url_mobile
                                - html
                                - css
                            style:
                              type: object
                              properties:
                                typography:
                                  type: object
                                  properties:
                                    family:
                                      type:
                                        - string
                                        - 'null'
                                layout:
                                  type: object
                                  properties:
                                    width:
                                      type:
                                        - string
                                        - 'null'
                              required:
                                - typography
                                - layout
                            id:
                              type: string
                          required:
                            - base
                            - content
                            - style
                        description: >
                          The headlines this video holds, one per entry. All are
                          listed whatever the mode; `active_number` says which
                          one a viewer actually sees.
                    required:
                      - enabled
                      - mode
                      - active_number
                      - variants
                    description: >
                      The copy drawn above the player. Picked by hand or by an
                      A/B test — `mode` says which, `active_number` which
                      variant is served.
                  progress_bar:
                    type: object
                    properties:
                      height:
                        type: integer
                      use_base_color:
                        type: boolean
                      current_color:
                        type: string
                      color:
                        type: string
                      enabled:
                        type: boolean
                    required:
                      - height
                      - use_base_color
                      - current_color
                      - color
                  resume:
                    type: object
                    properties:
                      disable_pause:
                        type: boolean
                      styles:
                        type: object
                        properties:
                          background_color:
                            type: string
                          foreground_color:
                            type: string
                        required:
                          - background_color
                          - foreground_color
                        description: >
                          Colors of the modal, as CSS strings kept exactly as
                          sent. Older videos may use any CSS notation, so read
                          them as opaque.
                      texts:
                        type: object
                        properties:
                          play:
                            type: string
                          replay:
                            type: string
                          title:
                            type: string
                        required:
                          - play
                          - replay
                          - title
                        description: >
                          The copy on the modal: `title` is the heading, `play`
                          and `replay` label the two buttons under it.
                      enabled:
                        type: boolean
                    required:
                      - disable_pause
                      - styles
                      - texts
                    description: >
                      The "keep watching" modal a returning viewer meets.
                      `enabled` switches it on; everything else applies only
                      while it is on.
                  smart_autoplay:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                      mode:
                        type: string
                        enum:
                          - single
                          - auto_test
                        description: >
                          `single` shows the variant named by `active_number` to
                          everyone. `auto_test` means a test is dealing variants
                          out; it returns to `single` when the test closes.
                      active_number:
                        type: integer
                        description: >
                          The selected variant, matched against `base.number` in
                          `variants`. Read only while `mode` is `single`; no
                          match falls back to the first entry.
                      variants:
                        type: array
                        items:
                          type: object
                          properties:
                            base:
                              type:
                                - object
                                - 'null'
                              properties:
                                name:
                                  type: string
                                number:
                                  type: integer
                                version:
                                  type: string
                                template:
                                  type:
                                    - string
                                    - 'null'
                                configuration_kind:
                                  type: string
                                template_name:
                                  type: 'null'
                                position:
                                  type: 'null'
                              required:
                                - name
                                - number
                                - version
                                - template
                                - configuration_kind
                                - template_name
                                - position
                            playback:
                              type:
                                - object
                                - 'null'
                              properties:
                                start_at:
                                  type:
                                    - number
                                    - 'null'
                                  format: float
                                end_at:
                                  type:
                                    - number
                                    - 'null'
                                  format: float
                                auto_unmute:
                                  type: boolean
                                animation:
                                  type:
                                    - object
                                    - 'null'
                                  properties:
                                    kind:
                                      type: string
                                  required:
                                    - kind
                              required:
                                - start_at
                                - end_at
                                - auto_unmute
                                - animation
                            styles:
                              type:
                                - object
                                - 'null'
                              properties:
                                background_color:
                                  type:
                                    - string
                                    - 'null'
                                foreground_color:
                                  type:
                                    - string
                                    - 'null'
                              required:
                                - background_color
                                - foreground_color
                            texts:
                              type:
                                - object
                                - 'null'
                              properties:
                                top:
                                  type:
                                    - string
                                    - 'null'
                                bottom:
                                  type:
                                    - string
                                    - 'null'
                              required:
                                - top
                                - bottom
                            elements:
                              type:
                                - array
                                - 'null'
                              items:
                                type: object
                                properties:
                                  content:
                                    type: object
                                    properties:
                                      type:
                                        type: string
                                        enum:
                                          - box
                                          - image
                                          - text
                                      src:
                                        type:
                                          - string
                                          - 'null'
                                      alt:
                                        type:
                                          - string
                                          - 'null'
                                      value:
                                        type:
                                          - string
                                          - 'null'
                                    required:
                                      - type
                                      - src
                                      - alt
                                      - value
                                  style:
                                    type: object
                                    properties:
                                      color:
                                        type:
                                          - string
                                          - 'null'
                                      border_radius:
                                        type:
                                          - number
                                          - 'null'
                                        format: float
                                      align:
                                        type:
                                          - string
                                          - 'null'
                                    required:
                                      - color
                                      - border_radius
                                      - align
                                  border:
                                    type: object
                                    properties:
                                      size:
                                        type:
                                          - number
                                          - 'null'
                                        format: float
                                      color:
                                        type:
                                          - string
                                          - 'null'
                                      type:
                                        type:
                                          - string
                                          - 'null'
                                    required:
                                      - size
                                      - color
                                      - type
                                  typography:
                                    type: object
                                    properties:
                                      size:
                                        type:
                                          - number
                                          - 'null'
                                        format: float
                                      weight:
                                        type:
                                          - string
                                          - 'null'
                                    required:
                                      - size
                                      - weight
                                  layout:
                                    type: object
                                    properties:
                                      order:
                                        type: integer
                                      x:
                                        type: number
                                        format: float
                                      'y':
                                        type: number
                                        format: float
                                      width:
                                        type: number
                                        format: float
                                      height:
                                        type: number
                                        format: float
                                      rotation:
                                        type: integer
                                      opacity:
                                        type: number
                                        format: float
                                    required:
                                      - order
                                      - x
                                      - 'y'
                                      - width
                                      - height
                                      - rotation
                                      - opacity
                                  id:
                                    type: string
                                required:
                                  - content
                                  - style
                                  - border
                                  - typography
                                  - layout
                                  - id
                            id:
                              type: string
                            template_name:
                              type:
                                - string
                                - 'null'
                              description: >-
                                On a preset entry, the catalog template it
                                renders, echoed as stored.
                            template_position:
                              type:
                                - string
                                - 'null'
                              description: >-
                                On a preset entry, the nine-area grid slot the
                                template is anchored on.
                        description: >
                          All the previews this video holds. A preset entry is
                          just its selection; a custom or legacy entry carries
                          the full sculpted object.
                    required:
                      - enabled
                      - mode
                      - active_number
                      - variants
                    description: >
                      The animated preview that plays before the video itself.
                      `enabled` switches it on; `mode` says how the served
                      variant is chosen.
                required:
                  - id
                  - status
                  - controls
                  - call_actions
                  - alternative_video
                  - traffic_filter
                  - name
                  - description
                  - folder_id
                  - styles
                  - general
                  - immersive_mode
                  - mini_hooks
                  - pixels
                  - playback
                  - subtitle
                  - thumbsniper
                  - turbo
                  - headline
                  - progress_bar
                  - resume
                  - smart_autoplay
              example:
                id: 652f2b1e8f1b2c3d4e5f6a7b
                name: Landing hero
                description: Hero above the fold
                folder_id: 66a0c1d2e3f4a5b6c7d8e9f0
                status: ready
                controls:
                  backward: false
                  big_play: true
                  forward: false
                  fullscreen: true
                  play_pause: true
                  seekbar: true
                  time: true
                  volume: true
                  fake_bar: false
                  speed: true
                call_actions:
                  enabled: true
                  items:
                    - base:
                        name: CTA principal
                        type: outside_video
                        active: true
                      window:
                        start: 45
                        end: 120
                        persist_on_video_end: true
                        show_to_returning_viewer: false
                      action:
                        content: Comprar agora
                        url: https://example.com/checkout
                        open_in_new_tab: true
                        html: <strong>Comprar agora</strong>
                        as_html: false
                      scroll:
                        scroll_enabled: true
                        scroll_type: auto
                        scroll_offset: 100
                      image:
                        image_as_button: false
                        image_url: https://example.com/cta.png
                        image_styles:
                          height: 40
                          width: 160
                          opacity: 100
                      delay:
                        delay: false
                        delay_options:
                          query: .buy
                          query_type: class
                      design:
                        typography:
                          family: Inter
                          letter_spacing: 0
                          line_height: 1.2
                          size: 16
                          weight: 600
                        styles:
                          background_color: '#1890FF'
                          background_hover_color: '#096DD9'
                          text_color: '#FFFFFF'
                          text_hover_color: '#F0F0F0'
                          border_radius: 8
                          padding:
                            binding: true
                            values:
                              - 12
                              - 24
                              - 12
                              - 24
                          shadow_enabled: true
                          shadow:
                            blur: 12
                            color: '#00000040'
                            horizontal: 0
                            vertical: 4
                            spread: 2
                        animation:
                          type: pulse
                        rich_element:
                          type: button
                          width: 100
                          height: 40
                          x: 0
                          'y': 0
                          opacity: 100
                          order: 1
                          rotation: 0
                      id: 652f2b1e8f1b2c3d4e5f0003
                alternative_video:
                  enabled: true
                  id: 507f191e810c19729de860ea
                traffic_filter:
                  fallback_video_id: 652f2b1e8f1b2c3d4e5f6a7c
                  token: gate_7f3c1a
                  languages:
                    - pt
                    - en
                  countries:
                    - BR
                    - US
                  devices:
                    - desktop
                    - mobile
                  query_params:
                    - utm_source
                  block_proxy: true
                  enabled: true
                styles:
                  background_color: '#1890FF'
                  foreground_color: '#FFFFFF'
                  border_radius: 12
                  linear_gradient:
                    angle: 90
                    primary_color: '#FFFFFF'
                    primary_stop: 0
                    secondary_color: '#5C68A2'
                    secondary_stop: 100
                    enabled: true
                general:
                  currency: BRL
                  pitch_time: 120
                  preload_type: netflix
                  start_quality: auto
                immersive_mode:
                  desktop: true
                  disable_scrolling: false
                  expand_on_play: true
                  minimize_on_pause: false
                  mobile: true
                  enabled: true
                mini_hooks:
                  elements:
                    - base:
                        name: Scarcity badge
                        type: image
                        active: true
                      window:
                        start: 12
                        end: 48
                      layout:
                        x: -1
                        'y': -1
                        width: 1933.632
                        height: 1079.794
                        rotation: 0
                        opacity: 1
                        order: 1
                      content:
                        src: https://static.vturb.com/badge.png
                        alt: Only 7 left
                        value: null
                      style:
                        align: null
                        background_color: null
                        border_radius: null
                        padding: null
                        text_color: null
                      typography:
                        family: null
                        size: null
                        weight: null
                      counter:
                        color: null
                        font_size: null
                        font_weight: null
                      id: 652f2b1e8f1b2c3d4e5f0004
                    - base:
                        name: Offer countdown
                        type: countdown-text
                        active: true
                      window:
                        start: 60
                        end: 180
                      layout:
                        x: 240
                        'y': 820
                        width: 0
                        height: 0
                        rotation: 0
                        opacity: 1
                        order: 2
                      content:
                        src: null
                        alt: null
                        value: Offer ends in {1:30}
                      style:
                        align: center
                        background_color: '#18cc33'
                        border_radius: 8
                        padding:
                          - 8.2
                          - 16.38
                          - 8.2
                          - 16.38
                        text_color: '#FFFFFF'
                      typography:
                        family: Inter
                        size: 30.72
                        weight: 400
                      counter:
                        color: '#FF0000'
                        font_size: 30.72
                        font_weight: 700
                      id: 652f2b1e8f1b2c3d4e5f0005
                  enabled: true
                pixels:
                  items:
                    - base:
                        name: Compra
                        type: facebook
                      tag:
                        id: '1234567890123456'
                        value: Compra
                        html: >-
                          <script>window.dataLayer.push({ event: 'compra'
                          })</script>
                      dispatch:
                        active: true
                        threshold: 30
                        mode: time
                      id: 652f2b1e8f1b2c3d4e5f0002
                  enabled: true
                playback:
                  disable_pause: false
                  scroll_to_action_in: 30
                  smart_pause: true
                  action_after_finish:
                    type: loop
                    start: 5
                  enabled: true
                subtitle:
                  control: true
                  track:
                    name: pt-br.vtt
                    url: >-
                      https://scripts.converteai.net/org/players/652f2b1e8f1b2c3d4e5f6a7b/subtitle.vtt
                  style:
                    font_size: 16px
                    color: '#FFFFFF'
                    background_color: '#000000'
                    text_align: center
                    bottom: 20px
                    max_width: 80%
                    show_by_default: true
                  enabled: true
                thumbsniper:
                  background_color: '#101010'
                  images:
                    start: https://static.vturb.com/players/652f2b1e/start.jpg
                    pause: https://static.vturb.com/players/652f2b1e/pause.jpg
                    finish: https://static.vturb.com/players/652f2b1e/finish.jpg
                  cards:
                    - base:
                        name: Oferta principal
                        image: https://static.vturb.com/players/652f2b1e/card.png
                      window:
                        start: 30
                        end: 90
                      button:
                        active: true
                        text: Quero agora
                        url: https://example.com/checkout
                        new_tab: true
                        style:
                          size: md
                          position: bc
                          text_color: '#FFFFFF'
                          background_color: '#1890FF'
                          background_hover_color: '#096DD9'
                      id: 652f2b1e8f1b2c3d4e5f0001
                  enabled: true
                turbo:
                  enabled: true
                  mode: single
                  speed: 1.2
                  speed_start: 1.2
                  speed_end: 1.5
                  winner: 1.3
                headline:
                  enabled: true
                  mode: single
                  active_number: 2
                  variants:
                    - base:
                        name: Hero copy
                        number: 2
                        active: true
                      content:
                        kind: image
                        responsive: true
                        url_desktop: https://cdn.vturb.com/h/2-d.png
                        url_mobile: https://cdn.vturb.com/h/2-m.png
                        html: <h1>Buy now</h1>
                        css: 'color: #fff;'
                      style:
                        typography:
                          family: Inter
                        layout:
                          width: 80%
                      id: 652f2b1e8f1b2c3d4e5f0201
                    - base:
                        name: Hero html
                        number: 3
                        active: false
                      content:
                        kind: html
                        responsive: false
                        url_desktop: null
                        url_mobile: null
                        html: <h1>Buy now</h1>
                        css: null
                      style:
                        typography: {}
                        layout: {}
                      id: 652f2b1e8f1b2c3d4e5f0202
                progress_bar:
                  height: 12
                  use_base_color: false
                  current_color: '#0000FF'
                  color: '#0000FF'
                  enabled: true
                resume:
                  disable_pause: false
                  styles:
                    background_color: '#1890FF'
                    foreground_color: '#FFFFFF'
                  texts:
                    play: Keep watching
                    replay: Replay
                    title: You already started
                  enabled: true
                smart_autoplay:
                  enabled: true
                  mode: single
                  active_number: 2
                  variants:
                    - base:
                        name: Preview A
                        number: 2
                        version: '2'
                        template: classic
                        configuration_kind: custom
                        template_name: null
                        position: null
                      playback:
                        start_at: 1.5
                        end_at: 6
                        auto_unmute: true
                        animation:
                          kind: fade
                      styles:
                        background_color: '#000000'
                        foreground_color: '#FFFFFF'
                      texts:
                        top: Your video
                        bottom: starts now
                      elements:
                        - content:
                            type: box
                            src: null
                            alt: null
                            value: null
                          style:
                            color: rgba(9, 150, 46, 0.75)
                            border_radius: 15.9
                            align: null
                          border:
                            size: 3.9
                            color: '#FFFFFF'
                            type: solid
                          typography:
                            size: null
                            weight: null
                          layout:
                            order: 1
                            x: 528
                            'y': 296
                            width: 864
                            height: 487.95
                            rotation: 0
                            opacity: 1
                          id: smart_autoplay_652f2b1e8f1b2c3d4e5f6a7b_2_el_1
                        - content:
                            type: text
                            src: null
                            alt: null
                            value: Your video already started
                          style:
                            color: '#FFFFFF'
                            border_radius: null
                            align: center
                          border:
                            size: null
                            color: null
                            type: null
                          typography:
                            size: 53.25
                            weight: '700'
                          layout:
                            order: 2
                            x: 528
                            'y': 342.6
                            width: 864
                            height: 81
                            rotation: 0
                            opacity: 1
                          id: smart_autoplay_652f2b1e8f1b2c3d4e5f6a7b_2_el_2
                        - content:
                            type: image
                            src: https://cdn.vturb.com/sa/sound.png
                            alt: Click to hear
                            value: null
                          style:
                            color: null
                            border_radius: null
                            align: null
                          border:
                            size: null
                            color: null
                            type: null
                          typography:
                            size: null
                            weight: null
                          layout:
                            order: 3
                            x: 823.95
                            'y': 451.65
                            width: 271.95
                            height: 192
                            rotation: 0
                            opacity: 1
                          id: smart_autoplay_652f2b1e8f1b2c3d4e5f6a7b_2_el_3
                      id: smart_autoplay_652f2b1e8f1b2c3d4e5f6a7b_2
                    - template_name: discrete
                      template_position: top-left
                      id: smart_autoplay_652f2b1e8f1b2c3d4e5f6a7b_4
                    - base:
                        name: Preview B
                        number: 3
                        version: '2'
                        template: null
                        configuration_kind: custom
                        template_name: null
                        position: null
                      playback:
                        start_at: null
                        end_at: null
                        auto_unmute: false
                        animation: null
                      styles:
                        background_color: null
                        foreground_color: null
                      texts:
                        top: null
                        bottom: null
                      elements: []
                      id: smart_autoplay_652f2b1e8f1b2c3d4e5f6a7b_3
        '401':
          description: Missing API credential.
          content:
            application/problem+json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  request_id:
                    type: string
                required:
                  - type
                  - code
                  - message
                  - request_id
              example:
                type: https://docs.vturb.com/errors/unauthorized
                code: unauthorized
                message: >-
                  Missing or invalid API credential. Send a vt_ token in the
                  Authorization header.
                request_id: 00000000-0000-0000-0000-000000000000
        '403':
          description: The organization is not enabled for this API.
          content:
            application/problem+json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  request_id:
                    type: string
                required:
                  - type
                  - code
                  - message
                  - request_id
              example:
                type: https://docs.vturb.com/errors/org_not_enabled
                code: org_not_enabled
                message: Your organization is not enabled for this API.
                request_id: 00000000-0000-0000-0000-000000000000
        '404':
          description: No video matches that id for the authenticated caller.
          content:
            application/problem+json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  request_id:
                    type: string
                required:
                  - type
                  - code
                  - message
                  - request_id
              example:
                type: https://docs.vturb.com/errors/not_found
                code: not_found
                message: Resource not found.
                request_id: 00000000-0000-0000-0000-000000000000
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Paste your VTurb API token (vt_...). Sent as `Authorization: Bearer
        <token>`.

````