# Video

> This object represents a video file

**Category:** Telegram Bot API — Types (A-Z)  
**URL:** https://docs.botlify.cloud/video  
**Platform:** Botlify Cloud (https://botlify.cloud)  

---

This object represents a video file.

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| file_id | String | Always | Identifier for this file, which can be used to download or reuse the file |
| file_unique_id | String | Always | Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file. |
| width | Integer | Always | Video width as defined by the sender |
| height | Integer | Always | Video height as defined by the sender |
| duration | Integer | Always | Duration of the video in seconds as defined by the sender |
| thumbnail | PhotoSize | Optional | Video thumbnail |
| cover | Array of PhotoSize | Optional | Available sizes of the cover of the video in the message |
| start_timestamp | Integer | Optional | Timestamp in seconds from which the video will play in the message |
| qualities | Array of VideoQuality | Optional | List of available qualities of the video |
| file_name | String | Optional | Original filename as defined by the sender |
| mime_type | String | Optional | MIME type of the file as defined by the sender |
| file_size | Integer | Optional | File size in bytes. It can be bigger than 2^31 and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this value. |

> [!TIP]
> **Botlify Cloud Runtime**
> Credentials are auto-injected in .env — always load them with getenv(): BOT_TOKEN, ADMIN_CHAT_ID, BOT_USERNAME. Main database: database.db (SQLite, WAL mode). Runtime errors: error.log. Quick test: send to $ADMIN_CHAT_ID. Full details: Runtime Reference.
