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

# Video Component

> Defines the structure for embedding or referencing video content within a QR Code landing page. Supports both hosted (external) and uploaded videos with optional thumbnail previews.

## Overview

The **Video Component** enables the inclusion of video content such as product demos, promotional clips, or event recordings within QR Code landing pages.\
It supports **externally hosted URLs** (e.g., YouTube, Vimeo, or CDN links) as well as videos **uploaded to Scanova’s server**.

A thumbnail image can also be specified to improve page load performance and provide a custom visual before playback begins.

## Properties

| Property                                    | Type      | Required | Description                                                                                                              |
| :------------------------------------------ | :-------- | :------- | :----------------------------------------------------------------------------------------------------------------------- |
| **video**                                   | `object`  | ✅ Yes    | Contains video metadata and URL information.                                                                             |
| **video.url**                               | `string`  | ✅ Yes    | The full video URL (supports both `http` and `https` formats). Must be a valid video link up to 2000 characters.         |
| [**video.name**](http://video.name)         | `string`  | No       | Optional display name or label for the video file.                                                                       |
| **thumbnail**                               | `object`  | No       | Defines the preview image shown before playback starts.                                                                  |
| **thumbnail.url**                           | `string`  | ✅ Yes    | URL for the thumbnail image (supports `.jpg`, `.png`, `.gif`, etc.). Must be a valid image link up to 2000 characters.   |
| [**thumbnail.name**](http://thumbnail.name) | `string`  | No       | Optional name or identifier for the thumbnail image.                                                                     |
| **isUploaded**                              | `boolean` | No       | Indicates whether the video is hosted on Scanova’s server (`true`) or an external source (`false`). Defaults to `false`. |

## Used in Categories

This component is used in the following categories:

* [Coupon](/guides/category-components/categories/coupon)
* [DynamicText](/guides/category-components/categories/dynamicText)
* [DynamicVCard](/guides/category-components/categories/dynamicVCard)
* [Event](/guides/category-components/categories/event)
* [Product](/guides/category-components/categories/product)
* [Wedding](/guides/category-components/categories/wedding)

## Schema

<CodeGroup>
  ```json Schema theme={null}
  {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "title": "Video Component",
    "description": "Video component",
    "additionalProperties": false,
    "required": [
      "video"
    ],
    "properties": {
      "video": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2000,
            "format": "uri",
            "pattern": "(http://www\\.|https://www\\.|http://|https://)?[a-z0-9]+([\\-.][a-z0-9]+)*\\.[a-z]{2,10}(:[0-9]{1,5})?(/.*)?$"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "thumbnail": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2000,
            "pattern": "(http://www\\.|https://www\\.|http://|https://)?[a-z0-9]+([\\-.][a-z0-9]+)*\\.[a-z]{2,10}(:[0-9]{1,5})?(/.*)?$"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "isUploaded": {
        "type": "boolean",
        "default": false,
        "description": "Is uploaded on our server ?"
      }
    }
  }
  ```
</CodeGroup>

## Notes

* Always use **HTTPS URLs** for both video and thumbnail resources to ensure secure delivery.
* If `isUploaded` is set to `true`, the video should exist on Scanova’s managed storage.
* Avoid using excessively large video files — optimize for web playback (recommended max size: **20–30 MB**).
* The **thumbnail** is displayed as a placeholder until the video is loaded or played.
* For better performance, consider using **compressed MP4 or WebM** formats.
