# channels.inviteToChannel

Invite users to a channel/supergroup

## 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.channels.inviteToChannel({
        channel: new Api.InputChannel({...}),
        users: [new Api.InputUser({...})],
        }));
    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.channels.inviteToChannel({
        channel: new Api.InputChannel({...}),
        users: [new Api.InputUser({...})],
        }));
    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---
channels.inviteToChannel#199f3a6c channel:InputChannel users:Vector<InputUser> = Updates;
```

## Parameters

|     Name    | Type                                                                                                          | Description        |
| :---------: | ------------------------------------------------------------------------------------------------------------- | ------------------ |
| **channel** | [InputChannel](https://core.telegram.org/type/InputChannel)                                                   | Channel/supergroup |
|  **users**  | [Vector](https://core.telegram.org/type/Vector%20t) < [InputUser](https://core.telegram.org/type/InputUser) > | Users to invite    |

## Result

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

## Possible errors

| Code | Type                       | Description                                                                   |
| :--: | -------------------------- | ----------------------------------------------------------------------------- |
|  400 | BOTS\_TOO\_MUCH            | There are too many bots in this chat/channel                                  |
|  400 | BOT\_GROUPS\_BLOCKED       | This bot can't be added to groups                                             |
|  400 | CHANNEL\_INVALID           | The provided channel is invalid                                               |
|  400 | CHANNEL\_PRIVATE           | You haven't joined this channel/supergroup                                    |
|  400 | CHAT\_ADMIN\_REQUIRED      | You must be an admin in this chat to do this                                  |
|  400 | CHAT\_INVALID              | Invalid chat                                                                  |
|  403 | CHAT\_WRITE\_FORBIDDEN     | You can't write in this chat                                                  |
|  400 | INPUT\_USER\_DEACTIVATED   | The specified user was deleted                                                |
|  400 | MSG\_ID\_INVALID           | Invalid message ID provided                                                   |
|  400 | USERS\_TOO\_MUCH           | The maximum number of users has been exceeded (to create a chat, for example) |
|  400 | USER\_BANNED\_IN\_CHANNEL  | You're banned from sending messages in supergroups/channels                   |
|  400 | USER\_BLOCKED              | User blocked                                                                  |
|  400 | USER\_BOT                  | Bots can only be admins in channels.                                          |
|  403 | USER\_CHANNELS\_TOO\_MUCH  | One of the users you tried to add is already in too many channels/supergroups |
|  400 | USER\_ID\_INVALID          | The provided user ID is invalid                                               |
|  400 | USER\_KICKED               | This user was kicked from this supergroup/channel                             |
|  400 | USER\_NOT\_MUTUAL\_CONTACT | The provided user is not a mutual contact                                     |
|  403 | USER\_PRIVACY\_RESTRICTED  | The user's privacy settings do not allow you to do this                       |

## Can bots use this methd ?

### yes

## Related pages


---

# 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-channels-and-supergroups-and-geogroups/channels.invitetochannel.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.
