API de Telegram Enviar Mensaje: sendMessage en curl, Python y Node

Enviar mensaje con la API de Telegram

API de Telegram Enviar Mensaje: sendMessage y Cuentas Conectadas

Un recorrido basado en código para enviar un mensaje de Telegram: la API de Bots sendMessage endpoint en curl, Python y Node, el límite estructural que impide que un bot le escriba a alguien primero, y cómo enviar desde una cuenta de Telegram real conectada con Unipile Iniciar chat y sendMessage.



send_message.sh
API del bot #: sendMessage curl -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \ -d chat_id=123456789 \ -d texto="Hola desde la API de Bot" \ -d parse_mode="Markdown"
200 OK: mensaje enviado
Guía de decisión

Tres formas de enviar un mensaje de Telegram y cuál elegir

Hay exactamente tres formas de enviar un mensaje a través de la API de Telegram. No son intercambiables: cada una envía el mensaje como un tipo diferente de remitente, con distintas restricciones sobre quién puede recibirlo.
API de bots sendMessage
Una sola llamada HTTP, autenticada con un token de bot de BotFather. La forma más rápida de enviar notificaciones, alertas y respuestas. El detalle: un bot solo puede enviar mensajes a usuarios que ya han iniciado una conversación con él.
Ideal para bots y notificaciones
Cliente MTProto (API de Telegram)
Acceso completo al protocolo mediante api_id y api_hash, utilizado para construir tu propio cliente de Telegram desde cero (Telethon, Pyrogram, TDLib). La opción más pesada de implementar y mantener.
Ideal para construir un cliente personalizado
Cuenta de usuario conectadaUnipile
Se envía como una cuenta de Telegram real, vinculada a través de la función de Dispositivos de Telegram (código QR o autenticación alojada). Sin restricciones de "escríbeme primero", y funciona también para grupos y conversaciones existentes.
Ideal para la mensajería saliente a gran escala
Obtener un token de bot o un api_id / api_hash el emparejamiento es un tema aparte. Para ver ese paso a paso, consulta nuestra guía completa sobre obtener acceso a la API de Telegram. Esta guía solo cubre el envío del mensaje una vez que tengas las credenciales.


Crea tu integración de Telegram
Tutorial de código

Enviar un mensaje con el endpoint sendMessage de la Bot API

La API de bots expone un único punto de acceso HTTP para enviar un mensaje: PUBLICACIÓN https://api.telegram.org/bot/sendMessage. A partir de la Bot API 10.2 (14 de julio de 2026), los parámetros requeridos no han cambiado: a chat_id y un text cuerpo.
ParámetroTipoDescripción
chat_id RequeridoEntero o CadenaIdentificador único del chat de destino, o @username para un canal público.
text RequeridoCadenaTexto del mensaje, de 1 a 4096 caracteres después del análisis de entidades.
modo de análisis OpcionalCadenaMarkdownV2, HTML o legado Markdown, para aplicar formato de negrita, enlaces y código.
desactivar_notificación OpcionalBooleanoEnvía el mensaje en silencio, sin sonido de notificación push.
parámetros_de_respuesta OpcionalObjetoEnvía el mensaje como respuesta a un mensaje existente en el chat.



rizo
curl -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \ -H "Content-Type: application/json" \ -d '{ "chat_id": 123456789, ""text": "Tu pedido #4821 ya se ha enviado.", "parse_mode": "MarkdownV2" }'



send_message.py
import solicita TOKEN = "123456:ABC-your-bot-token" url = f"https://api.telegram.org/bot{TOKEN}/sendMessage" carga útil = { "chat_id": 123456789, "texto": "Tu pedido #4821 ya se ha enviado".", "modo_analisis": "MarkdownV2" } response = solicitudes.Correo electrónico:(url, json=payload) print(respuesta.json())



sendMessage.js
const TOKEN = "123456:ABC-your-bot-token"; const url = `https://api.telegram.org/bot${TOKEN}/sendMessage`; const response = await fetch(url, { method: "PUBLICAR", cabeceras: { "Tipo-Contenido": "application/json" }, body: JSON.stringify({ chat_id: 123456789, text: "Tu pedido #4821 ya se ha enviado".", modo de análisis "MarkdownV2" }) }); const datos = await respuesta.json(); consola.log(datos);
El Punto Bascule

Por qué los bots no pueden enviar mensajes primero y qué significa eso para ti

Todas las llamadas a sendMessage anteriores funcionan, justo hasta el momento en que intentas contactar a alguien que nunca ha interactuado con tu bot. Es ahí donde la API de Bots tropieza con un muro que ningún parámetro, reintento o solución alternativa logra arreglar.
Un bot no puede escribir a un usuario que no le ha escrito primero
Esta es una regla estructural de la API de Bot, no un límite de velocidad ni un error. Hasta que un usuario envíe /inicio (o cualquier mensaje) a tu bot, sendMessage a eso chat_id falla por completo. Esto está bien para bots de asistencia y de notificación voluntaria en los que el usuario se pone en contacto primero. Falla por completo en los casos de uso salientes: prospección comercial, mensajes de recuperación de cuentas, pings transaccionales a un contacto que nunca ha abierto tu bot.
El cliente MTProto no tiene esta restricción: un cliente completo de la API de Telegram puede enviar mensajes a cualquier usuario, de la misma manera que lo hace la aplicación de Telegram.
Una cuenta de usuario conectada tampoco lo tiene, porque el mensaje es enviado por una cuenta de Telegram real, no por un bot. Este es el enfoque cubierto en la siguiente sección.


Construye el flujo de cuenta conectada
Cuenta vinculada

Enviar desde una cuenta real de Telegram con Unipile

Unipile conecta un Telegram real cuenta de usuario, no un bot. La vinculación se realiza a través de la propia función de Dispositivos de Telegram, ya sea escaneando un código QR o mediante autenticación alojada con proveedores: "TELEGRAM". Debido a que el mensaje proviene de una cuenta real, no hay ninguna restricción de "escríbeme primero" exclusiva de bots que sortear. Ve el API de Telegram página de producto para la lista completa de puntos de conexión.
1
Iniciar una nueva conversación con startChat
Cuando el destinatario no tiene ningún chat existente con la cuenta vinculada, llame POST /chats con ids_de_usuario y text. Telegram solo permite una conversación individual por cada par de usuarios, por lo que si ya existe un chat, esta misma llamada simplemente entrega el mensaje en él en lugar de crear un duplicado.



start_chat.py
import solicita url = "https://api6.unipile.com/v2/${accountId}/chats/send" cabeceras = {"Clave API X": api_key} datos = { "account_id": id_cuenta, "IDs de usuario": [telegram_user_id], "texto": "Hola, dando seguimiento a su solicitud." } response = solicitudes.Correo electrónico:(url, headers=headers, data=data) chat = respuesta.json() print(chat["chat_id"]) ID del destinatario de # para chats 1:1
2
Enviar a un chat existente con sendMessage
Una vez chat_id existe, llamada POST /chats/{chat_id}/mensajes con solo el text cuerpo. Esta es la llamada que debe utilizarse para cada mensaje de seguimiento en una conversación en curso.



send_message.js
const ID de chat = "CHAT_ID_FROM_STARTCHAT"; const formulario = new DatosDeFormulario(); formulario.añadir("texto", "Tu actualización está lista para revisar."); const response = await fetch( `https://api6.unipile.com/v2/${accountId}/chats/${chatId}/messages/send`, { method: "PUBLICAR", cabeceras: { "Clave API X": apiKey }, cuerpo: formulario } ); const enviado = await respuesta.json(); consola.log(sent.message_id);
Ambas llamadas aceptan multipart/form-data, no JSON. Para chats 1:1, el chat_id devuelto por Iniciar chat es el propio identificador del destinatario: una vez que conoces el identificador de Telegram de un usuario, puedes reutilizarlo directamente para sendMessage sin un paso de búsqueda.


Empieza a construir con Unipile
Grupos

Enviar un mensaje dentro de un grupo de Telegram

Enviar a un grupo funciona de la misma manera que enviar a un chat existente: POST /chats/{chat_id}/mensajes con el del grupo chat_id y un text cuerpo. Lo que cambia es la gestión de participantes, que utiliza sus propios puntos de conexión.
OperaciónPunto finalNotas
GET Lista de participantes/v2/{account_id}/chats/{chat_id}/participantsDevuelve la lista actual de miembros del grupo.
POST Añadir participante/v2/{account_id}/chats/{chat_id}/participantsSe requiere que el permiso "Añadir otros miembros" esté habilitado en el grupo.
BORRAR Eliminar participante/v2/{account_id}/chats/{chat_id}/participantsLa cuenta vinculada debe ser un administrador del grupo.
Comprueba los permisos antes de basarte en el código de respuesta. Si el grupo no concede el permiso "Añadir a otros miembros" o la cuenta vinculada no es administradora, la API aún puede devolver una respuesta de éxito sin añadir ni eliminar realmente a nadie. Verifique siempre la lista de participantes después de la llamada, no confíe únicamente en el código de estado.
Qué no es compatible con Telegram en Unipile
Canales, comunidades y difusiones
Acciones de administrador de grupo: aprobar o promover miembros
Adjuntos de contacto, ubicación, encuesta y evento
Archivado de chats
Llamadas de voz y vídeo
Entregabilidad

Mejores prácticas para evitar restricciones en Telegram

Una cuenta vinculada se comporta como un usuario real de Telegram, lo que significa que también está sujeta a las los mismos estándares contra el correo no deseado como uno. La guía oficial de Unipile es directa: demasiadas conversaciones iniciadas sin respuesta, o demasiadas señales de spam y bloqueo, pueden provocar una restricción temporal en la cuenta.
Respetar el retraso
Nunca envíes menos de 10 a 20 segundos de diferencia entre mensajes. Varía el intervalo, no dispares en un reloj fijo.
Calentar cuentas nuevas
Evite enviar grandes volúmenes en cuentas recién vinculadas. Comience con poco y aumente gradualmente a medida que las tasas de respuesta confirmen que la cuenta es de confianza.
Observar las tasas de respuesta
Un alto porcentaje de conversaciones que no reciben respuesta es una de las señales más fuertes que utiliza Telegram para marcar una cuenta.
Prefiero el contacto cálido
Las conversaciones que se basan en una relación existente o en una recomendación generan menos bloqueos que los primeros mensajes totalmente en frío.
Esta es una decisión por parte del cliente
Unipile retransmite los mensajes que envías, no establece tu ritmo por ti. El volumen de envío, el momento y el ritmo son decididos por usted, según el historial de la cuenta y la propia tolerancia de Telegram en un momento dado. Incorporar retrasos realistas desde el primer día es la práctica más eficaz aquí.


Construir con límites de envío seguros
Construye con Unipile

¿Listo para enviar mensajes de Telegram desde cuentas reales vinculadas?

Una API para startChat y sendMessage en Telegram, WhatsApp, LinkedIn, Instagram, Gmail, Outlook e IMAP, además de Google Calendar y Outlook Calendar. Vincula una cuenta y envía tu primer mensaje en minutos.

API de Telegram: Enviar mensaje - Preguntas frecuentes

Preguntas frecuentes sobre el envío de mensajes de Telegram con la Bot API y con cuentas vinculadas.

Realiza una llamada POST a https://api.telegram.org/bot/sendMessage con un parámetro «chat_id» y otro «text». El token lo proporciona BotFather. La API de Bot es gratuita y la versión actual es la 10.2, publicada el 14 de julio de 2026..

Telegram requiere que el usuario abra la conversación con el bot antes de que el bot pueda enviar nada. No hay ningún punto de conexión que permita a un bot iniciar un chat con un usuario arbitrario. Si su producto necesita iniciar el contacto, un bot es la herramienta incorrecta y necesita una cuenta de usuario real.

startChat abre una nueva conversación y envía el primer mensaje en una sola llamada. sendMessage publica en una conversación que ya existe. Telegram solo permite un chat individual por usuario, por lo que llamar a startChat con alguien con quien ya tienes un chat simplemente publica en ese chat existente.

Con la API de Bot, añade el bot al grupo y utiliza el chat_id del grupo. Desde una cuenta conectada, envía al ID de chat del grupo como cualquier otro chat. Unipile también expone la lista de participantes, la adición y la eliminación en grupos, pero no admite canales, comunidades ni difusiones.

Telegram es compatible con MarkdownV2 y HTML. MarkdownV2 requiere escapar una larga lista de caracteres reservados, por lo que HTML suele ser la opción más segura cuando el texto del mensaje se genera dinámicamente.

No utilices una cuenta completamente nueva exclusivamente para la automatización, aumenta el volumen gradualmente y nunca envíes más rápido de un mensaje cada 10 o 20 segundos. Telegram prohíbe permanentemente por inundación, envío de correo no deseado e inflación de contadores, y iniciar muchas conversaciones que se quedan sin respuesta es una fuerte señal de correo no deseado.

¿Aún tiene preguntas? Nuestro equipo está aquí para ayudarle.

Hable con un experto
es_ESES