Bad Request: chat not found is the Bot API's answer when the chat_id you sent does not name a chat this bot can reach. The request is well-formed; Telegram simply has no such chat for this bot. There are five causes, and they can be checked in a few minutes.
1. The -100 prefix is missing
Supergroups and channels have IDs of the form -100 followed by the chat's own number. If you took 1234567890 from a link such as t.me/c/1234567890/45 or from a client that shows MTProto IDs, the Bot API wants -1001234567890. The converter turns one form into the other, and the message link parser does it for a whole link.
A quick test: a basic group has a short negative ID, a supergroup or channel has thirteen digits after the minus sign, a person has a positive number.
2. The bot has never met this chat
A bot cannot address a chat it has no relation to.
- A person: they must have pressed Start in your bot at least once. A bot can never write first.
- A group: the bot must be a member.
- A channel: the bot must be an administrator.
Knowing the correct number is not enough; the relation has to exist.
3. The username is wrong or is a person's
chat_id may be an @username, but only for public channels and public groups. @some_person does not work, even if the name is right — people are only addressed by number. Check a public name with the chat ID lookup: if Telegram knows a channel or group by that name, you get its ID.
4. The group was upgraded
When a basic group becomes a supergroup (for example because someone enabled topics or made it public), it receives a new ID in the -100… range. The old ID stops working. The update announcing the change carries migrate_to_chat_id with the new value; if you missed it, read the ID again from a new message with the getUpdates inspector.
5. The token belongs to a different bot
Every relation is per bot. If you added bot A to the group but send with bot B's token, bot B gets "chat not found". The bot token checker shows which bot a token belongs to; it asks Telegram from your browser, the token is not sent to a server.
Check it with getChat
getChat answers the question directly, without sending anything into the chat:
curl -s "https://api.telegram.org/bot$TOKEN/getChat" -d chat_id=-1001234567890
"ok":true with the chat's title means the ID and the relation are fine and the problem is elsewhere in your request. chat not found means one of the five causes above.
Related answers
| Answer | Meaning |
|---|---|
Bad Request: chat not found | No such chat for this bot (this page) |
Forbidden: bot was kicked from the group chat | The bot was removed |
Forbidden: bot is not a member of the channel chat | Add the bot as administrator |
Forbidden: bot was blocked by the user | The person stopped the bot |
Bad Request: group chat was upgraded to a supergroup chat | Use the new ID from migrate_to_chat_id |
