# messages.startBot

Start a conversation with a bot using a [deep linking parameter](https://core.telegram.org/bots#deep-linking)

## Example

{% tabs %}
{% tab title="Javascript" %}

```javascript
const {Api, TelegramClient} = require('telegram');
const {StringSession} = require('telegram/sessions');

const session = new StringSession('');
const client = new TelegramClient(session, apiId, apiHash, {});

(async function run() {
    const result = await client.invoke(new Api.messages.startBot({
        bot: new Api.InputUser({...}),
        peer: new Api.InputPeer({...}),
        randomId: 6414074,
        startParam: 'random string here',
        }));
    console.log(result); // prints the result
})();
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import {Api, TelegramClient} from 'telegram';
import {StringSession} from 'telegram/sessions';

const session = new StringSession('');
const client = new TelegramClient(session, apiId, apiHash, {});

(async function run() {
    const result: Api.Updates = await client.invoke(new Api.messages.startBot({
        bot: new Api.InputUser({...}),
        peer: new Api.InputPeer({...}),
        randomId: 6414074,
        startParam: 'random string here',
        }));
    console.log(result); // prints the result
})();
```

{% endtab %}
{% endtabs %}

## TL schema

```
updatesTooLong#e317af7e = Updates;
updateShortMessage#2296d2c8 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int user_id:int message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector<MessageEntity> = Updates;
updateShortChatMessage#402d5dbb flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int from_id:int chat_id:int message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector<MessageEntity> = Updates;
updateShort#78d4dec1 update:Update date:int = Updates;
updatesCombined#725b04c3 updates:Vector<Update> users:Vector<User> chats:Vector<Chat> date:int seq_start:int seq:int = Updates;
updates#74ae4240 updates:Vector<Update> users:Vector<User> chats:Vector<Chat> date:int seq:int = Updates;
updateShortSentMessage#11f1331c flags:# out:flags.1?true id:int pts:int pts_count:int date:int media:flags.9?MessageMedia entities:flags.7?Vector<MessageEntity> = Updates;
---functions---
messages.startBot#e6df7378 bot:InputUser peer:InputPeer random_id:long start_param:string = Updates;
```

## Parameters

|       Name       | Type                                                  | Description                                                               |
| :--------------: | ----------------------------------------------------- | ------------------------------------------------------------------------- |
|      **bot**     | [InputUser](https://core.telegram.org/type/InputUser) | The bot                                                                   |
|     **peer**     | [InputPeer](https://core.telegram.org/type/InputPeer) | The chat where to start the bot, can be the bot's private chat or a group |
|  **random\_id**  | [long](https://core.telegram.org/type/long)           | Random ID to avoid resending the same message                             |
| **start\_param** | [string](https://core.telegram.org/type/string)       | [Deep linking parameter](https://core.telegram.org/bots#deep-linking)     |

## Result

[Updates](https://core.telegram.org/type/Updates)

## Possible errors

| Code | Type                     | Description                     |
| :--: | ------------------------ | ------------------------------- |
|  400 | BOT\_INVALID             | This is not a valid bot         |
|  400 | INPUT\_USER\_DEACTIVATED | The specified user was deleted  |
|  400 | MSG\_ID\_INVALID         | Invalid message ID provided     |
|  400 | PEER\_ID\_INVALID        | The provided peer id is invalid |
|  400 | START\_PARAM\_EMPTY      | The start parameter is empty    |
|  400 | START\_PARAM\_INVALID    | Start parameter invalid         |
|  400 | START\_PARAM\_TOO\_LONG  | Start parameter is too long     |

## Can bots use this methd ?

### yes

## Related pages

### [Bots: An introduction for developers](https://core.telegram.org/bots)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://painor.gitbook.io/gramjs/working-with-deep-links/messages.startbot.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
