# InlineQueryResultCachedDocument

> Represents a link to a file stored on the Telegram servers

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

---

Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file.

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| type | String | Always | Type of the result, must be document |
| id | String | Always | Unique identifier for this result, 1-64 bytes |
| title | String | Always | Title for the result |
| document_file_id | String | Always | A valid file identifier for the file |
| description | String | Optional | Short description of the result |
| caption | String | Optional | Caption of the document to be sent, 0-1024 characters after entities parsing |
| parse_mode | String | Optional | Mode for parsing entities in the document caption. See formatting options for more details. |
| caption_entities | Array of MessageEntity | Optional | List of special entities that appear in the caption, which can be specified instead of parse_mode |
| reply_markup | InlineKeyboardMarkup | Optional | Inline keyboard attached to the message |
| input_message_content | InputMessageContent | Optional | Content of the message to be sent instead of the file |

> [!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.
