Chat id do Telegram: como pegar o ID de usuário, grupo, canal e tópico com o seu bot
Para pegar o chat id no Telegram, mande uma mensagem para o seu bot e chame o método getUpdates: o número em message.chat.id é o chat id. Usuários têm ids positivos, grupos básicos têm ids negativos, e supergrupos e canais começam com -100. Veja como fazer em cada tipo de chat e o que fazer quando a resposta vem vazia.
O que é o chat_id e quais os formatos
O chat_id diz à Bot API para onde enviar a mensagem. Ele aparece em todo update dentro do objeto chat, junto com o type:
| Tipo de chat | type | Exemplo de id |
|---|---|---|
| Usuário (privado) | private | 123456789 |
| Grupo básico | group | -123456789 |
| Supergrupo | supergroup | -1001234567890 |
| Canal | channel | -1001234567890 ou @nomedocanal |
Guarde o id como inteiro de 64 bits: ele pode passar de 32 bits (no máximo 52 bits significativos), e um int comum pode corromper o valor.
Chat id do usuário com getUpdates
- Abra o chat com o seu bot e envie
/startou qualquer texto. - Chame
getUpdatesno navegador, com curl ou no Bot API Tester (getUpdates). - Procure
message.chat.idna resposta.
curl "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/getUpdates"
{
"ok": true,
"result": [
{
"update_id": 100000001,
"message": {
"message_id": 1,
"from": {"id": 123456789, "is_bot": false, "first_name": "Ana"},
"chat": {"id": 123456789, "first_name": "Ana", "type": "private"},
"date": 1793280000,
"text": "/start"
}
}
]
}
Tem vários chats? Este script em Python lista o id, o tipo e o nome de cada chat que aparece nos updates (mensagens e posts de canal):
import os
import requests
token = os.environ["TELEGRAM_BOT_TOKEN"]
data = requests.get(f"https://api.telegram.org/bot{token}/getUpdates", timeout=10).json()
for update in data.get("result", []):
msg = update.get("message") or update.get("channel_post") or {}
chat = msg.get("chat")
if chat:
print(chat["id"], chat["type"], chat.get("title") or chat.get("first_name"))
Ainda não tem bot? Comece pelo guia como criar um bot no Telegram.
Chat id de grupo e supergrupo
- Adicione o bot ao grupo.
- No grupo, envie
/start@seu_bot(troque pelo username do seu bot). - Chame
getUpdatese copiemessage.chat.id— um número negativo.
Dica: assim que o bot entra no grupo, o Telegram já gera updates — a mensagem de serviço com new_chat_members e o update my_chat_member —, e ambos trazem o chat.id.
Por que o @seu_bot? Por padrão os bots rodam em modo de privacidade: no grupo, recebem só comandos destinados a eles, respostas às suas mensagens e mensagens de serviço. Texto comum não chega. Para receber tudo, desative o modo com /setprivacy no @BotFather (e adicione o bot de novo ao grupo) ou torne o bot administrador.
Atenção: quando um grupo básico vira supergrupo, o id muda. Enviar para o id antigo gera erro, e a resposta traz o novo id em parameters.migrate_to_chat_id.
Chat id de canal
- Canal público: não precisa descobrir o número — use
@nomedocanalcomochat_id. - Canal privado: adicione o bot como administrador com permissão para publicar, faça um post no canal e chame
getUpdates. O post chega comochannel_post, não comomessage; o id está emchannel_post.chat.ide começa com-100.
Tópicos de fórum: message_thread_id
Em supergrupos com tópicos, o chat_id é o do supergrupo; o tópico é identificado pelo message_thread_id que vem na mensagem. Para escrever num tópico, envie os dois:
{"chat_id": -1001234567890, "message_thread_id": 42, "text": "Olá, tópico!"}
getUpdates vazio ou 409 Conflict: soluções
{"ok":true,"result":[]}: não há updates novos. Envie outra mensagem ao bot e chame de novo. Updates ficam guardados por no máximo 24 horas.- Outro programa consumiu os updates: se o código do bot ou uma automação estiver fazendo polling, os updates já foram confirmados. Pare o programa e teste de novo.
409 Conflict:Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first. ChamedeleteWebhook— lembrando que isso desliga a integração que usava o webhook. Detalhes no guia webhook do bot do Telegram.- Grupo sem updates: mensagens comuns não chegam no modo de privacidade. Use
/start@seu_bot.
Onde usar o chat id
Com o id em mãos, você envia mensagens com sendMessage. É o que pedem as automações como o n8n, os scripts de notificação (deploy, monitoramento, pedidos de loja) e os assistentes de IA que se conectam ao Telegram — normalmente junto com o token do bot.
curl -X POST "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/sendMessage" \
-H "Content-Type: application/json" \
-d '{"chat_id": 123456789, "text": "Deploy concluído"}'
Lembre: o bot só consegue escrever para quem já iniciou uma conversa com ele. Formatação, botões e erros como chat not found estão no guia como enviar mensagens pela API do Telegram.
Perguntas frequentes
Como pegar o chat id de um grupo no Telegram?
Adicione o bot ao grupo, envie /start@seu_bot no grupo e chame getUpdates. O valor de message.chat.id é negativo; em supergrupos ele começa com -100.
Por que o chat id começa com -100?
Ids no formato -1001234567890 são de supergrupos e canais. Grupos básicos também têm id negativo, mas sem esse prefixo; quando um grupo é convertido em supergrupo, o id muda.
Posso usar @username no lugar do chat id?
Sim para canais e supergrupos públicos: passe @nomedocanal em chat_id. Para usuários, não: é preciso o id numérico, e a pessoa precisa ter iniciado o bot.
Por que o getUpdates retorna result vazio?
Não há updates novos — mande outra mensagem ao bot. Também acontece quando outro programa (o seu bot rodando, uma automação) já consumiu os updates, ou quando eles têm mais de 24 horas.
O chat id é igual ao user id?
Em chat privado com o bot, sim: chat.id é igual ao from.id do usuário. Em grupos e canais, chat.id identifica o grupo ou canal, e from.id identifica quem enviou.
Guias relacionados
Como criar um bot no Telegram grátis: do BotFather à primeira mensagem
Aprenda a criar bot no Telegram grátis com o @BotFather: pegue o token, teste com getMe e envie a primeira mensagem com curl e Python.
Como enviar mensagens pela API do Telegram com sendMessage (curl, Python e JavaScript)
Use a API do Telegram para enviar mensagens com sendMessage: exemplos em curl, Python e JavaScript, HTML e MarkdownV2, botões inline e erros comuns.
Telegram bot token: como pegar o token do bot, verificar e revogar
Veja como pegar o token do bot do Telegram no @BotFather, achar o token de um bot existente, testar com getMe e revogar um token vazado.
Como configurar o webhook do bot do Telegram: setWebhook, secret_token e n8n
Configure o webhook do bot do Telegram: requisitos de HTTPS e portas, setWebhook com secret_token, getWebhookInfo, deleteWebhook e erros comuns no n8n.