# sendMessageDraft

Source: https://core.telegram.org/bots/api#sendmessagedraft

[Documentation index](../llms.txt)

Use this method to stream a partial message to a user while the message is being generated. Note that the streamed draft is ephemeral and acts as a temporary 30-second preview - once the output is finalized, you **must** call [sendMessage](sendmessage.md) with the complete message to persist it in the user's chat. Returns *True* on success.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| chat\_id | Integer | Yes | Unique identifier for the target private chat |
| message\_thread\_id | Integer | Optional | Unique identifier for the target message thread |
| draft\_id | Integer | Yes | Unique identifier of the message draft; must be non-zero. Changes to drafts with the same identifier are animated. Otherwise, the draft is replaced without animation. |
| text | String | Optional | Text of the message to be sent, 0-4096 characters after entities parsing. Pass an empty text to show a “Thinking…” placeholder. |
| parse\_mode | String | Optional | Mode for parsing entities in the message text. See [formatting options](formatting-options.md) for more details. |
| entities | Array of [MessageEntity](messageentity.md) | Optional | A JSON-serialized list of special entities that appear in message text, which can be specified instead of *parse\_mode* |
| can\_stop | Boolean | Optional | Pass *True* to show the user a button to stop further drafts. The bot will receive an [Update](update.md) “stopped\_message\_generation” if the user presses the button. |
| keep\_on\_stop | Boolean | Optional | Pass *True* to keep the draft in the chat when the button is pressed. The draft will still disappear after a short time or if the bot sends a message. To fully preserve the partial draft, the bot should send it as a new message. |
