Cómo obtener el chat id de Telegram: usuarios, grupos, canales y temas
El chat id es el número que identifica un chat en la Bot API: es lo que pasas en el parámetro chat_id para enviar mensajes. Para obtener el chat id en Telegram, escríbele a tu bot, llama a getUpdates y lee message.chat.id en la respuesta. Abajo verás cómo hacerlo para usuarios, grupos, canales y temas de foro.
Qué es el chat_id y qué formatos tiene
| Tipo de chat | chat.type | Ejemplo de id |
|---|---|---|
| Usuario (chat privado) | private | 123456789 (positivo) |
| Grupo básico | group | -123456789 (negativo) |
| Supergrupo | supergroup | -1001234567890 |
| Canal | channel | -1001234567890 o @nombredelcanal |
El -100 forma parte del id: cópialo completo, con el signo menos. Guarda los ids como enteros de 64 bits, porque pueden superar los 32 bits. Y no confundas el chat id con el número del inicio del token: ese es el id del bot.
Si un grupo básico se convierte en supergrupo, su id cambia. La API te avisa con el error Bad Request: group chat was upgraded to a supergroup chat y el id nuevo en parameters.migrate_to_chat_id.
Método 1: obtener tu chat id con getUpdates
- Abre el chat con tu bot y pulsa Iniciar o envíale cualquier mensaje. Si aún no tienes bot, primero crea uno con BotFather.
- Llama a
getUpdatescon tu token: abre la URL en el navegador, usa curl o ejecuta getUpdates en Bot API Tester, que muestra el JSON de forma navegable. - Busca el objeto
chatdentro demessagey copia suid.
curl "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/getUpdates"
{
"ok": true,
"result": [{
"update_id": 850000001,
"message": {
"message_id": 1,
"from": {"id": 123456789, "is_bot": false, "first_name": "Ana"},
"chat": {"id": 123456789, "first_name": "Ana", "type": "private"},
"date": 1793232000,
"text": "/start"
}
}]
}
En un chat privado, chat.id coincide con el id del usuario (from.id). Este script en Python lista todos los chats que aparecen en las actualizaciones, incluidos grupos y canales:
import requests
TOKEN = "123456789:AAEexampleTokenReplaceWithYours"
data = requests.get(f"https://api.telegram.org/bot{TOKEN}/getUpdates", timeout=10).json()
for upd in data["result"]:
item = upd.get("message") or upd.get("channel_post") or upd.get("my_chat_member")
if item:
chat = item["chat"]
print(chat["id"], chat["type"], chat.get("title") or chat.get("first_name"))
Cómo obtener el chat id de un grupo
- Añade el bot al grupo.
- Envía en el grupo
/start@tu_bot, con el username de tu bot. Con el modo de privacidad, activo por defecto, el bot solo recibe en grupos los comandos dirigidos a él, las respuestas a sus mensajes y los mensajes de servicio. - Llama a
getUpdatesy busca unchatcon"type": "group"o"supergroup". Suides negativo.
Al añadir el bot también llega una actualización my_chat_member con el mismo chat.id, así que a veces el id aparece incluso antes de enviar el comando. Si necesitas que el bot lea todos los mensajes del grupo, desactiva la privacidad con /setprivacy en @BotFather (y vuelve a añadirlo al grupo) o hazlo administrador.
Chat id de un canal
- Canal público: puedes usar directamente
@nombredelcanalcomochat_id. - Canal privado: añade el bot como administrador con permiso para publicar, publica algo en el canal y llama a
getUpdates. El id está enchannel_post.chat.idy empieza por-100.
{
"update_id": 850000002,
"channel_post": {
"message_id": 7,
"chat": {"id": -1001234567890, "title": "Avisos", "type": "channel"},
"date": 1793232000,
"text": "Hola, canal"
}
}
Temas de un foro: message_thread_id
En los supergrupos con temas, todos los temas comparten el mismo chat.id; lo que cambia es message_thread_id. Escribe algo dentro del tema, léelo en message.message_thread_id y pásalo junto con el chat_id:
{"chat_id": -1001234567890, "message_thread_id": 42, "text": "Aviso para este tema"}
Problemas: result vacío, 409 Conflict y chat not found
"result": []: no hay actualizaciones nuevas. Envía otro mensaje al bot. Telegram guarda las actualizaciones como máximo 24 horas, y las que ya se confirmaron conoffset(por ejemplo, porque tu bot o una librería ya está corriendo) no vuelven a aparecer.- En el grupo no aparece nada: el modo de privacidad filtró el mensaje. Usa un comando con
@tu_bot. 409 Conflict: el bot tiene un webhook activo (n8n y muchas plataformas lo configuran solas) ygetUpdatesno funciona mientras exista. Revísalo congetWebhookInfo. Si lo eliminas condeleteWebhook, la integración que lo usaba dejará de recibir mensajes hasta que lo vuelvas a configurar; más detalles en la guía de webhook.400 Bad Request: chat not foundal enviar: el id es incorrecto (¿falta el-100?), el bot no está en ese grupo o canal, o el usuario nunca inició el bot.
Dónde vas a usar el chat id
El chat id es el destino de cualquier notificación automática: alertas de un servidor, avisos de una tienda en línea, flujos de n8n o asistentes de IA como OpenClaw que te escriben por Telegram. Casi siempre te pedirán el par token + chat id: el token lo consigues con la guía del token del bot, y para probar el envío usa sendMessage paso a paso.
Preguntas frecuentes
¿Por qué el chat id de mi grupo empieza con -100?
Porque es un supergrupo (o un canal): sus ids tienen la forma -1001234567890 y el -100 es parte del número. Los grupos básicos tienen ids negativos sin ese prefijo.
¿Puedo obtener el chat id de un usuario a partir de su @username?
No con la Bot API: el formato @username solo sirve como chat_id para canales, supergrupos y bots. El usuario tiene que escribirle a tu bot para que veas su id en getUpdates.
¿El chat id de un chat puede cambiar?
El de un usuario o un canal no cambia. Un grupo básico sí recibe un id nuevo al convertirse en supergrupo; la API lo indica en migrate_to_chat_id.
¿Es lo mismo chat id que user id?
En un chat privado con tu bot coinciden. En grupos no: chat.id identifica el grupo y from.id identifica al autor del mensaje.
¿Necesito un bot de terceros para saber mi chat id?
No. Con tu propio bot y getUpdates es suficiente, y así no compartes tus datos ni tu token con nadie.
Guías relacionadas
Cómo crear un bot en Telegram paso a paso: de BotFather a tu primer mensaje
Aprende a crear un bot de Telegram: /newbot en @BotFather, token, prueba con getMe y tu primer mensaje con curl y Python. Gratis y sin servidor.
Cómo enviar mensajes con la API de Telegram: sendMessage paso a paso
Envía mensajes con la Bot API de Telegram: sendMessage con curl, Python y JavaScript, formato HTML y MarkdownV2, botones inline y errores 400, 403 y 429.
Cómo obtener el token de un bot de Telegram (y qué hacer si se filtra)
Cómo obtener el token de tu bot de Telegram con @BotFather, encontrarlo si el bot ya existe, comprobarlo con getMe y revocarlo si se filtró.
Webhook de Telegram: cómo configurar setWebhook para tu bot (Python y n8n)
Configura el webhook de tu bot de Telegram: requisitos HTTPS, setWebhook con secret_token, getWebhookInfo, handler en Python y errores típicos en n8n.