API do Telegram Enviar Mensagem: sendMessage em curl, Python e Node

Enviar mensagem pela API do Telegram

API de Envio de Mensagens do Telegram: sendMessage e Contas Conectadas

Um passo a passo baseado em código para enviar uma mensagem no Telegram: a Bot API sendMessage endpoint em curl, Python e Node, o limite estrutural que impede um bot de iniciar uma conversa com alguém primeiro, e como enviar a partir de uma conta real conectada do Telegram com o Unipile Iniciar Bate-papo e sendMessage.



send_message.sh
API do bot #: sendMessage curl -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \ -d chat_id=123456789 \ -d texto="Olá da Bot API" \ -d parse_mode="Markdown"
200 OK: mensagem enviada
Guia de Decisão

Três maneiras de enviar uma mensagem no Telegram e qual escolher

Há exatamente três maneiras de enviar uma mensagem por meio da API do Telegram. Elas não são intercambiáveis: cada uma envia a mensagem como um tipo diferente de remetente, com restrições diferentes sobre quem pode recebê-la.
API de Bot sendMessage
Uma única chamada HTTP, autenticada com um token de bot do BotFather. A maneira mais rápida de enviar notificações, alertas e respostas. O porém: um bot só pode enviar mensagens para usuários que já iniciaram uma conversa com ele.
Melhor para bots e notificações
Cliente MTProto (API do Telegram)
Acesso total ao protocolo via api_id e api_hash, usado para construir seu próprio cliente do Telegram do zero (Telethon, Pyrogram, TDLib). A opção mais difícil de implementar e manter.
Ideal para criar um cliente personalizado
Conta de usuário conectadaUnipile
Envia como uma conta real do Telegram, vinculada através do recurso de Dispositivos do Telegram (código QR ou Autenticação Hospedada). Sem restrição de "envie-me uma mensagem primeiro", e funciona também para grupos e conversas existentes.
Melhor para mensagens ativas em escala
Obtendo um token de bot ou um api_id / api_hash par é um tópico separado. Para esse passo a passo, veja nosso guia completo para obtendo acesso à API do Telegram. Este guia abrange apenas o envio da mensagem após você ter as credenciais.


Construa sua integração com o Telegram
Tutorial de Código

Envie uma mensagem com o endpoint sendMessage da API do Bot

A Bot API expõe um único endpoint HTTP para enviar uma mensagem: POST https://api.telegram.org/bot/sendMessage. A partir da Bot API 10.2 (14 de julho de 2026), os parâmetros obrigatórios permanecem inalterados: a chat_id e um text corpo.
ParâmetroTipoDescrição
chat_id ObrigatórioInteiro ou StringIdentificador único do chat de destino, ou @username para um canal público.
text ObrigatórioStringTexto da mensagem, 1 a 4096 caracteres após a análise de entidades.
modo de análise OpcionalStringMarkdownV2, HTML ou legado Markdown, para renderizar negrito, links e formatação de código.
desativar_notificação OpcionalBooleanoEnvia a mensagem silenciosamente, sem som de notificação push.
parâmetros_de_resposta OpcionalObjetoEnvia a mensagem como uma resposta a uma mensagem existente no chat.



enrolar
curl -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \ -H "Content-Type: application/json" \ -d '{ "chat_id": 123456789, ""text": "Seu pedido #4821 já foi enviado.", "parse_mode": "MarkdownV2" }'



send_message.py
import solicitações TOKEN = "123456:ABC-your-bot-token" url = f"https://api.telegram.org/bot{TOKEN}/sendMessage" carga útil = { "chat_id": 123456789, "texto": ""Seu pedido #4821 já foi enviado."", "modo de análise": "MarkdownV2" } response = pedidos.postagem(url, json=payload) print(resposta.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: "POST", cabeçalhos: { "Tipo-de-Conteúdo": "application/json" }, body: JSON.stringify({ chat_id: 123456789, text: ""Seu pedido #4821 já foi enviado."", modo de análise "MarkdownV2" }) }); const dados = await resposta.json(); console.log(dados);
O Ponto Basculante

Por que os bots não podem iniciar conversas e o que isso significa para você

Cada chamada de sendMessage acima funciona, até o momento em que você tenta alcançar alguém que nunca interagiu com o seu bot. É aí que a Bot API esbarra em um obstáculo que nenhum parâmetro, nova tentativa ou solução alternativa resolve.
Um bot não pode escrever para um usuário que não tenha escrito para ele primeiro
Esta é uma regra estrutural da Bot API, não um limite de taxa ou um bug. Até que um usuário envie /iniciar (ou qualquer mensagem) para o seu bot, sendMessage para isso chat_id falha totalmente. Isso funciona bem para bots de suporte e bots de notificação voluntária onde o usuário entra em contato primeiro. Isso falha completamente para casos de uso de saída: abordagens de vendas, mensagens de recuperação de conta, pings transacionais para um contato que nunca abriu seu bot.
O cliente MTProto não tem essa restrição: um cliente completo da API do Telegram pode enviar mensagens para qualquer usuário, da mesma forma que o aplicativo do Telegram faz.
Uma conta de usuário conectada também não tem, porque a mensagem é enviada por uma conta real do Telegram, e não por um bot. Esta é a abordagem abordada na próxima seção.


Construa o fluxo de contasconectadas
Conta Vinculada

Enviar de uma conta real do Telegram com o Unipile

O Unipile se conecta a um Telegram real conta de usuário, não é um bot. A vinculação ocorre através do próprio recurso Dispositivos do Telegram, seja por leitura de código QR ou Autenticação Hospedada com provedores: "TELEGRAM". Como a mensagem vem de uma conta real, não há restrição de bot apenas de "envie-me uma mensagem primeiro" para contornar. Veja o API do Telegram página do produto para a lista completa de endpoints.
1
Iniciar uma nova conversa com startChat
Quando o destinatário não tiver um chat existente com a conta vinculada, chame POST /chats com IDs de usuário e text. O Telegram permite apenas uma conversa individual por par de usuários, portanto, se um chat já existir, esta mesma chamada simplesmente entrega a mensagem nele em vez de criar uma duplicata.



start_chat.py
import solicitações url = ""https://api6.unipile.com/v2/${accountId}/chats/send"" cabeçalhos = {"X-API-KEY": api_key} dados = { "id_da_conta"id_da_conta, "ids_de_usuario": [telegram_user_id], "texto": "Olá, dando seguimento à sua solicitação." } response = pedidos.postagem(url, headers=headers, data=data) chat = resposta.json() print(chat["chat_id"]) ID do destinatário do # para conversas individuais
2
Enviar para um chat existente com sendMessage
Uma vez chat_id existe, chamar POST /chats/{chat_id}/messages apenas com o text corpo. Esta é a chamada a ser usada para cada mensagem de acompanhamento em uma conversa em andamento.



send_message.js
const ID do chat = "CHAT_ID_FROM_STARTCHAT"; const formulário = new FormData(); formulário.anexar("texto", "Sua atualização está pronta para ser revisada."); const response = await fetch( `https://api6.unipile.com/v2/${accountId}/chats/${chatId}/messages/send`, { method: "POST", cabeçalhos: { "X-API-KEY": apiKey }, corpo: formulário } ); const enviado = await resposta.json(); console.log(sent.message_id);
Ambas as chamadas aceitam multipart/form-data, não JSON. Para chats 1:1, o chat_id retornado por Iniciar Bate-papo é o próprio ID do destinatário: assim que você souber o identificador do Telegram de um usuário, poderá reutilizá-lo diretamente para sendMessage sem uma etapa de consulta.


Comece a construir com o Unipile
Grupos

Enviar uma mensagem em um grupo do Telegram

Enviar para um grupo funciona da mesma forma que enviar para um chat existente: POST /chats/{chat_id}/messages com o grupo chat_id e um text corpo. O que muda é o gerenciamento de participantes, que utiliza seus próprios endpoints.
OperaçãoPonto de extremidadeAnotações
OBTER Listar participantes/v2/{account_id}/chats/{chat_id}/participantsRetorna a lista de membros atuais do grupo.
POST Adicionar participante/v2/{account_id}/chats/{chat_id}/participantsRequer que a permissão "Adicionar outros membros" esteja ativada no grupo.
DELETE Remover participante/v2/{account_id}/chats/{chat_id}/participantsA conta vinculada deve ser um administrador do grupo.
Verifique as permissões antes de confiar no código de resposta. Se o grupo não conceder "Adicionar outros membros" ou se a conta vinculada não for um administrador, a API ainda poderá retornar uma resposta de sucesso sem realmente adicionar ou remover ninguém. Sempre verifique a lista de participantes após a chamada, não confie apenas no código de status.
O que não é compatível com o Telegram no Unipile
Canais, comunidades e transmissões
Ações do administrador do grupo: aprovar ou promover membros
Anexos de contato, localização, enquete e evento
Arquivamento de chat
Chamadas de voz e vídeo
Capacidade de entrega

Melhores práticas para evitar restrições no Telegram

Uma conta vinculada se comporta como um usuário real do Telegram, o que significa que ela também está sujeita às mesmos padrões anti-spam como um. A orientação oficial da Unipile é direta: muitas conversas iniciadas sem resposta, ou muitos sinais de spam e bloqueio, podem levar a uma restrição temporária na conta.
Respeite o atraso
Nunca envie com menos de 10 a 20 segundos de intervalo entre as mensagens. Varie o intervalo, não dispare em um relógio fixo.
Aquecer novas contas
Evite enviar altos volumes em contas recém-vinculadas. Comece com pouco e aumente gradualmente conforme as taxas de resposta confirmarem que a conta é confiável.
Monitore as taxas de resposta
Uma alta proporção de conversas que ficam sem resposta é um dos sinais mais fortes que o Telegram usa para sinalizar uma conta.
Prefira abordagem calorosa
Conversas que se baseiam em um relacionamento existente ou indicação geram menos bloqueios do que primeiras mensagens totalmente frias.
Esta é uma decisão do lado do cliente
A Unipile retransmite as mensagens que você envia, ela não define a sua cadência. O volume, o momento e o ritmo de envio são decididos por você, com base no histórico da conta e na própria tolerância do Telegram em um dado momento. Implementar atrasos realistas desde o primeiro dia é a prática de maior impacto aqui.


Construir com limites de envio seguros
Construa com a Unipile

Pronto para enviar mensagens do Telegram a partir de contas reais vinculadas?

Uma API para startChat e sendMessage no Telegram, WhatsApp, LinkedIn, Instagram, Gmail, Outlook e IMAP, além do Google Agenda e do Outlook Agenda. Vincule uma conta e envie sua primeira mensagem em minutos.

API do Telegram Enviar Mensagem - FAQ

Perguntas comuns sobre o envio de mensagens do Telegram com a API de Bot e com contas vinculadas.

Chame o POST https://api.telegram.org/bot/sendMessage com um parâmetro `chat_id` e um parâmetro `text`. O token é fornecido pelo BotFather. A API do Bot é gratuita, e a versão atual é a 10.2, publicada em 14 de julho de 2026..

O Telegram exige que o usuário abra a conversa com o bot antes que o bot possa enviar qualquer coisa. Não existe nenhum endpoint que permita que um bot inicie um chat com um usuário arbitrário. Se o seu produto precisa iniciar o contato, um bot é a ferramenta errada e você precisa de uma conta de usuário real.

startChat abre uma nova conversa e envia a primeira mensagem em uma única chamada. sendMessage posta em uma conversa que já existe. O Telegram permite apenas um chat individual por usuário, portanto, chamar startChat com alguém com quem você já tem um chat simplesmente posta nesse chat existente.

Com a API do Bot, adicione o bot ao grupo e use o chat_id do grupo. A partir de uma conta conectada, envie para o ID do chat do grupo como qualquer outro chat. O Unipile também expõe listagem de participantes, adição e remoção em grupos, mas não oferece suporte a canais, comunidades ou transmissões.

O Telegram é compatível com MarkdownV2 e HTML. O MarkdownV2 exige escapar de uma longa lista de caracteres reservados, portanto, o HTML costuma ser a escolha mais segura quando o texto da mensagem é gerado dinamicamente.

Não use uma conta totalmente nova apenas para automação, aumente o volume gradualmente e nunca envie mais rápido do que uma mensagem a cada 10 a 20 segundos. O Telegram bane permanentemente por envio excessivo, spam e inflação de contadores, e iniciar muitas conversas que ficam sem resposta é um forte sinal de spam.

Ainda tem dúvidas? Nossa equipe está aqui para ajudar.

Fale com um especialista
pt_BRBR