The short answer
- 1Basic groups are chat; supergroups and channels are channel, told apart by flags.
- 2Supergroups and channels use channels.* methods and their own update sequence.
- 3An upgraded basic group gets a new ID; follow migrated_to.
In this article
One "group" in the app, four kinds in the API
The app shows groups and channels, but inside the API they split into four kinds with different shapes. Which methods you call and how you handle them depends on the kind.
| Kind | Shape in the API | What it is like |
|---|---|---|
| Basic group | chat | A small group, up to 200 members. Fewer features; its message IDs and update sequence are shared with your private chats |
| Supergroup | channel with the megagroup flag | Up to 200,000 members, with almost every group feature: topics (forums), the admin log, slow mode |
| Broadcast channel | channel with the broadcast flag | No subscriber limit, a view count on each post, only admins post |
| Gigagroup (broadcast group) | A converted supergroup | No member limit; only admins can post, so it behaves almost like a channel. The conversion cannot be undone |
The confusing part is that supergroups and channels are both channel. Tell them apart by their flags. Both use the channel methods (channels.*) and an update sequence of their own per channel; see handling updates.
When a basic group becomes a supergroup
A basic group becomes a supergroup through messages.migrateChat. It also happens when users turn on certain admin features in the app. The supergroup gets a new channel ID:
- The old group's information shows where it went (
migrated_to). - The new supergroup shows where it came from (
migrated_from).
Link the old group ID in your store to the new one, and fetch older message history from the old group. It is the same event that gives a group a new -100 ID in the Bot API; see reading chat IDs.
Referring to them, and permissions
| Task | Basic group | Supergroup or channel |
|---|---|---|
| Referring to it | ID only | ID + access_hash; see peers and access_hash |
| History and members | messages.* methods | channels.* methods |
| Permissions | Simple admin or member | Detailed admin rights, per-user restrictions (bans) and default permissions |
Channels and discussion groups come in pairs
Link a supergroup to a broadcast channel as its discussion group and every post gets comments in that group. In the API, the channel post and the discussion group's message point to each other. How channel owners run this is covered in should your channel have comments.
How many group messages a bot receives depends on privacy mode and admin status, not on the group's kind; see bot privacy mode.
FAQ
What is the difference between a basic group and a supergroup in the Telegram API?
A basic group is a chat object for small groups; a supergroup is a channel object with the megagroup flag and far more features.
Why is my supergroup a channel in the API?
Supergroups and broadcast channels share the channel type; the megagroup and broadcast flags tell them apart.
What happens to the ID when a group is upgraded?
It gets a new channel ID. The old group shows migrated_to and the new one migrated_from.
Sources
At a glance
- 1Four kinds
Basic group, supergroup, broadcast channel, gigagroup.
- 2Methods
messages.* for basic groups, channels.* for the rest.
- 3Migration
migrated_to and migrated_from link old and new IDs.
Updated