Telegram Bot API
🌐 Português

Chat id do Telegram: como pegar o ID de usuário, grupo, canal e tópico com o seu bot

· 6 min de leitura

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 chattypeExemplo de id
Usuário (privado)private123456789
Grupo básicogroup-123456789
Supergruposupergroup-1001234567890
Canalchannel-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

  1. Abra o chat com o seu bot e envie /start ou qualquer texto.
  2. Chame getUpdates no navegador, com curl ou no Bot API Tester (getUpdates).
  3. Procure message.chat.id na 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

  1. Adicione o bot ao grupo.
  2. No grupo, envie /start@seu_bot (troque pelo username do seu bot).
  3. Chame getUpdates e copie message.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

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

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.

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.