Telegram Bot API
🌐 Español

Cómo obtener el chat id de Telegram: usuarios, grupos, canales y temas

· 6 min de lectura

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 chatchat.typeEjemplo de id
Usuario (chat privado)private123456789 (positivo)
Grupo básicogroup-123456789 (negativo)
Supergruposupergroup-1001234567890
Canalchannel-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

  1. 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.
  2. Llama a getUpdates con tu token: abre la URL en el navegador, usa curl o ejecuta getUpdates en Bot API Tester, que muestra el JSON de forma navegable.
  3. Busca el objeto chat dentro de message y copia su id.
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

  1. Añade el bot al grupo.
  2. 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.
  3. Llama a getUpdates y busca un chat con "type": "group" o "supergroup". Su id es 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

{
  "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

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.

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.