API Telegram Envoyer un Message : sendMessage en curl, Python et Node

Envoyer un message via l'API Telegram

API Telegram - Envoyer un message : sendMessage et comptes connectés

Un guide pratique axé sur le code pour envoyer un message sur Telegram : l'API Bot sendMessage point de terminaison dans curl, Python et Node, la limite structurelle qui empêche un bot d'écrire à quelqu'un en premier, et comment envoyer un message à partir d'un véritable compte Telegram connecté avec Unipile Démarrer le chat et sendMessage.



send_message.sh
API du bot # : sendMessage curl -X POST " https://api.telegram.org/bot$TOKEN/sendMessage " \ -d chat_id=123456789 \ -d texte="Bonjour de l'API Bot" \ -d parse_mode="Markdown"
200 OK : message envoyé
Guide de décision

Trois façons d'envoyer un message Telegram et laquelle choisir

Il existe exactement trois façons d'envoyer un message via l'API Telegram. Elles ne sont pas interchangeables : chacune envoie le message en tant que type d'expéditeur différent, avec des contraintes différentes sur les destinataires.
API de bot sendMessage
Un seul appel HTTP, authentifié avec un jeton de bot provenant de BotFather. Le moyen le plus rapide d'envoyer des notifications, des alertes et des réponses. Le hic : un bot ne peut envoyer des messages qu'aux utilisateurs qui ont déjà entamé une conversation avec lui.
Idéal pour les bots et les notifications
Client MTProto (API Telegram)
Accès complet au protocole via id_api et clé d'API, utilisé pour créer votre propre client Telegram à partir de zéro (Telethon, Pyrogram, TDLib). L'option la plus lourde à mettre en œuvre et à maintenir.
Idéal pour créer un client personnalisé
Compte utilisateur connectéUnipile
Envoi en tant que véritable compte Telegram, relié via la fonctionnalité Appareils de Telegram (code QR ou authentification hébergée). Aucune restriction " envoyez-moi un message en premier ", et cela fonctionne également pour les groupes et les conversations existantes.
Idéal pour la messagerie sortante à grande échelle
Obtenir un jeton de bot ou un id_api / clé d'API pair est un sujet distinct. Pour ce guide étape par étape, consultez notre guide complet sur obtenir l'accès à l'API Telegram. Ce guide couvre uniquement l'envoi du message une fois que vous disposez des identifiants.


Créez votre intégration Telegram
Tutoriel de code

Envoyer un message avec l'endpoint sendMessage de l'API Bot

L'API Bot expose un unique point de terminaison HTTP pour envoyer un message : ARTICLE https://api.telegram.org/bot/sendMessage. À compter de l'API Bot 10.2 (14 juillet 2026), les paramètres requis restent inchangés : a chat_id et un text corps.
ParamètreTypeDescription
chat_id RequisEntier ou ChaîneIdentifiant unique de la discussion cible, ou @username pour une chaîne publique.
text RequisChaîne de caractèresTexte du message, de 1 à 4096 caractères après l'analyse des entités.
mode_analyse FacultatifChaîne de caractèresMarkdownV2, HTML ou existant Markdown, pour rendre le texte en gras, les liens et le formatage du code.
désactiver_les_notifications FacultatifBooléenEnvoie le message silencieusement, sans son de notification push.
paramètres_de_réponse FacultatifObjetEnvoie le message en tant que réponse à un message existant dans la discussion.



curl
curl -X POST " https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage " \ -H "Content-Type: application/json" \ -d '{ "chat_id": 123456789, ""text": "Votre commande #4821 a été expédiée.", "parse_mode": "MarkdownV2" }'



send_message.py
import demandes Jeton = "123456:ABC-your-bot-token" url = f"https://api.telegram.org/bot{TOKEN}/sendMessage" charge utile = { "chat_id": 123456789, "texte": " Votre commande n° #4821 a été expédiée. ", "mode_analyse": "MarkdownV2" } response = requêtes.poste(url, json=payload) print(réponse.json())



sendMessage.js
const Jeton = "123456:ABC-your-bot-token"; const url = `https://api.telegram.org/bot${TOKEN}/sendMessage`; const response = await fetch(url, { method: "POST", headers : { "Content-Type": "application/json" }, body: JSON.stringify({ chat_id : 123456789, text: " Votre commande n° #4821 a été expédiée. ", mode d'analyse "MarkdownV2" }) }); const données = await réponse.json(); console.log(données);
La Pointe Bascule

Pourquoi les robots ne peuvent pas envoyer de message en premier, et ce que cela signifie pour vous

Chaque appel à sendMessage ci-dessus fonctionne, jusqu'au moment où l'on essaie de contacter quelqu'un qui n'a jamais interagi avec votre bot. C'est là que l'API du Bot se heurte à un obstacle qu'aucun paramètre, nouvel essai ou solution de contournement ne peut résoudre.
Un bot ne peut pas écrire à un utilisateur qui ne lui a pas écrit en premier
Il s'agit d'une règle structurelle de l'API Bot, et non d'une limite de débit ou d'un bug. Jusqu'à ce qu'un utilisateur envoie /démarrer (ou tout autre message) à votre bot, sendMessage à cela chat_id échoue complètement. C'est acceptable pour les bots de support et les bots de notification à opt-in où l'utilisateur initie le contact. Cela pose un problème total pour les cas d'usage sortants : prospection commerciale, messages de récupération de compte, pings transactionnels vers un contact qui n'a jamais ouvert votre bot.
Le client MTProto n'a pas cette restriction : un client complet de l'API Telegram peut envoyer un message à n'importe quel utilisateur, de la même manière que le fait l'application Telegram.
Un compte utilisateur connecté ne l'a pas non plus, car le message est envoyé par un véritable compte Telegram, et non par un bot. C'est l'approche abordée dans la section suivante.


Créer le parcours de compte connecté
Compte lié

Envoyer depuis un vrai compte Telegram avec Unipile

Unipile connecte un véritable Telegram espace client, pas un robot. La liaison s'effectue via la propre fonction Appareils de Telegram, soit par un scan de code QR, soit par une authentification hébergée avec fournisseurs : "TELEGRAM". Étant donné que le message provient d'un vrai compte, il n'y a pas de restriction "m'envoyer un message en premier" spécifique aux bots à contourner. Voir la API Telegram page de produits pour la liste complète des points de terminaison.
1
Démarrer une nouvelle conversation avec startChat
Lorsque le destinataire n'a pas de conversation existante avec le compte lié, appeler POST /chats avec identifiants_utilisateurs et text. Telegram ne permet qu'une seule conversation individuelle par paire d'utilisateurs, donc si un chat existe déjà, ce même appel livre simplement le message dedans au lieu d'en créer un en double.



start_chat.py
import demandes url = " https://api6.unipile.com/v2/${accountId}/chats/send " en-têtes = {"X-API-KEY": api_key} données = { "account_id": identifiant_compte, "identifiants_utilisateurs": [telegram_user_id], "texte": "Bonjour, suite à votre demande." } response = requêtes.poste(url, headers=headers, data=data) chat = réponse.json() print(chat["chat_id"]) Identifiant du destinataire # pour les discussions en tête-à-tête
2
Envoyer dans un chat existant avec sendMessage
Il était une fois chat_id existe, appel POST /chats/{chat_id}/messages avec juste le text corps. C'est l'appel à utiliser pour chaque message de suivi dans une conversation en cours.



envoyer_message.js
const ID de discussion = "CHAT_ID_FROM_STARTCHAT"; const forme = new DonnéesFormulaire(); formulaire.ajouter("texte", "Votre mise à jour est prête à être examinée."); const response = await fetch( `https://api6.unipile.com/v2/${accountId}/chats/${chatId}/messages/send`, { method: "POST", headers : { "X-API-KEY": apiKey }, corps : forme } ); const envoyé = await réponse.json(); console.log(sent.message_id);
Les deux appels acceptent multipart/form-data, pas JSON. Pour les discussions 1:1, le chat_id renvoyé par Démarrer le chat est l'identifiant propre du destinataire : une fois que vous connaissez l'identifiant Telegram d'un utilisateur, vous pouvez le réutiliser directement pour sendMessage sans étape de recherche.


Commencez à construire avec Unipile
Groupes

Envoyer un message dans un groupe Telegram

L'envoi dans un groupe fonctionne de la même manière que l'envoi dans une discussion existante : POST /chats/{chat_id}/messages avec le groupe chat_id et un text corps. Ce qui change, c'est la gestion des participants, qui utilise ses propres points de terminaison.
OpérationPoint de terminaisonNotes
GET Liste des participants/v2/{account_id}/chats/{chat_id}/participantsRenvoie la liste actuelle des membres du groupe.
POST Ajouter un participant/v2/{account_id}/chats/{chat_id}/participantsNécessite que l'autorisation "Ajouter d'autres membres" soit activée sur le groupe.
DELETE Retirer le participant/v2/{account_id}/chats/{chat_id}/participantsLe compte associé doit être un administrateur du groupe.
Vérifiez les autorisations avant de vous fier au code de réponse. Si le groupe n'accorde pas l'autorisation " Ajouter d'autres membres " ou si le compte lié n'est pas un administrateur, l'API peut quand même renvoyer une réponse de succès sans pour autant ajouter ou supprimer qui que ce soit. Vérifiez toujours la liste des participants après l'appel, ne vous fiez pas uniquement au code d'état.
Ce qui n'est pas pris en charge pour Telegram dans Unipile
Chaînes, communautés et diffusions
Actions d'administration du groupe : approbation ou promotion de membres
Pièces jointes de type contact, lieu, sondage et événement
Archivage des discussions
Appels vocaux et vidéo
Délivrabilité

Bonnes pratiques pour éviter les restrictions sur Telegram

Un compte lié se comporte comme un véritable utilisateur de Telegram, ce qui signifie qu'il est également soumis aux mêmes normes anti-spam en un seul. Les directives officielles d'Unipile sont directes : trop de conversations commencées sans réponse, ou trop de signalements de spam et de blocage, peuvent entraîner une restriction temporaire du compte.
Respectez le délai
N'envoyez jamais moins de 10 à 20 secondes d'intervalle entre les messages. Variaz l'intervalle, ne déclenchez pas sur une horloge fixe.
Réchauffer les nouveaux comptes
Évitez d'envoyer de grands volumes sur des comptes nouvellement liés. Commencez bas et augmentez progressivement à mesure que les taux de réponse confirment que le compte est de confiance.
Surveiller les taux de réponse
Une proportion élevée de conversations qui ne reçoivent pas de réponse est l'un des signaux les plus forts utilisés par Telegram pour signaler un compte.
Privilégier la prospection chaleureuse
Les conversations qui s'appuient sur une relation existante ou une recommandation génèrent moins de blocages que les premiers messages entièrement froids.
C'est une décision qui incombe au client
Unipile relaie les messages que vous envoyez, il ne fixe pas votre cadence à votre place. Le volume d'envoi, le moment et le rythme sont décidés par vous, en fonction de l'historique du compte et de la tolérance propre à Telegram à un moment donné. Intégrer des délais réalistes dès le premier jour est la pratique la plus efficace ici.


Créer en respectant les limites d'envoi sécurisées
Développez avec Unipile

Prêt à envoyer des messages Telegram à partir de vrais comptes liés ?

Une seule API pour startChat et sendMessage sur Telegram, WhatsApp, LinkedIn, Instagram, Gmail, Outlook et IMAP, ainsi que Google Agenda et Outlook Agenda. Associez un compte et envoyez votre premier message en quelques minutes.

API Telegram Envoyer un message - FAQ

Questions fréquentes sur l'envoi de messages Telegram avec l'API Bot et avec des comptes liés.

Appelez la méthode POST https://api.telegram.org/bot/sendMessage en transmettant un paramètre « chat_id » et un paramètre « text ». Le jeton est fourni par BotFather. L'API Bot est gratuite ; sa version actuelle est la 10.2, publiée le 14 juillet 2026..

Telegram exige que l'utilisateur ouvre la conversation avec le bot avant que celui-ci ne puisse envoyer quoi que ce soit. Il n'y a pas de point de terminaison permettant à un bot de démarrer une discussion avec un utilisateur arbitraire. Si votre produit doit initier le contact, un bot est le mauvais outil et vous avez besoin d'un vrai compte utilisateur.

startChat ouvre une nouvelle conversation et envoie le premier message en un seul appel. sendMessage publie dans une conversation qui existe déjà. Telegram ne permet qu'une seule discussion individuelle par utilisateur, donc appeler startChat avec quelqu'un avec qui vous avez déjà une discussion publie simplement dans cette discussion existante.

Avec l'API Bot, ajoutez le bot au groupe et utilisez le chat_id du groupe. Depuis un compte connecté, envoyez au chat id du groupe comme n'importe quel autre chat. Unipile expose également la liste des participants, ainsi que l'ajout et la suppression sur les groupes, mais ne prend pas en charge les canaux, les communautés ou les diffusions.

Telegram prend en charge MarkdownV2 et HTML. MarkdownV2 nécessite d'échapper une longue liste de caractères réservés, le HTML est donc généralement le choix le plus sûr lorsque le texte du message est généré dynamiquement.

N'utilisez pas un compte flambant neuf uniquement pour l'automatisation, augmentez le volume progressivement et n'envoyez jamais plus d'un message toutes les 10 à 20 secondes. Telegram bannit définitivement pour cause de inondation, de spam et de regonflage de compteurs, et l'engagement de nombreuses conversations qui restent sans réponse constitue un signal fort de spam.

Vous avez encore des questions ? Notre équipe est là pour vous aider.

Parler à un expert
fr_FRFR