{"id":265405,"date":"2024-10-28T17:22:58","date_gmt":"2024-10-28T16:22:58","guid":{"rendered":"https:\/\/www.unipile.com\/?p=265405"},"modified":"2026-08-13T15:14:59","modified_gmt":"2026-08-13T13:14:59","slug":"api-telegram-nachricht-senden-umfassender-leitfaden","status":"publish","type":"post","link":"https:\/\/www.unipile.com\/de\/telegram-api-send-message-a-comprehensive-guide\/","title":{"rendered":"Telegram API Nachricht senden: sendMessage in curl, Python und Node"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;40px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221;]<br \/>\n[et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221;]<br \/>\n[et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221;]<br \/>\n[et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221;]\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#unipile-toc,\n#unipile-toc *,\n#unipile-toc *::before,\n#unipile-toc *::after {\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  border: none !important;\n  outline: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n  line-height: normal !important;\n  letter-spacing: normal !important;\n  text-transform: none !important;\n  text-decoration: none !important;\n  list-style: none !important;\n  background: transparent !important;\n  float: none !important;\n}\n#unipile-toc {\n  all: initial !important;\n  display: block !important;\n  max-width: 1100px !important;\n  margin: 0 auto !important;\n  padding: 0 !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n}\n#unipile-toc .utc-card {\n  background: #ffffff !important;\n  border-radius: 16px !important;\n  border: 1px solid #e5e7eb !important;\n  padding: 32px !important;\n  box-shadow: 0 2px 12px rgba(15, 39, 54, 0.04) !important;\n}\n#unipile-toc .utc-header {\n  display: flex !important;\n  align-items: center !important;\n  justify-content: space-between !important;\n  gap: 12px !important;\n  margin-bottom: 24px !important;\n  padding-bottom: 20px !important;\n  border-bottom: 1px solid #e5e7eb !important;\n}\n#unipile-toc .utc-header-left {\n  display: flex !important;\n  align-items: center !important;\n  gap: 12px !important;\n}\n#unipile-toc .utc-icon-box {\n  width: 36px !important;\n  height: 36px !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  border-radius: 8px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  flex-shrink: 0 !important;\n}\n#unipile-toc .utc-icon-box svg {\n  width: 18px !important;\n  height: 18px !important;\n  stroke: #3BB98B !important;\n  fill: none !important;\n  stroke-width: 2.2 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n}\n#unipile-toc .utc-title {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n}\n#unipile-toc .utc-toggle {\n  display: none !important;\n  align-items: center !important;\n  gap: 6px !important;\n  background: transparent !important;\n  cursor: pointer !important;\n  font-size: 13px !important;\n  font-weight: 600 !important;\n  color: #3BB98B !important;\n  padding: 6px 10px !important;\n  border-radius: 6px !important;\n  transition: background 0.2s ease !important;\n}\n#unipile-toc .utc-toggle svg {\n  width: 14px !important;\n  height: 14px !important;\n  stroke: #3BB98B !important;\n  fill: none !important;\n  stroke-width: 2.5 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n  transition: transform 0.3s ease !important;\n}\n#unipile-toc.utc-collapsed .utc-toggle svg {\n  transform: rotate(-90deg) !important;\n}\n#unipile-toc .utc-grid {\n  display: grid !important;\n  grid-template-columns: repeat(4, 1fr) !important;\n  gap: 0 !important;\n}\n#unipile-toc .utc-col {\n  padding: 0 24px !important;\n  border-left: 1px solid #e5e7eb !important;\n}\n#unipile-toc .utc-col:first-child {\n  padding-left: 0 !important;\n  border-left: none !important;\n}\n#unipile-toc .utc-col:last-child {\n  padding-right: 0 !important;\n}\n#unipile-toc .utc-col-label {\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  color: #94a3b8 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.8px !important;\n  margin-bottom: 14px !important;\n  display: block !important;\n}\n#unipile-toc .utc-link-list {\n  display: flex !important;\n  flex-direction: column !important;\n  gap: 10px !important;\n}\n#unipile-toc .utc-link {\n  display: flex !important;\n  align-items: flex-start !important;\n  gap: 10px !important;\n  cursor: pointer !important;\n  transition: all 0.2s ease !important;\n  text-decoration: none !important;\n  padding: 4px 0 !important;\n}\n#unipile-toc .utc-num {\n  width: 18px !important;\n  height: 18px !important;\n  flex-shrink: 0 !important;\n  background: #f4f5f7 !important;\n  border-radius: 4px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  color: #94a3b8 !important;\n  transition: all 0.2s ease !important;\n  margin-top: 1px !important;\n}\n#unipile-toc .utc-num.utc-num-faq {\n  font-size: 8px !important;\n  letter-spacing: 0.2px !important;\n}\n#unipile-toc .utc-link-text {\n  font-size: 13px !important;\n  font-weight: 500 !important;\n  color: #383838 !important;\n  line-height: 1.45 !important;\n  transition: color 0.2s ease !important;\n  flex: 1 !important;\n}\n#unipile-toc .utc-link:hover .utc-num {\n  background: rgba(59, 185, 139, 0.15) !important;\n  color: #3BB98B !important;\n}\n#unipile-toc .utc-link:hover .utc-link-text {\n  color: #0f2736 !important;\n}\n#unipile-toc .utc-link.utc-active .utc-num {\n  background: #3BB98B !important;\n  color: #ffffff !important;\n}\n#unipile-toc .utc-link.utc-active .utc-link-text {\n  color: #0f2736 !important;\n  font-weight: 600 !important;\n}\n#unipile-toc .utc-link.utc-read .utc-num {\n  background: rgba(59, 185, 139, 0.15) !important;\n  color: #3BB98B !important;\n}\n#unipile-toc .utc-tag-best {\n  display: inline-block !important;\n  font-size: 9px !important;\n  font-weight: 700 !important;\n  color: #ffffff !important;\n  background: #3BB98B !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  margin-left: 6px !important;\n  vertical-align: middle !important;\n}<\/p>\n<p>@media (max-width: 1000px) {\n  #unipile-toc .utc-grid {\n    grid-template-columns: repeat(2, 1fr) !important;\n    gap: 24px 0 !important;\n  }\n  #unipile-toc .utc-col {\n    padding: 0 20px !important;\n  }\n  #unipile-toc .utc-col:nth-child(2n+1) {\n    padding-left: 0 !important;\n    border-left: none !important;\n  }\n  #unipile-toc .utc-col:nth-child(2n) {\n    padding-right: 0 !important;\n  }\n}<\/p>\n<p>@media (max-width: 700px) {\n  #unipile-toc .utc-card {\n    padding: 22px !important;\n  }\n  #unipile-toc .utc-header {\n    margin-bottom: 0 !important;\n    padding-bottom: 0 !important;\n    border-bottom: none !important;\n  }\n  #unipile-toc .utc-toggle {\n    display: flex !important;\n  }\n  #unipile-toc .utc-grid {\n    grid-template-columns: 1fr !important;\n    gap: 22px !important;\n    max-height: 2000px !important;\n    overflow: hidden !important;\n    transition: max-height 0.4s ease, margin-top 0.3s ease, padding-top 0.3s ease !important;\n    margin-top: 22px !important;\n    padding-top: 22px !important;\n    border-top: 1px solid #e5e7eb !important;\n  }\n  #unipile-toc.utc-collapsed .utc-grid {\n    max-height: 0 !important;\n    margin-top: 0 !important;\n    padding-top: 0 !important;\n    border-top: none !important;\n  }\n  #unipile-toc .utc-col {\n    padding: 0 !important;\n    border-left: none !important;\n    border-top: 1px solid #e5e7eb !important;\n    padding-top: 18px !important;\n  }\n  #unipile-toc .utc-col:first-child {\n    border-top: none !important;\n    padding-top: 0 !important;\n  }\n}\n\/* Defensive wpautop parade (additive only, does not touch template structure\/JS) *\/\n#unipile-toc br { display: none !important; }\n<\/style>\n<div id=\"unipile-toc\">\n<div class=\"utc-card\">\n<div class=\"utc-header\">\n<div class=\"utc-header-left\">\n<div class=\"utc-icon-box\">\n          <svg viewBox=\"0 0 24 24\">\n            <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"\/>\n            <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"\/>\n            <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"\/>\n            <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"\/>\n            <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"\/>\n            <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"\/>\n          <\/svg>\n        <\/div>\n<p>        <span class=\"utc-title\">Table of Contents<\/span>\n      <\/div>\n<p>      <button type=\"button\" class=\"utc-toggle\" aria-label=\"Toggle table of contents\"><br \/>\n        <span class=\"utc-toggle-label\">Hide<\/span><br \/>\n        <svg viewBox=\"0 0 24 24\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg><br \/>\n      <\/button>\n    <\/div>\n<div class=\"utc-grid\">\n<div class=\"utc-col\">\n        <span class=\"utc-col-label\">Choose Your Path<\/span><\/p>\n<div class=\"utc-link-list\">\n          <a class=\"utc-link\" href=\"#tsm-paths\"><br \/>\n            <span class=\"utc-num\">01<\/span><br \/>\n            <span class=\"utc-link-text\">3 ways to send a Telegram message<\/span><br \/>\n          <\/a><br \/>\n          <a class=\"utc-link\" href=\"#tsm-botapi\"><br \/>\n            <span class=\"utc-num\">02<\/span><br \/>\n            <span class=\"utc-link-text\">Send with the Bot API sendMessage<\/span><br \/>\n          <\/a>\n        <\/div>\n<\/p><\/div>\n<div class=\"utc-col\">\n        <span class=\"utc-col-label\">The Bot Limit<\/span><\/p>\n<div class=\"utc-link-list\">\n          <a class=\"utc-link\" href=\"#tsm-limit\"><br \/>\n            <span class=\"utc-num\">03<\/span><br \/>\n            <span class=\"utc-link-text\">Why bots can&#8217;t message first<\/span><br \/>\n          <\/a><br \/>\n          <a class=\"utc-link\" href=\"#tsm-unipile\"><br \/>\n            <span class=\"utc-num\">04<\/span><br \/>\n            <span class=\"utc-link-text\">Send from a linked account<\/span><br \/>\n          <\/a>\n        <\/div>\n<\/p><\/div>\n<div class=\"utc-col\">\n        <span class=\"utc-col-label\">Groups &#038; Safety<\/span><\/p>\n<div class=\"utc-link-list\">\n          <a class=\"utc-link\" href=\"#tsm-groups\"><br \/>\n            <span class=\"utc-num\">05<\/span><br \/>\n            <span class=\"utc-link-text\">Send a message in a group<\/span><br \/>\n          <\/a><br \/>\n          <a class=\"utc-link\" href=\"#tsm-practices\"><br \/>\n            <span class=\"utc-num\">06<\/span><br \/>\n            <span class=\"utc-link-text\">Best practices against restrictions<\/span><br \/>\n          <\/a>\n        <\/div>\n<\/p><\/div>\n<div class=\"utc-col\">\n        <span class=\"utc-col-label\">Resources<\/span><\/p>\n<div class=\"utc-link-list\">\n          <a class=\"utc-link\" href=\"#tsm-cta\"><br \/>\n            <span class=\"utc-num\">07<\/span><br \/>\n            <span class=\"utc-link-text\">Build with Unipile<span class=\"utc-tag-best\">Best<\/span><\/span><br \/>\n          <\/a><br \/>\n          <a class=\"utc-link\" href=\"#faq-tsm\"><br \/>\n            <span class=\"utc-num utc-num-faq\">FAQ<\/span><br \/>\n            <span class=\"utc-link-text\">Frequently Asked Questions<\/span><br \/>\n          <\/a>\n        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<p><script>\n(function(){\n  var toc = document.getElementById('unipile-toc');\n  if (!toc) return;<\/p>\n<p>  var toggleBtn = toc.querySelector('.utc-toggle');\n  var toggleLabel = toc.querySelector('.utc-toggle-label');\n  if (toggleBtn) {\n    toggleBtn.addEventListener('click', function(){\n      var isCollapsed = toc.classList.toggle('utc-collapsed');\n      if (toggleLabel) toggleLabel.textContent = isCollapsed ? 'Show' : 'Hide';\n    });\n    if (window.innerWidth <= 700) {\n      toc.classList.add('utc-collapsed');\n      if (toggleLabel) toggleLabel.textContent = 'Show';\n    }\n  }\n\n  var links = toc.querySelectorAll('.utc-link');\n  links.forEach(function(link){\n    link.addEventListener('click', function(e){\n      var href = link.getAttribute('href');\n      if (!href || href.charAt(0) !== '#') return;\n      var target = document.getElementById(href.substring(1));\n      if (target) {\n        e.preventDefault();\n        var offset = 80;\n        var top = target.getBoundingClientRect().top + window.pageYOffset - offset;\n        window.scrollTo({ top: top, behavior: 'smooth' });\n      }\n    });\n  });\n\n  var sectionIds = [];\n  links.forEach(function(link){\n    var href = link.getAttribute('href');\n    if (href &#038;&#038; href.charAt(0) === '#') sectionIds.push(href.substring(1));\n  });\n\n  function updateActive(){\n    var scrollY = window.pageYOffset + 120;\n    var activeId = null;\n    var readIds = [];\n    sectionIds.forEach(function(id){\n      var el = document.getElementById(id);\n      if (el) {\n        var top = el.getBoundingClientRect().top + window.pageYOffset;\n        if (top <= scrollY) {\n          activeId = id;\n          readIds.push(id);\n        }\n      }\n    });\n    links.forEach(function(link){\n      var href = link.getAttribute('href');\n      var id = href ? href.substring(1) : '';\n      link.classList.remove('utc-active', 'utc-read');\n      if (id === activeId) {\n        link.classList.add('utc-active');\n      } else if (readIds.indexOf(id) !== -1) {\n        link.classList.add('utc-read');\n      }\n    });\n  }\n\n  if ('IntersectionObserver' in window) {\n    var observer = new IntersectionObserver(function(){\n      updateActive();\n    }, { rootMargin: '-120px 0px -60% 0px' });\n    sectionIds.forEach(function(id){\n      var el = document.getElementById(id);\n      if (el) observer.observe(el);\n    });\n  }\n  window.addEventListener('scroll', updateActive, { passive: true });\n  updateActive();\n})();\n<\/script><\/p>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<br \/>\n[et_pb_section fb_built=\"1\" _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_row _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_column type=\"4_4\" _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<br \/>\n[et_pb_code _builder_version=\"4.27.3\" global_colors_info=\"{}\"]\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#unipile-tsm-hero,\n#unipile-tsm-hero *,\n#unipile-tsm-hero *::before,\n#unipile-tsm-hero *::after {\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  border: none !important;\n  outline: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n  line-height: 1.5 !important;\n  letter-spacing: normal !important;\n  text-transform: none !important;\n  text-decoration: none !important;\n  list-style: none !important;\n  background: transparent !important;\n}\n#unipile-tsm-hero {\n  background: transparent !important;\n  display: block !important;\n  width: 100% !important;\n  overflow-x: hidden !important;\n}\n#unipile-tsm-hero p { display: contents !important; }\n#unipile-tsm-hero br { display: none !important; }\n#unipile-tsm-hero .tsh-wrap {\n  max-width: 1100px !important;\n  margin: 0 auto !important;\n  padding: 60px 20px 50px !important;\n  display: grid !important;\n  grid-template-columns: 1fr 1fr !important;\n  gap: 48px !important;\n  align-items: center !important;\n}\n#unipile-tsm-hero .tsh-badge {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  color: #2aaa7e !important;\n  padding: 6px 14px !important;\n  border-radius: 20px !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  margin-bottom: 20px !important;\n}\n#unipile-tsm-hero .tsh-badge-dot {\n  width: 7px !important;\n  height: 7px !important;\n  background: #3BB98B !important;\n  border-radius: 50% !important;\n  flex-shrink: 0 !important;\n  display: inline-block !important;\n}\n#unipile-tsm-hero .tsh-h1 {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 44px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  line-height: 1.18 !important;\n  margin-bottom: 20px !important;\n}\n#unipile-tsm-hero .tsh-accent {\n  color: #3BB98B !important;\n}\n#unipile-tsm-hero .tsh-slot {\n  display: inline !important;\n  background: rgba(221, 223, 76, 0.35) !important;\n  color: #0f2736 !important;\n  padding: 1px 6px !important;\n  border-radius: 4px !important;\n}\n#unipile-tsm-hero .tsh-desc {\n  font-size: 17px !important;\n  line-height: 1.75 !important;\n  color: #383838 !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-hero .tsh-desc code {\n  font-family: 'Courier New', monospace !important;\n  background: rgba(15, 39, 54, 0.06) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 15px !important;\n}\n#unipile-tsm-hero .tsh-actions {\n  display: flex !important;\n  align-items: center !important;\n  gap: 14px !important;\n  flex-wrap: wrap !important;\n}\n#unipile-tsm-hero .tsh-cta-primary {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: #DDDF4C !important;\n  color: #0f2736 !important;\n  padding: 14px 24px !important;\n  border-radius: 8px !important;\n  font-size: 15px !important;\n  font-weight: 600 !important;\n  border: 2px solid #DDDF4C !important;\n  cursor: pointer !important;\n  white-space: nowrap !important;\n  transition: transform 0.25s ease !important;\n  text-decoration: none !important;\n}\n#unipile-tsm-hero .tsh-cta-primary:hover {\n  transform: translateY(-5px) !important;\n}\n#unipile-tsm-hero .tsh-cta-primary svg {\n  width: 16px !important;\n  height: 16px !important;\n  stroke: currentColor !important;\n  fill: none !important;\n  stroke-width: 2.5 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n  flex-shrink: 0 !important;\n}\n#unipile-tsm-hero .tsh-cta-secondary {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: transparent !important;\n  color: #0f2736 !important;\n  padding: 12px 22px !important;\n  border-radius: 8px !important;\n  font-size: 15px !important;\n  font-weight: 600 !important;\n  border: 2px solid #0f2736 !important;\n  cursor: pointer !important;\n  white-space: nowrap !important;\n  transition: all 0.25s ease !important;\n  text-decoration: none !important;\n}\n#unipile-tsm-hero .tsh-cta-secondary:hover {\n  background: #0f2736 !important;\n  color: #ffffff !important;\n}\n#unipile-tsm-hero .tsh-hero-right {}\n#unipile-tsm-hero .tsh-code-wrap {\n  border-radius: 14px !important;\n  overflow: hidden !important;\n  background: #0d1117 !important;\n}\n#unipile-tsm-hero .tsh-editor-bar {\n  background: #161b22 !important;\n  padding: 12px 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  border-bottom: 1px solid rgba(255,255,255,0.06) !important;\n}\n#unipile-tsm-hero .tsh-dot {\n  width: 12px !important;\n  height: 12px !important;\n  border-radius: 50% !important;\n  display: inline-block !important;\n  flex-shrink: 0 !important;\n}\n#unipile-tsm-hero .tsh-dot-r { background: #ff5f57 !important; }\n#unipile-tsm-hero .tsh-dot-y { background: #febc2e !important; }\n#unipile-tsm-hero .tsh-dot-g { background: #28c840 !important; }\n#unipile-tsm-hero .tsh-filename {\n  color: #8b949e !important;\n  font-size: 13px !important;\n  margin-left: 6px !important;\n  font-family: 'Courier New', monospace !important;\n}\n#unipile-tsm-hero .tsh-pre {\n  padding: 22px 24px !important;\n  font-size: 13px !important;\n  line-height: 1.8 !important;\n  overflow-x: auto !important;\n  background: #0d1117 !important;\n  white-space: pre-wrap !important;\n  word-break: break-word !important;\n}\n#unipile-tsm-hero .tsh-pre code {\n  font-family: 'Courier New', monospace !important;\n  white-space: pre-wrap !important;\n  display: block !important;\n  word-break: break-word !important;\n}\n#unipile-tsm-hero .c { color: #8b949e !important; }\n#unipile-tsm-hero .k { color: #ff7b72 !important; }\n#unipile-tsm-hero .fn { color: #d2a8ff !important; }\n#unipile-tsm-hero .s { color: #a5d6ff !important; }\n#unipile-tsm-hero .n { color: #79c0ff !important; }\n#unipile-tsm-hero .w { color: #e6edf3 !important; }\n#unipile-tsm-hero .tsh-editor-ok {\n  background: rgba(59, 185, 139, 0.1) !important;\n  border-top: 1px solid rgba(59, 185, 139, 0.25) !important;\n  color: #3BB98B !important;\n  padding: 11px 24px !important;\n  font-size: 12.5px !important;\n  font-family: 'Courier New', monospace !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n}\n#unipile-tsm-hero .tsh-ok-dot {\n  width: 7px !important;\n  height: 7px !important;\n  background: #3BB98B !important;\n  border-radius: 50% !important;\n  flex-shrink: 0 !important;\n  display: inline-block !important;\n}\n@media (max-width: 900px) {\n  #unipile-tsm-hero .tsh-wrap {\n    grid-template-columns: 1fr !important;\n    gap: 36px !important;\n    padding: 50px 20px 40px !important;\n  }\n  #unipile-tsm-hero .tsh-h1 {\n    font-size: 34px !important;\n  }\n}\n@media (max-width: 600px) {\n  #unipile-tsm-hero .tsh-wrap {\n    padding: 40px 16px 32px !important;\n  }\n  #unipile-tsm-hero .tsh-h1 {\n    font-size: 28px !important;\n  }\n  #unipile-tsm-hero .tsh-desc {\n    font-size: 16px !important;\n  }\n  #unipile-tsm-hero .tsh-actions {\n    flex-direction: column !important;\n    width: 100% !important;\n  }\n  #unipile-tsm-hero .tsh-cta-primary,\n  #unipile-tsm-hero .tsh-cta-secondary {\n    width: 100% !important;\n    justify-content: center !important;\n  }\n  #unipile-tsm-hero .tsh-pre {\n    font-size: 12px !important;\n    padding: 16px !important;\n  }\n}\n@media (max-width: 400px) {\n  #unipile-tsm-hero .tsh-h1 {\n    font-size: 26px !important;\n  }\n}\n<\/style>\n<div id=\"unipile-tsm-hero\">\n<div class=\"tsh-wrap\">\n<div class=\"tsh-hero-left\">\n<div class=\"tsh-badge\"><span class=\"tsh-badge-dot\"><\/span><span>Telegram API Send Message<\/span><\/div>\n<h1 class=\"tsh-h1\"><span>Telegram API Send Message: sendMessage and Connected Accounts<\/span><\/h1>\n<div class=\"tsh-desc\">A code-first walkthrough of sending a Telegram message: the Bot API <code>sendMessage<\/code> endpoint in curl, Python and Node, the structural limit that stops a bot from writing to someone first, and how to send from a real connected Telegram account with Unipile's <code>startChat<\/code> and <code>sendMessage<\/code>.<\/div>\n<div class=\"tsh-actions\">\n        <a class=\"tsh-cta-primary\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><br \/>\n          <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><br \/>\n          <span>Build with Unipile<\/span><br \/>\n        <\/a><br \/>\n        <a class=\"tsh-cta-secondary\" href=\"https:\/\/developer.unipile.com\/docs\/getting-started\" target=\"_blank\" rel=\"noopener\"><br \/>\n          <span>Read the docs<\/span><br \/>\n        <\/a>\n      <\/div>\n<\/p><\/div>\n<div class=\"tsh-hero-right\">\n<div class=\"tsh-code-wrap\">\n<div class=\"tsh-editor-bar\">\n          <span class=\"tsh-dot tsh-dot-r\"><\/span><br \/>\n          <span class=\"tsh-dot tsh-dot-y\"><\/span><br \/>\n          <span class=\"tsh-dot tsh-dot-g\"><\/span><br \/>\n          <span class=\"tsh-filename\">send_message.sh<\/span>\n        <\/div>\n<div class=\"tsh-pre\"><code><span class=\"c\"># Bot API sendMessage<\/span>&#10;<span class=\"w\">curl -X POST <\/span><span class=\"s\">\"https:\/\/api.telegram.org\/bot$TOKEN\/sendMessage\"<\/span> <span class=\"w\">\\<\/span>&#10;<span class=\"w\">  -d chat_id=<\/span><span class=\"n\">123456789<\/span> <span class=\"w\">\\<\/span>&#10;<span class=\"w\">  -d text=<\/span><span class=\"s\">\"Hello from the Bot API\"<\/span> <span class=\"w\">\\<\/span>&#10;<span class=\"w\">  -d parse_mode=<\/span><span class=\"s\">\"Markdown\"<\/span><\/code><\/div>\n<div class=\"tsh-editor-ok\"><span class=\"tsh-ok-dot\"><\/span><span>200 OK: message sent<\/span><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<br \/>\n[et_pb_section fb_built=\"1\" _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_row _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_column type=\"4_4\" _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<br \/>\n[et_pb_code _builder_version=\"4.27.3\" global_colors_info=\"{}\"]\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#unipile-tsm-paths,\n#unipile-tsm-paths *,\n#unipile-tsm-paths *::before,\n#unipile-tsm-paths *::after {\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  border: none !important;\n  outline: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n  line-height: 1.5 !important;\n  letter-spacing: normal !important;\n  text-transform: none !important;\n  text-decoration: none !important;\n  list-style: none !important;\n  background: transparent !important;\n}\n#unipile-tsm-paths {\n  background: transparent !important;\n  display: block !important;\n  width: 100% !important;\n  overflow-x: hidden !important;\n}\n#unipile-tsm-paths p { display: contents !important; }\n#unipile-tsm-paths br { display: none !important; }\n#unipile-tsm-paths .tsp-wrap {\n  max-width: 1100px !important;\n  margin: 0 auto !important;\n  padding: 70px 20px !important;\n}\n#unipile-tsm-paths .tsp-badge {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  color: #2aaa7e !important;\n  padding: 6px 14px !important;\n  border-radius: 20px !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  margin-bottom: 18px !important;\n}\n#unipile-tsm-paths .tsp-badge-dot {\n  width: 7px !important;\n  height: 7px !important;\n  background: #3BB98B !important;\n  border-radius: 50% !important;\n  flex-shrink: 0 !important;\n  display: inline-block !important;\n}\n#unipile-tsm-paths h2 {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 35px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n#unipile-tsm-paths .tsp-lead {\n  font-size: 17px !important;\n  line-height: 1.75 !important;\n  color: #383838 !important;\n  margin-bottom: 40px !important;\n}\n#unipile-tsm-paths .tsp-lead a {\n  color: #2aaa7e !important;\n  text-decoration: underline !important;\n}\n#unipile-tsm-paths .tsp-grid {\n  display: grid !important;\n  grid-template-columns: repeat(3, 1fr) !important;\n  gap: 20px !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-paths .tsp-card {\n  background: #ffffff !important;\n  border: 1px solid #e5e7eb !important;\n  border-radius: 16px !important;\n  padding: 26px !important;\n  display: flex !important;\n  flex-direction: column !important;\n}\n#unipile-tsm-paths .tsp-card.tsp-best {\n  border-color: #3BB98B !important;\n  box-shadow: 0 8px 24px rgba(59, 185, 139, 0.10) !important;\n}\n#unipile-tsm-paths .tsp-icon {\n  width: 40px !important;\n  height: 40px !important;\n  border-radius: 10px !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  margin-bottom: 16px !important;\n}\n#unipile-tsm-paths .tsp-icon svg {\n  width: 20px !important;\n  height: 20px !important;\n  stroke: #2aaa7e !important;\n  fill: none !important;\n  stroke-width: 2 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n}\n#unipile-tsm-paths .tsp-card-title {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 17px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  margin-bottom: 10px !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  flex-wrap: wrap !important;\n}\n#unipile-tsm-paths .tsp-pill {\n  display: inline-block !important;\n  font-size: 9px !important;\n  font-weight: 700 !important;\n  color: #ffffff !important;\n  background: #3BB98B !important;\n  padding: 3px 8px !important;\n  border-radius: 4px !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n}\n#unipile-tsm-paths .tsp-card-text {\n  font-size: 14.5px !important;\n  line-height: 1.68 !important;\n  color: #4a5568 !important;\n  margin-bottom: 14px !important;\n  flex: 1 !important;\n}\n#unipile-tsm-paths .tsp-card-text code {\n  font-family: 'Courier New', monospace !important;\n  background: rgba(15, 39, 54, 0.06) !important;\n  padding: 1px 5px !important;\n  border-radius: 4px !important;\n  font-size: 13px !important;\n}\n#unipile-tsm-paths .tsp-tag {\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: #8a8c2e !important;\n  background: rgba(221, 223, 76, 0.18) !important;\n  padding: 5px 10px !important;\n  border-radius: 6px !important;\n  width: fit-content !important;\n}\n#unipile-tsm-paths .tsp-note {\n  background: #f4f5f7 !important;\n  border-radius: 12px !important;\n  padding: 18px 22px !important;\n  font-size: 14.5px !important;\n  line-height: 1.7 !important;\n  color: #4a5568 !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-paths .tsp-note a,\n#unipile-tsm-paths .tsp-link {\n  color: #2aaa7e !important;\n  text-decoration: underline !important;\n  font-weight: 600 !important;\n  cursor: pointer !important;\n}\n#unipile-tsm-paths .tsp-cta {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: #DDDF4C !important;\n  color: #0f2736 !important;\n  padding: 13px 22px !important;\n  border-radius: 8px !important;\n  font-size: 14.5px !important;\n  font-weight: 600 !important;\n  border: 2px solid #DDDF4C !important;\n  cursor: pointer !important;\n  white-space: nowrap !important;\n  transition: transform 0.25s ease !important;\n  text-decoration: none !important;\n}\n#unipile-tsm-paths .tsp-cta:hover {\n  transform: translateY(-5px) !important;\n}\n#unipile-tsm-paths .tsp-cta svg {\n  width: 15px !important;\n  height: 15px !important;\n  stroke: currentColor !important;\n  fill: none !important;\n  stroke-width: 2.5 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n  flex-shrink: 0 !important;\n}\n@media (max-width: 900px) {\n  #unipile-tsm-paths .tsp-wrap { padding: 50px 20px !important; }\n  #unipile-tsm-paths h2 { font-size: 28px !important; }\n  #unipile-tsm-paths .tsp-grid { grid-template-columns: 1fr !important; }\n}\n@media (max-width: 600px) {\n  #unipile-tsm-paths .tsp-wrap { padding: 40px 16px !important; }\n  #unipile-tsm-paths h2 { font-size: 24px !important; }\n  #unipile-tsm-paths .tsp-lead { font-size: 16px !important; }\n  #unipile-tsm-paths .tsp-cta { width: 100% !important; justify-content: center !important; }\n}\n<\/style>\n<div id=\"unipile-tsm-paths\">\n<div class=\"tsp-wrap\">\n    <span id=\"tsm-paths\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><\/p>\n<div class=\"tsp-badge\"><span class=\"tsp-badge-dot\"><\/span><span>Decision Guide<\/span><\/div>\n<h2>Three ways to send a Telegram message, and which one to pick<\/h2>\n<div class=\"tsp-lead\">There are exactly three ways to send a message through the Telegram API. They are not interchangeable: each one sends the message as a different kind of sender, with different constraints on who can receive it.<\/div>\n<div class=\"tsp-grid\">\n<div class=\"tsp-card\">\n<div class=\"tsp-icon\"><svg viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"10\" rx=\"2\"\/><circle cx=\"12\" cy=\"5\" r=\"2\"\/><path d=\"M12 7v4\"\/><line x1=\"8\" y1=\"16\" x2=\"8\" y2=\"16\"\/><line x1=\"16\" y1=\"16\" x2=\"16\" y2=\"16\"\/><\/svg><\/div>\n<div class=\"tsp-card-title\">Bot API <code>sendMessage<\/code><\/div>\n<div class=\"tsp-card-text\">A single HTTP call, authenticated with a bot token from BotFather. The fastest way to send notifications, alerts and replies. The catch: a bot can only message users who have already started a conversation with it.<\/div>\n<p>        <span class=\"tsp-tag\">Best for bots and notifications<\/span>\n      <\/div>\n<div class=\"tsp-card\">\n<div class=\"tsp-icon\"><svg viewBox=\"0 0 24 24\"><rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\"\/><line x1=\"8\" y1=\"18\" x2=\"16\" y2=\"18\"\/><\/svg><\/div>\n<div class=\"tsp-card-title\">MTProto client (Telegram API)<\/div>\n<div class=\"tsp-card-text\">Full protocol access via <code>api_id<\/code> and <code>api_hash<\/code>, used to build your own Telegram client from scratch (Telethon, Pyrogram, TDLib). The heaviest option to implement and maintain.<\/div>\n<p>        <span class=\"tsp-tag\">Best for building a custom client<\/span>\n      <\/div>\n<div class=\"tsp-card tsp-best\">\n<div class=\"tsp-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M23 21v-2a4 4 0 00-3-3.87\"\/><path d=\"M16 3.13a4 4 0 010 7.75\"\/><\/svg><\/div>\n<div class=\"tsp-card-title\">Connected user account<span class=\"tsp-pill\">Unipile<\/span><\/div>\n<div class=\"tsp-card-text\">Sends as a real Telegram account, linked through Telegram's Devices feature (QR code or Hosted Auth). No \"message me first\" restriction, and it works for groups and existing conversations too.<\/div>\n<p>        <span class=\"tsp-tag\">Best for outbound messaging at scale<\/span>\n      <\/div>\n<\/p><\/div>\n<div class=\"tsp-note\">Getting a bot token or an <code>api_id<\/code> \/ <code>api_hash<\/code> pair is a separate topic. For that step-by-step, see our complete guide to <a class=\"tsp-link\" href=\"https:\/\/www.unipile.com\/how-to-get-telegram-api-the-ultimate-step-by-step-guide\/\" target=\"_self\">getting Telegram API access<\/a>. This guide only covers sending the message once you have credentials.<\/div>\n<p>    <a class=\"tsp-cta\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><br \/>\n      <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><br \/>\n      <span>Build your Telegram integration<\/span><br \/>\n    <\/a>\n  <\/div>\n<\/div>\n<p><script>\n(function(){\n  var root = document.getElementById('unipile-tsm-paths');\n  if (!root) return;\n  root.addEventListener('click', function(e){\n    var el = e.target.closest('[data-upl-link]');\n    if (!el) return;\n    e.preventDefault();\n    window.open(el.getAttribute('data-upl-link'), el.getAttribute('data-upl-target') || '_self');\n  });\n})();\n<\/script><\/p>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<br \/>\n[et_pb_section fb_built=\"1\" _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_row _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_column type=\"4_4\" _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<br \/>\n[et_pb_code _builder_version=\"4.27.3\" global_colors_info=\"{}\"]\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#unipile-tsm-botapi,\n#unipile-tsm-botapi *,\n#unipile-tsm-botapi *::before,\n#unipile-tsm-botapi *::after {\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  border: none !important;\n  outline: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n  line-height: 1.5 !important;\n  letter-spacing: normal !important;\n  text-transform: none !important;\n  text-decoration: none !important;\n  list-style: none !important;\n  background: transparent !important;\n}\n#unipile-tsm-botapi {\n  background: transparent !important;\n  display: block !important;\n  width: 100% !important;\n  overflow-x: hidden !important;\n}\n#unipile-tsm-botapi p { display: contents !important; }\n#unipile-tsm-botapi br { display: none !important; }\n#unipile-tsm-botapi .tsb-wrap {\n  max-width: 1100px !important;\n  margin: 0 auto !important;\n  padding: 0px 20px 70px !important;\n}\n#unipile-tsm-botapi .tsb-badge {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: rgba(221, 223, 76, 0.18) !important;\n  color: #8a8c2e !important;\n  padding: 6px 14px !important;\n  border-radius: 20px !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  margin-bottom: 18px !important;\n}\n#unipile-tsm-botapi .tsb-badge-dot {\n  width: 7px !important;\n  height: 7px !important;\n  background: #DDDF4C !important;\n  border-radius: 50% !important;\n  flex-shrink: 0 !important;\n  display: inline-block !important;\n}\n#unipile-tsm-botapi h2 {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 35px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n#unipile-tsm-botapi .tsb-lead {\n  font-size: 17px !important;\n  line-height: 1.75 !important;\n  color: #383838 !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-botapi .tsb-lead code {\n  font-family: 'Courier New', monospace !important;\n  background: rgba(15, 39, 54, 0.06) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 15px !important;\n}\n\/* Params table *\/\n#unipile-tsm-botapi .tsb-table-wrap {\n  background: #ffffff !important;\n  border: 1px solid #e5e7eb !important;\n  border-radius: 16px !important;\n  overflow: hidden !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-botapi table {\n  width: 100% !important;\n  border-collapse: collapse !important;\n}\n#unipile-tsm-botapi thead tr {\n  background: #f4f5f7 !important;\n}\n#unipile-tsm-botapi th {\n  text-align: left !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: #64748b !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  padding: 14px 20px !important;\n}\n#unipile-tsm-botapi td {\n  padding: 14px 20px !important;\n  font-size: 14px !important;\n  color: #383838 !important;\n  border-top: 1px solid #e5e7eb !important;\n  vertical-align: top !important;\n}\n#unipile-tsm-botapi td code {\n  font-family: 'Courier New', monospace !important;\n  background: rgba(15, 39, 54, 0.06) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 12.5px !important;\n  color: #0f2736 !important;\n}\n#unipile-tsm-botapi .tsb-req {\n  display: inline-block !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  color: #ffffff !important;\n  background: #ef4444 !important;\n  padding: 2px 7px !important;\n  border-radius: 4px !important;\n  text-transform: uppercase !important;\n}\n#unipile-tsm-botapi .tsb-opt {\n  display: inline-block !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  color: #64748b !important;\n  background: #e2e8f0 !important;\n  padding: 2px 7px !important;\n  border-radius: 4px !important;\n  text-transform: uppercase !important;\n}\n\/* Tabs \/ code blocks stacked *\/\n#unipile-tsm-botapi .tsb-codes {\n  display: flex !important;\n  flex-direction: column !important;\n  gap: 20px !important;\n}\n#unipile-tsm-botapi .tsb-code-wrap {\n  border-radius: 14px !important;\n  overflow: hidden !important;\n  background: #0d1117 !important;\n}\n#unipile-tsm-botapi .tsb-editor-bar {\n  background: #161b22 !important;\n  padding: 12px 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  border-bottom: 1px solid rgba(255,255,255,0.06) !important;\n}\n#unipile-tsm-botapi .tsb-dot {\n  width: 12px !important;\n  height: 12px !important;\n  border-radius: 50% !important;\n  display: inline-block !important;\n  flex-shrink: 0 !important;\n}\n#unipile-tsm-botapi .tsb-dot-r { background: #ff5f57 !important; }\n#unipile-tsm-botapi .tsb-dot-y { background: #febc2e !important; }\n#unipile-tsm-botapi .tsb-dot-g { background: #28c840 !important; }\n#unipile-tsm-botapi .tsb-filename {\n  color: #8b949e !important;\n  font-size: 13px !important;\n  margin-left: 6px !important;\n  font-family: 'Courier New', monospace !important;\n}\n#unipile-tsm-botapi .tsb-pre {\n  padding: 22px 24px !important;\n  font-size: 13px !important;\n  line-height: 1.8 !important;\n  overflow-x: auto !important;\n  background: #0d1117 !important;\n  white-space: pre-wrap !important;\n  word-break: break-word !important;\n}\n#unipile-tsm-botapi .tsb-pre code {\n  font-family: 'Courier New', monospace !important;\n  white-space: pre-wrap !important;\n  display: block !important;\n  word-break: break-word !important;\n}\n#unipile-tsm-botapi .c { color: #8b949e !important; }\n#unipile-tsm-botapi .k { color: #ff7b72 !important; }\n#unipile-tsm-botapi .fn { color: #d2a8ff !important; }\n#unipile-tsm-botapi .s { color: #a5d6ff !important; }\n#unipile-tsm-botapi .n { color: #79c0ff !important; }\n#unipile-tsm-botapi .w { color: #e6edf3 !important; }\n@media (max-width: 900px) {\n  #unipile-tsm-botapi .tsb-wrap { padding: 0 20px 50px !important; }\n  #unipile-tsm-botapi h2 { font-size: 28px !important; }\n}\n@media (max-width: 600px) {\n  #unipile-tsm-botapi .tsb-wrap { padding: 0 16px 40px !important; }\n  #unipile-tsm-botapi h2 { font-size: 24px !important; }\n  #unipile-tsm-botapi .tsb-lead { font-size: 16px !important; }\n  #unipile-tsm-botapi .tsb-pre { font-size: 12px !important; padding: 16px !important; }\n  \/* Table -> stacked cards on mobile (no horizontal scroll) *\/\n  #unipile-tsm-botapi table, #unipile-tsm-botapi thead, #unipile-tsm-botapi tbody,\n  #unipile-tsm-botapi th, #unipile-tsm-botapi td, #unipile-tsm-botapi tr {\n    display: block !important;\n    width: 100% !important;\n  }\n  #unipile-tsm-botapi thead { display: none !important; }\n  #unipile-tsm-botapi tr {\n    border-top: 1px solid #e5e7eb !important;\n    padding: 14px 16px !important;\n  }\n  #unipile-tsm-botapi tr:first-child { border-top: none !important; }\n  #unipile-tsm-botapi td {\n    padding: 4px 0 !important;\n    border-top: none !important;\n    font-size: 13px !important;\n  }\n  #unipile-tsm-botapi td::before {\n    content: attr(data-label) !important;\n    display: block !important;\n    font-size: 10.5px !important;\n    font-weight: 700 !important;\n    color: #94a3b8 !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.5px !important;\n    margin-bottom: 3px !important;\n  }\n}\n<\/style>\n<div id=\"unipile-tsm-botapi\">\n<div class=\"tsb-wrap\">\n    <span id=\"tsm-botapi\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><\/p>\n<div class=\"tsb-badge\"><span class=\"tsb-badge-dot\"><\/span><span>Code Tutorial<\/span><\/div>\n<h2>Send a message with the Bot API sendMessage endpoint<\/h2>\n<div class=\"tsb-lead\">The Bot API exposes a single HTTP endpoint for sending a message: <code>POST https:\/\/api.telegram.org\/bot&lt;TOKEN&gt;\/sendMessage<\/code>. As of Bot API 10.2 (July 14, 2026), the required parameters are unchanged: a <code>chat_id<\/code> and a <code>text<\/code> body.<\/div>\n<div class=\"tsb-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-label=\"Parameter\"><code>chat_id<\/code> <span class=\"tsb-req\">Required<\/span><\/td>\n<td data-label=\"Type\">Integer or String<\/td>\n<td data-label=\"Description\">Unique identifier of the target chat, or <code>@username<\/code> for a public channel.<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Parameter\"><code>text<\/code> <span class=\"tsb-req\">Required<\/span><\/td>\n<td data-label=\"Type\">String<\/td>\n<td data-label=\"Description\">Message text, 1 to 4096 characters after entity parsing.<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Parameter\"><code>parse_mode<\/code> <span class=\"tsb-opt\">Optional<\/span><\/td>\n<td data-label=\"Type\">String<\/td>\n<td data-label=\"Description\"><code>MarkdownV2<\/code>, <code>HTML<\/code> or legacy <code>Markdown<\/code>, to render bold, links and code formatting.<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Parameter\"><code>disable_notification<\/code> <span class=\"tsb-opt\">Optional<\/span><\/td>\n<td data-label=\"Type\">Boolean<\/td>\n<td data-label=\"Description\">Sends the message silently, without a push notification sound.<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Parameter\"><code>reply_parameters<\/code> <span class=\"tsb-opt\">Optional<\/span><\/td>\n<td data-label=\"Type\">Object<\/td>\n<td data-label=\"Description\">Sends the message as a reply to an existing message in the chat.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<div class=\"tsb-codes\">\n<div class=\"tsb-code-wrap\">\n<div class=\"tsb-editor-bar\">\n          <span class=\"tsb-dot tsb-dot-r\"><\/span><br \/>\n          <span class=\"tsb-dot tsb-dot-y\"><\/span><br \/>\n          <span class=\"tsb-dot tsb-dot-g\"><\/span><br \/>\n          <span class=\"tsb-filename\">curl<\/span>\n        <\/div>\n<div class=\"tsb-pre\"><code><span class=\"w\">curl -X POST <\/span><span class=\"s\">\"https:\/\/api.telegram.org\/bot$TELEGRAM_BOT_TOKEN\/sendMessage\"<\/span> <span class=\"w\">\\<\/span>&#10;<span class=\"w\">  -H <\/span><span class=\"s\">\"Content-Type: application\/json\"<\/span> <span class=\"w\">\\<\/span>&#10;<span class=\"w\">  -d <\/span><span class=\"s\">'{<\/span>&#10;<span class=\"s\">    \"chat_id\": 123456789,<\/span>&#10;<span class=\"s\">    \"text\": \"Your order #4821 has shipped.\",<\/span>&#10;<span class=\"s\">    \"parse_mode\": \"MarkdownV2\"<\/span>&#10;<span class=\"s\">  }'<\/span><\/code><\/div>\n<\/p><\/div>\n<div class=\"tsb-code-wrap\">\n<div class=\"tsb-editor-bar\">\n          <span class=\"tsb-dot tsb-dot-r\"><\/span><br \/>\n          <span class=\"tsb-dot tsb-dot-y\"><\/span><br \/>\n          <span class=\"tsb-dot tsb-dot-g\"><\/span><br \/>\n          <span class=\"tsb-filename\">send_message.py<\/span>\n        <\/div>\n<div class=\"tsb-pre\"><code><span class=\"k\">import<\/span> <span class=\"w\">requests<\/span>&#10;&#10;<span class=\"w\">TOKEN <\/span><span class=\"k\">=<\/span> <span class=\"s\">\"123456:ABC-your-bot-token\"<\/span>&#10;<span class=\"w\">url <\/span><span class=\"k\">=<\/span> <span class=\"s\">f\"https:\/\/api.telegram.org\/bot{TOKEN}\/sendMessage\"<\/span>&#10;&#10;<span class=\"w\">payload <\/span><span class=\"k\">=<\/span> <span class=\"w\">{<\/span>&#10;    <span class=\"s\">\"chat_id\"<\/span><span class=\"w\">: <\/span><span class=\"n\">123456789<\/span><span class=\"w\">,<\/span>&#10;    <span class=\"s\">\"text\"<\/span><span class=\"w\">: <\/span><span class=\"s\">\"Your order #4821 has shipped.\"<\/span><span class=\"w\">,<\/span>&#10;    <span class=\"s\">\"parse_mode\"<\/span><span class=\"w\">: <\/span><span class=\"s\">\"MarkdownV2\"<\/span>&#10;<span class=\"w\">}<\/span>&#10;&#10;<span class=\"w\">response <\/span><span class=\"k\">=<\/span> <span class=\"w\">requests.<\/span><span class=\"fn\">post<\/span><span class=\"w\">(url, json=payload)<\/span>&#10;<span class=\"fn\">print<\/span><span class=\"w\">(response.<\/span><span class=\"fn\">json<\/span><span class=\"w\">())<\/span><\/code><\/div>\n<\/p><\/div>\n<div class=\"tsb-code-wrap\">\n<div class=\"tsb-editor-bar\">\n          <span class=\"tsb-dot tsb-dot-r\"><\/span><br \/>\n          <span class=\"tsb-dot tsb-dot-y\"><\/span><br \/>\n          <span class=\"tsb-dot tsb-dot-g\"><\/span><br \/>\n          <span class=\"tsb-filename\">sendMessage.js<\/span>\n        <\/div>\n<div class=\"tsb-pre\"><code><span class=\"k\">const<\/span> <span class=\"w\">TOKEN <\/span><span class=\"k\">=<\/span> <span class=\"s\">\"123456:ABC-your-bot-token\"<\/span><span class=\"w\">;<\/span>&#10;<span class=\"k\">const<\/span> <span class=\"w\">url <\/span><span class=\"k\">=<\/span> <span class=\"s\">`https:\/\/api.telegram.org\/bot${TOKEN}\/sendMessage`<\/span><span class=\"w\">;<\/span>&#10;&#10;<span class=\"k\">const<\/span> <span class=\"w\">response <\/span><span class=\"k\">=<\/span> <span class=\"k\">await<\/span> <span class=\"fn\">fetch<\/span><span class=\"w\">(url, {<\/span>&#10;  <span class=\"w\">method: <\/span><span class=\"s\">\"POST\"<\/span><span class=\"w\">,<\/span>&#10;  <span class=\"w\">headers: { <\/span><span class=\"s\">\"Content-Type\"<\/span><span class=\"w\">: <\/span><span class=\"s\">\"application\/json\"<\/span> <span class=\"w\">},<\/span>&#10;  <span class=\"w\">body: <\/span><span class=\"fn\">JSON.stringify<\/span><span class=\"w\">({<\/span>&#10;    <span class=\"w\">chat_id: <\/span><span class=\"n\">123456789<\/span><span class=\"w\">,<\/span>&#10;    <span class=\"w\">text: <\/span><span class=\"s\">\"Your order #4821 has shipped.\"<\/span><span class=\"w\">,<\/span>&#10;    <span class=\"w\">parse_mode: <\/span><span class=\"s\">\"MarkdownV2\"<\/span>&#10;  <span class=\"w\">})<\/span>&#10;<span class=\"w\">});<\/span>&#10;&#10;<span class=\"k\">const<\/span> <span class=\"w\">data <\/span><span class=\"k\">=<\/span> <span class=\"k\">await<\/span> <span class=\"w\">response.<\/span><span class=\"fn\">json<\/span><span class=\"w\">();<\/span>&#10;<span class=\"fn\">console<\/span><span class=\"w\">.<\/span><span class=\"fn\">log<\/span><span class=\"w\">(data);<\/span><\/code><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<br \/>\n[et_pb_section fb_built=\"1\" _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_row _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_column type=\"4_4\" _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<br \/>\n[et_pb_code _builder_version=\"4.27.3\" global_colors_info=\"{}\"]\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#unipile-tsm-limit,\n#unipile-tsm-limit *,\n#unipile-tsm-limit *::before,\n#unipile-tsm-limit *::after {\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  border: none !important;\n  outline: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n  line-height: 1.5 !important;\n  letter-spacing: normal !important;\n  text-transform: none !important;\n  text-decoration: none !important;\n  list-style: none !important;\n  background: transparent !important;\n}\n#unipile-tsm-limit {\n  background: transparent !important;\n  display: block !important;\n  width: 100% !important;\n  overflow-x: hidden !important;\n}\n#unipile-tsm-limit p { display: contents !important; }\n#unipile-tsm-limit br { display: none !important; }\n#unipile-tsm-limit .tsl-wrap {\n  max-width: 1100px !important;\n  margin: 0 auto !important;\n  padding: 70px 20px !important;\n}\n#unipile-tsm-limit .tsl-badge {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: rgba(239, 68, 68, 0.12) !important;\n  color: #dc2626 !important;\n  padding: 6px 14px !important;\n  border-radius: 20px !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  margin-bottom: 18px !important;\n}\n#unipile-tsm-limit .tsl-badge-dot {\n  width: 7px !important;\n  height: 7px !important;\n  background: #ef4444 !important;\n  border-radius: 50% !important;\n  flex-shrink: 0 !important;\n  display: inline-block !important;\n}\n#unipile-tsm-limit h2 {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 35px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n#unipile-tsm-limit .tsl-lead {\n  font-size: 17px !important;\n  line-height: 1.75 !important;\n  color: #383838 !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-limit .tsl-box {\n  background: #0f2736 !important;\n  border-radius: 16px !important;\n  padding: 32px !important;\n  display: flex !important;\n  gap: 20px !important;\n  margin-bottom: 28px !important;\n}\n#unipile-tsm-limit .tsl-box-icon {\n  width: 44px !important;\n  height: 44px !important;\n  min-width: 44px !important;\n  border-radius: 12px !important;\n  background: rgba(239, 68, 68, 0.18) !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n}\n#unipile-tsm-limit .tsl-box-icon svg {\n  width: 22px !important;\n  height: 22px !important;\n  stroke: #f87171 !important;\n  fill: none !important;\n  stroke-width: 2 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n}\n#unipile-tsm-limit .tsl-box-title {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 19px !important;\n  font-weight: 700 !important;\n  color: #ffffff !important;\n  margin-bottom: 10px !important;\n}\n#unipile-tsm-limit .tsl-box-text {\n  font-size: 15px !important;\n  line-height: 1.75 !important;\n  color: rgba(255,255,255,0.75) !important;\n}\n#unipile-tsm-limit .tsl-box-text strong {\n  color: #ffffff !important;\n  font-weight: 700 !important;\n}\n#unipile-tsm-limit .tsl-scope {\n  display: flex !important;\n  flex-direction: column !important;\n  gap: 12px !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-limit .tsl-scope-item {\n  display: flex !important;\n  align-items: flex-start !important;\n  gap: 12px !important;\n  background: #ffffff !important;\n  border: 1px solid #e5e7eb !important;\n  border-radius: 12px !important;\n  padding: 16px 20px !important;\n}\n#unipile-tsm-limit .tsl-scope-icon {\n  width: 26px !important;\n  height: 26px !important;\n  min-width: 26px !important;\n  border-radius: 50% !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  margin-top: 1px !important;\n}\n#unipile-tsm-limit .tsl-scope-icon svg {\n  width: 14px !important;\n  height: 14px !important;\n  stroke: #3BB98B !important;\n  fill: none !important;\n  stroke-width: 2.5 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n}\n#unipile-tsm-limit .tsl-scope-text {\n  font-size: 14.5px !important;\n  line-height: 1.68 !important;\n  color: #383838 !important;\n}\n#unipile-tsm-limit .tsl-scope-text strong {\n  color: #0f2736 !important;\n  font-weight: 700 !important;\n}\n#unipile-tsm-limit .tsl-cta {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: #DDDF4C !important;\n  color: #0f2736 !important;\n  padding: 13px 22px !important;\n  border-radius: 8px !important;\n  font-size: 14.5px !important;\n  font-weight: 600 !important;\n  border: 2px solid #DDDF4C !important;\n  cursor: pointer !important;\n  white-space: nowrap !important;\n  transition: transform 0.25s ease !important;\n  text-decoration: none !important;\n}\n#unipile-tsm-limit .tsl-cta:hover {\n  transform: translateY(-5px) !important;\n}\n#unipile-tsm-limit .tsl-cta svg {\n  width: 15px !important;\n  height: 15px !important;\n  stroke: currentColor !important;\n  fill: none !important;\n  stroke-width: 2.5 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n  flex-shrink: 0 !important;\n}\n@media (max-width: 900px) {\n  #unipile-tsm-limit .tsl-wrap { padding: 50px 20px !important; }\n  #unipile-tsm-limit h2 { font-size: 28px !important; }\n  #unipile-tsm-limit .tsl-box { flex-direction: column !important; }\n}\n@media (max-width: 600px) {\n  #unipile-tsm-limit .tsl-wrap { padding: 40px 16px !important; }\n  #unipile-tsm-limit h2 { font-size: 24px !important; }\n  #unipile-tsm-limit .tsl-lead { font-size: 16px !important; }\n  #unipile-tsm-limit .tsl-box { padding: 22px !important; }\n  #unipile-tsm-limit .tsl-cta { width: 100% !important; justify-content: center !important; }\n}\n<\/style>\n<div id=\"unipile-tsm-limit\">\n<div class=\"tsl-wrap\">\n    <span id=\"tsm-limit\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><\/p>\n<div class=\"tsl-badge\"><span class=\"tsl-badge-dot\"><\/span><span>The Bascule Point<\/span><\/div>\n<h2>Why bots can't message first, and what that means for you<\/h2>\n<div class=\"tsl-lead\">Every sendMessage call above works, right up until you try to reach someone who has never interacted with your bot. That's when the Bot API hits a wall that no parameter, retry or workaround fixes.<\/div>\n<div class=\"tsl-box\">\n<div class=\"tsl-box-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div>\n<div>\n<div class=\"tsl-box-title\">A bot cannot write to a user who hasn't written to it first<\/div>\n<div class=\"tsl-box-text\">This is a structural rule of the Bot API, not a rate limit or a bug. Until a user sends <strong>\/start<\/strong> (or any message) to your bot, <code style=\"background:rgba(255,255,255,0.1);padding:2px 6px;border-radius:4px;\">sendMessage<\/code> to that <code style=\"background:rgba(255,255,255,0.1);padding:2px 6px;border-radius:4px;\">chat_id<\/code> fails outright. This is fine for support bots and opt-in notification bots where the user reaches out first. It breaks entirely for outbound use cases: sales outreach, account recovery messages, transactional pings to a contact who has never opened your bot.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tsl-scope\">\n<div class=\"tsl-scope-item\">\n<div class=\"tsl-scope-icon\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div>\n<div class=\"tsl-scope-text\"><strong>The MTProto client<\/strong> does not have this restriction: a full Telegram API client can message any user, the same way the Telegram app does.<\/div>\n<\/p><\/div>\n<div class=\"tsl-scope-item\">\n<div class=\"tsl-scope-icon\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div>\n<div class=\"tsl-scope-text\"><strong>A connected user account<\/strong> doesn't have it either, because the message is sent by a real Telegram account, not a bot. This is the approach covered in the next section.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <a class=\"tsl-cta\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><br \/>\n      <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><br \/>\n      <span>Build the connected-account flow<\/span><br \/>\n    <\/a>\n  <\/div>\n<\/div>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<br \/>\n[et_pb_section fb_built=\"1\" _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_row _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_column type=\"4_4\" _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<br \/>\n[et_pb_code _builder_version=\"4.27.3\" global_colors_info=\"{}\"]\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#unipile-tsm-unipile,\n#unipile-tsm-unipile *,\n#unipile-tsm-unipile *::before,\n#unipile-tsm-unipile *::after {\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  border: none !important;\n  outline: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n  line-height: 1.5 !important;\n  letter-spacing: normal !important;\n  text-transform: none !important;\n  text-decoration: none !important;\n  list-style: none !important;\n  background: transparent !important;\n}\n#unipile-tsm-unipile {\n  background: transparent !important;\n  display: block !important;\n  width: 100% !important;\n  overflow-x: hidden !important;\n}\n#unipile-tsm-unipile p { display: contents !important; }\n#unipile-tsm-unipile br { display: none !important; }\n#unipile-tsm-unipile .tsu-wrap {\n  max-width: 1100px !important;\n  margin: 0 auto !important;\n  padding: 70px 20px !important;\n}\n#unipile-tsm-unipile .tsu-badge {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  color: #2aaa7e !important;\n  padding: 6px 14px !important;\n  border-radius: 20px !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  margin-bottom: 18px !important;\n}\n#unipile-tsm-unipile .tsu-badge-dot {\n  width: 7px !important;\n  height: 7px !important;\n  background: #3BB98B !important;\n  border-radius: 50% !important;\n  flex-shrink: 0 !important;\n  display: inline-block !important;\n}\n#unipile-tsm-unipile h2 {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 35px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n#unipile-tsm-unipile .tsu-lead {\n  font-size: 17px !important;\n  line-height: 1.75 !important;\n  color: #383838 !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-unipile .tsu-lead a,\n#unipile-tsm-unipile .tsu-link { color: #2aaa7e !important; text-decoration: underline !important; cursor: pointer !important; }\n#unipile-tsm-unipile .tsu-lead code {\n  font-family: 'Courier New', monospace !important;\n  background: rgba(15, 39, 54, 0.06) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 15px !important;\n}\n#unipile-tsm-unipile .tsu-steps {\n  display: flex !important;\n  flex-direction: column !important;\n  gap: 28px !important;\n  margin-bottom: 8px !important;\n}\n#unipile-tsm-unipile .tsu-step {\n  display: flex !important;\n  gap: 20px !important;\n}\n#unipile-tsm-unipile .tsu-step-num {\n  width: 40px !important;\n  height: 40px !important;\n  min-width: 40px !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  border-radius: 10px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: #2aaa7e !important;\n}\n#unipile-tsm-unipile .tsu-step-body { flex: 1 !important; min-width: 0 !important; }\n#unipile-tsm-unipile .tsu-step-title {\n  font-size: 16px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  margin-bottom: 10px !important;\n}\n#unipile-tsm-unipile .tsu-step-text {\n  font-size: 15px !important;\n  line-height: 1.75 !important;\n  color: #4a5568 !important;\n  margin-bottom: 14px !important;\n}\n#unipile-tsm-unipile .tsu-step-text code {\n  font-family: 'Courier New', monospace !important;\n  background: rgba(15, 39, 54, 0.06) !important;\n  padding: 1px 5px !important;\n  border-radius: 4px !important;\n  font-size: 13px !important;\n}\n#unipile-tsm-unipile .tsu-step-text a { color: #2aaa7e !important; text-decoration: underline !important; }\n#unipile-tsm-unipile .tsu-code-wrap {\n  border-radius: 14px !important;\n  overflow: hidden !important;\n  background: #0d1117 !important;\n  margin-bottom: 8px !important;\n}\n#unipile-tsm-unipile .tsu-editor-bar {\n  background: #161b22 !important;\n  padding: 12px 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  border-bottom: 1px solid rgba(255,255,255,0.06) !important;\n}\n#unipile-tsm-unipile .tsu-dot {\n  width: 12px !important;\n  height: 12px !important;\n  border-radius: 50% !important;\n  display: inline-block !important;\n  flex-shrink: 0 !important;\n}\n#unipile-tsm-unipile .tsu-dot-r { background: #ff5f57 !important; }\n#unipile-tsm-unipile .tsu-dot-y { background: #febc2e !important; }\n#unipile-tsm-unipile .tsu-dot-g { background: #28c840 !important; }\n#unipile-tsm-unipile .tsu-filename {\n  color: #8b949e !important;\n  font-size: 13px !important;\n  margin-left: 6px !important;\n  font-family: 'Courier New', monospace !important;\n}\n#unipile-tsm-unipile .tsu-pre {\n  padding: 22px 24px !important;\n  font-size: 13px !important;\n  line-height: 1.8 !important;\n  overflow-x: auto !important;\n  background: #0d1117 !important;\n  white-space: pre-wrap !important;\n  word-break: break-word !important;\n}\n#unipile-tsm-unipile .tsu-pre code {\n  font-family: 'Courier New', monospace !important;\n  white-space: pre-wrap !important;\n  display: block !important;\n  word-break: break-word !important;\n}\n#unipile-tsm-unipile .c { color: #8b949e !important; }\n#unipile-tsm-unipile .k { color: #ff7b72 !important; }\n#unipile-tsm-unipile .fn { color: #d2a8ff !important; }\n#unipile-tsm-unipile .s { color: #a5d6ff !important; }\n#unipile-tsm-unipile .n { color: #79c0ff !important; }\n#unipile-tsm-unipile .w { color: #e6edf3 !important; }\n#unipile-tsm-unipile .tsu-alert {\n  background: rgba(245, 158, 11, 0.08) !important;\n  border: 1px solid rgba(245, 158, 11, 0.25) !important;\n  border-radius: 12px !important;\n  padding: 16px 20px !important;\n  margin-top: 8px !important;\n  margin-bottom: 32px !important;\n  display: flex !important;\n  gap: 12px !important;\n  align-items: flex-start !important;\n}\n#unipile-tsm-unipile .tsu-alert-icon { flex-shrink: 0 !important; margin-top: 2px !important; }\n#unipile-tsm-unipile .tsu-alert-icon svg {\n  width: 18px !important;\n  height: 18px !important;\n  stroke: #f59e0b !important;\n  fill: none !important;\n  stroke-width: 2 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n}\n#unipile-tsm-unipile .tsu-alert-text {\n  font-size: 14px !important;\n  line-height: 1.7 !important;\n  color: #383838 !important;\n}\n#unipile-tsm-unipile .tsu-alert-text strong { color: #0f2736 !important; font-weight: 700 !important; }\n#unipile-tsm-unipile .tsu-cta {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: #DDDF4C !important;\n  color: #0f2736 !important;\n  padding: 13px 22px !important;\n  border-radius: 8px !important;\n  font-size: 14.5px !important;\n  font-weight: 600 !important;\n  border: 2px solid #DDDF4C !important;\n  cursor: pointer !important;\n  white-space: nowrap !important;\n  transition: transform 0.25s ease !important;\n  text-decoration: none !important;\n}\n#unipile-tsm-unipile .tsu-cta:hover { transform: translateY(-5px) !important; }\n#unipile-tsm-unipile .tsu-cta svg {\n  width: 15px !important;\n  height: 15px !important;\n  stroke: currentColor !important;\n  fill: none !important;\n  stroke-width: 2.5 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n  flex-shrink: 0 !important;\n}\n@media (max-width: 900px) {\n  #unipile-tsm-unipile .tsu-wrap { padding: 50px 20px !important; }\n  #unipile-tsm-unipile h2 { font-size: 28px !important; }\n}\n@media (max-width: 600px) {\n  #unipile-tsm-unipile .tsu-wrap { padding: 40px 16px !important; }\n  #unipile-tsm-unipile h2 { font-size: 24px !important; }\n  #unipile-tsm-unipile .tsu-lead { font-size: 16px !important; }\n  #unipile-tsm-unipile .tsu-step { flex-direction: column !important; gap: 12px !important; }\n  #unipile-tsm-unipile .tsu-pre { font-size: 12px !important; padding: 16px !important; }\n  #unipile-tsm-unipile .tsu-cta { width: 100% !important; justify-content: center !important; }\n}\n<\/style>\n<div id=\"unipile-tsm-unipile\">\n<div class=\"tsu-wrap\">\n    <span id=\"tsm-unipile\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><\/p>\n<div class=\"tsu-badge\"><span class=\"tsu-badge-dot\"><\/span><span>Linked Account<\/span><\/div>\n<h2>Send from a real Telegram account with Unipile<\/h2>\n<div class=\"tsu-lead\">Unipile connects an actual Telegram <strong>user account<\/strong>, not a bot. Linking happens through Telegram's own Devices feature, either a QR code scan or Hosted Auth with <code>providers: \"TELEGRAM\"<\/code>. Because the message comes from a real account, there is no bot-only \"message me first\" restriction to work around. See the <a class=\"tsu-link\" href=\"https:\/\/www.unipile.com\/communication-api\/messaging-api\/telegram-api\/\" target=\"_self\">Telegram API<\/a> product page for the full endpoint list.<\/div>\n<div class=\"tsu-steps\">\n<div class=\"tsu-step\">\n<div class=\"tsu-step-num\">1<\/div>\n<div class=\"tsu-step-body\">\n<div class=\"tsu-step-title\">Start a new conversation with startChat<\/div>\n<div class=\"tsu-step-text\">When the recipient has no existing chat with the linked account, call <code>POST \/chats<\/code> with <code>user_ids<\/code> and <code>text<\/code>. Telegram only allows one individual conversation per user pair, so if a chat already exists, this same call simply delivers the message into it instead of creating a duplicate.<\/div>\n<div class=\"tsu-code-wrap\">\n<div class=\"tsu-editor-bar\">\n              <span class=\"tsu-dot tsu-dot-r\"><\/span><br \/>\n              <span class=\"tsu-dot tsu-dot-y\"><\/span><br \/>\n              <span class=\"tsu-dot tsu-dot-g\"><\/span><br \/>\n              <span class=\"tsu-filename\">start_chat.py<\/span>\n            <\/div>\n<div class=\"tsu-pre\"><code><span class=\"k\">import<\/span> <span class=\"w\">requests<\/span>&#10;&#10;<span class=\"w\">url <\/span><span class=\"k\">=<\/span> <span class=\"s\">\"https:\/\/api6.unipile.com\/v2\/${accountId}\/chats\/send\"<\/span>&#10;<span class=\"w\">headers <\/span><span class=\"k\">=<\/span> <span class=\"w\">{<\/span><span class=\"s\">\"X-API-KEY\"<\/span><span class=\"w\">: api_key}<\/span>&#10;&#10;<span class=\"w\">data <\/span><span class=\"k\">=<\/span> <span class=\"w\">{<\/span>&#10;    <span class=\"s\">\"account_id\"<\/span><span class=\"w\">: account_id,<\/span>&#10;    <span class=\"s\">\"user_ids\"<\/span><span class=\"w\">: [telegram_user_id],<\/span>&#10;    <span class=\"s\">\"text\"<\/span><span class=\"w\">: <\/span><span class=\"s\">\"Hi, following up on your request.\"<\/span>&#10;<span class=\"w\">}<\/span>&#10;&#10;<span class=\"w\">response <\/span><span class=\"k\">=<\/span> <span class=\"w\">requests.<\/span><span class=\"fn\">post<\/span><span class=\"w\">(url, headers=headers, data=data)<\/span>&#10;<span class=\"w\">chat <\/span><span class=\"k\">=<\/span> <span class=\"w\">response.<\/span><span class=\"fn\">json<\/span><span class=\"w\">()<\/span>&#10;<span class=\"fn\">print<\/span><span class=\"w\">(chat[<\/span><span class=\"s\">\"chat_id\"<\/span><span class=\"w\">])  <\/span><span class=\"c\"># recipient's ID for 1:1 chats<\/span><\/code><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tsu-step\">\n<div class=\"tsu-step-num\">2<\/div>\n<div class=\"tsu-step-body\">\n<div class=\"tsu-step-title\">Send into an existing chat with sendMessage<\/div>\n<div class=\"tsu-step-text\">Once a <code>chat_id<\/code> exists, call <code>POST \/chats\/{chat_id}\/messages<\/code> with just the <code>text<\/code> body. This is the call to use for every follow-up message in an ongoing conversation.<\/div>\n<div class=\"tsu-code-wrap\">\n<div class=\"tsu-editor-bar\">\n              <span class=\"tsu-dot tsu-dot-r\"><\/span><br \/>\n              <span class=\"tsu-dot tsu-dot-y\"><\/span><br \/>\n              <span class=\"tsu-dot tsu-dot-g\"><\/span><br \/>\n              <span class=\"tsu-filename\">send_message.js<\/span>\n            <\/div>\n<div class=\"tsu-pre\"><code><span class=\"k\">const<\/span> <span class=\"w\">chatId <\/span><span class=\"k\">=<\/span> <span class=\"s\">\"CHAT_ID_FROM_STARTCHAT\"<\/span><span class=\"w\">;<\/span>&#10;<span class=\"k\">const<\/span> <span class=\"w\">form <\/span><span class=\"k\">=<\/span> <span class=\"k\">new<\/span> <span class=\"fn\">FormData<\/span><span class=\"w\">();<\/span>&#10;<span class=\"w\">form.<\/span><span class=\"fn\">append<\/span><span class=\"w\">(<\/span><span class=\"s\">\"text\"<\/span><span class=\"w\">, <\/span><span class=\"s\">\"Your update is ready to review.\"<\/span><span class=\"w\">);<\/span>&#10;&#10;<span class=\"k\">const<\/span> <span class=\"w\">response <\/span><span class=\"k\">=<\/span> <span class=\"k\">await<\/span> <span class=\"fn\">fetch<\/span><span class=\"w\">(<\/span>&#10;  <span class=\"s\">`https:\/\/api6.unipile.com\/v2\/${accountId}\/chats\/${chatId}\/messages\/send`<\/span><span class=\"w\">,<\/span>&#10;  <span class=\"w\">{<\/span>&#10;    <span class=\"w\">method: <\/span><span class=\"s\">\"POST\"<\/span><span class=\"w\">,<\/span>&#10;    <span class=\"w\">headers: { <\/span><span class=\"s\">\"X-API-KEY\"<\/span><span class=\"w\">: apiKey },<\/span>&#10;    <span class=\"w\">body: form<\/span>&#10;  <span class=\"w\">}<\/span>&#10;<span class=\"w\">);<\/span>&#10;&#10;<span class=\"k\">const<\/span> <span class=\"w\">sent <\/span><span class=\"k\">=<\/span> <span class=\"k\">await<\/span> <span class=\"w\">response.<\/span><span class=\"fn\">json<\/span><span class=\"w\">();<\/span>&#10;<span class=\"fn\">console<\/span><span class=\"w\">.<\/span><span class=\"fn\">log<\/span><span class=\"w\">(sent.message_id);<\/span><\/code><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tsu-alert\">\n<div class=\"tsu-alert-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div>\n<div class=\"tsu-alert-text\"><strong>Both calls take multipart\/form-data<\/strong>, not JSON. For 1:1 chats, the <code>chat_id<\/code> returned by <code>startChat<\/code> is the recipient's own ID: once you know a user's Telegram identifier, you can reuse it directly for <code>sendMessage<\/code> without a lookup step.<\/div>\n<\/p><\/div>\n<p>    <a class=\"tsu-cta\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><br \/>\n      <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><br \/>\n      <span>Start building with Unipile<\/span><br \/>\n    <\/a>\n  <\/div>\n<\/div>\n<p><script>\n(function(){\n  var root = document.getElementById('unipile-tsm-unipile');\n  if (!root) return;\n  root.addEventListener('click', function(e){\n    var el = e.target.closest('[data-upl-link]');\n    if (!el) return;\n    e.preventDefault();\n    window.open(el.getAttribute('data-upl-link'), el.getAttribute('data-upl-target') || '_self');\n  });\n})();\n<\/script><\/p>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<br \/>\n[et_pb_section fb_built=\"1\" _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_row _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_column type=\"4_4\" _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<br \/>\n[et_pb_code _builder_version=\"4.27.3\" global_colors_info=\"{}\"]\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#unipile-tsm-groups,\n#unipile-tsm-groups *,\n#unipile-tsm-groups *::before,\n#unipile-tsm-groups *::after {\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  border: none !important;\n  outline: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n  line-height: 1.5 !important;\n  letter-spacing: normal !important;\n  text-transform: none !important;\n  text-decoration: none !important;\n  list-style: none !important;\n  background: transparent !important;\n}\n#unipile-tsm-groups {\n  background: transparent !important;\n  display: block !important;\n  width: 100% !important;\n  overflow-x: hidden !important;\n}\n#unipile-tsm-groups p { display: contents !important; }\n#unipile-tsm-groups br { display: none !important; }\n#unipile-tsm-groups .tsg-wrap {\n  max-width: 1100px !important;\n  margin: 0 auto !important;\n  padding: 70px 20px !important;\n}\n#unipile-tsm-groups .tsg-badge {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  color: #2aaa7e !important;\n  padding: 6px 14px !important;\n  border-radius: 20px !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  margin-bottom: 18px !important;\n}\n#unipile-tsm-groups .tsg-badge-dot {\n  width: 7px !important;\n  height: 7px !important;\n  background: #3BB98B !important;\n  border-radius: 50% !important;\n  flex-shrink: 0 !important;\n  display: inline-block !important;\n}\n#unipile-tsm-groups h2 {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 35px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n#unipile-tsm-groups .tsg-lead {\n  font-size: 17px !important;\n  line-height: 1.75 !important;\n  color: #383838 !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-groups .tsg-lead code {\n  font-family: 'Courier New', monospace !important;\n  background: rgba(15, 39, 54, 0.06) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 15px !important;\n}\n#unipile-tsm-groups .tsg-table-wrap {\n  background: #ffffff !important;\n  border: 1px solid #e5e7eb !important;\n  border-radius: 16px !important;\n  overflow: hidden !important;\n  margin-bottom: 28px !important;\n}\n#unipile-tsm-groups table { width: 100% !important; border-collapse: collapse !important; }\n#unipile-tsm-groups thead tr { background: #f4f5f7 !important; }\n#unipile-tsm-groups th {\n  text-align: left !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  color: #64748b !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  padding: 14px 20px !important;\n}\n#unipile-tsm-groups td {\n  padding: 14px 20px !important;\n  font-size: 14px !important;\n  color: #383838 !important;\n  border-top: 1px solid #e5e7eb !important;\n  vertical-align: top !important;\n}\n#unipile-tsm-groups td code {\n  font-family: 'Courier New', monospace !important;\n  background: rgba(15, 39, 54, 0.06) !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-size: 12.5px !important;\n  color: #0f2736 !important;\n}\n#unipile-tsm-groups .tsg-method {\n  display: inline-block !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  color: #ffffff !important;\n  padding: 2px 7px !important;\n  border-radius: 4px !important;\n  text-transform: uppercase !important;\n  margin-right: 4px !important;\n}\n#unipile-tsm-groups .tsg-post { background: #3BB98B !important; }\n#unipile-tsm-groups .tsg-get { background: #2563eb !important; }\n#unipile-tsm-groups .tsg-delete { background: #ef4444 !important; }\n#unipile-tsm-groups .tsg-alert {\n  background: rgba(245, 158, 11, 0.08) !important;\n  border: 1px solid rgba(245, 158, 11, 0.25) !important;\n  border-radius: 12px !important;\n  padding: 16px 20px !important;\n  margin-bottom: 28px !important;\n  display: flex !important;\n  gap: 12px !important;\n  align-items: flex-start !important;\n}\n#unipile-tsm-groups .tsg-alert-icon { flex-shrink: 0 !important; margin-top: 2px !important; }\n#unipile-tsm-groups .tsg-alert-icon svg {\n  width: 18px !important;\n  height: 18px !important;\n  stroke: #f59e0b !important;\n  fill: none !important;\n  stroke-width: 2 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n}\n#unipile-tsm-groups .tsg-alert-text { font-size: 14px !important; line-height: 1.7 !important; color: #383838 !important; }\n#unipile-tsm-groups .tsg-alert-text strong { color: #0f2736 !important; font-weight: 700 !important; }\n#unipile-tsm-groups .tsg-alert-text code {\n  font-family: 'Courier New', monospace !important;\n  background: rgba(0,0,0,0.06) !important;\n  padding: 1px 5px !important;\n  border-radius: 4px !important;\n  font-size: 12.5px !important;\n}\n\/* Unsupported scope box *\/\n#unipile-tsm-groups .tsg-scope-box {\n  background: #f4f5f7 !important;\n  border-radius: 16px !important;\n  padding: 26px 28px !important;\n}\n#unipile-tsm-groups .tsg-scope-title {\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  margin-bottom: 14px !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n}\n#unipile-tsm-groups .tsg-scope-title svg {\n  width: 17px !important;\n  height: 17px !important;\n  stroke: #64748b !important;\n  fill: none !important;\n  stroke-width: 2 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n}\n#unipile-tsm-groups .tsg-scope-grid {\n  display: grid !important;\n  grid-template-columns: repeat(2, 1fr) !important;\n  gap: 10px 24px !important;\n}\n#unipile-tsm-groups .tsg-scope-row {\n  display: flex !important;\n  align-items: flex-start !important;\n  gap: 10px !important;\n  font-size: 13.5px !important;\n  line-height: 1.6 !important;\n  color: #4a5568 !important;\n}\n#unipile-tsm-groups .tsg-scope-row svg {\n  width: 15px !important;\n  height: 15px !important;\n  min-width: 15px !important;\n  stroke: #ef4444 !important;\n  fill: none !important;\n  stroke-width: 2.5 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n  margin-top: 2px !important;\n}\n@media (max-width: 900px) {\n  #unipile-tsm-groups .tsg-wrap { padding: 50px 20px !important; }\n  #unipile-tsm-groups h2 { font-size: 28px !important; }\n  #unipile-tsm-groups .tsg-scope-grid { grid-template-columns: 1fr !important; }\n}\n@media (max-width: 600px) {\n  #unipile-tsm-groups .tsg-wrap { padding: 40px 16px !important; }\n  #unipile-tsm-groups h2 { font-size: 24px !important; }\n  #unipile-tsm-groups .tsg-lead { font-size: 16px !important; }\n  #unipile-tsm-groups .tsg-scope-box { padding: 20px !important; }\n  \/* Table -> stacked cards on mobile (no horizontal scroll) *\/\n  #unipile-tsm-groups table, #unipile-tsm-groups thead, #unipile-tsm-groups tbody,\n  #unipile-tsm-groups th, #unipile-tsm-groups td, #unipile-tsm-groups tr {\n    display: block !important;\n    width: 100% !important;\n  }\n  #unipile-tsm-groups thead { display: none !important; }\n  #unipile-tsm-groups tr {\n    border-top: 1px solid #e5e7eb !important;\n    padding: 14px 16px !important;\n  }\n  #unipile-tsm-groups tr:first-child { border-top: none !important; }\n  #unipile-tsm-groups td {\n    padding: 4px 0 !important;\n    border-top: none !important;\n    font-size: 13px !important;\n  }\n  #unipile-tsm-groups td::before {\n    content: attr(data-label) !important;\n    display: block !important;\n    font-size: 10.5px !important;\n    font-weight: 700 !important;\n    color: #94a3b8 !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.5px !important;\n    margin-bottom: 3px !important;\n  }\n}\n<\/style>\n<div id=\"unipile-tsm-groups\">\n<div class=\"tsg-wrap\">\n    <span id=\"tsm-groups\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><\/p>\n<div class=\"tsg-badge\"><span class=\"tsg-badge-dot\"><\/span><span>Groups<\/span><\/div>\n<h2>Send a message inside a Telegram group<\/h2>\n<div class=\"tsg-lead\">Sending into a group works the same way as sending into an existing chat: <code>POST \/chats\/{chat_id}\/messages<\/code> with the group's <code>chat_id<\/code> and a <code>text<\/code> body. What changes is participant management, which uses its own endpoints.<\/div>\n<div class=\"tsg-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>Operation<\/th>\n<th>Endpoint<\/th>\n<th>Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-label=\"Operation\"><span class=\"tsg-method tsg-get\">GET<\/span> List participants<\/td>\n<td data-label=\"Endpoint\"><code>\/v2\/{account_id}\/chats\/{chat_id}\/participants<\/code><\/td>\n<td data-label=\"Notes\">Returns the current member list of the group.<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Operation\"><span class=\"tsg-method tsg-post\">POST<\/span> Add participant<\/td>\n<td data-label=\"Endpoint\"><code>\/v2\/{account_id}\/chats\/{chat_id}\/participants<\/code><\/td>\n<td data-label=\"Notes\">Requires the \"Add other members\" permission to be enabled on the group.<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Operation\"><span class=\"tsg-method tsg-delete\">DELETE<\/span> Remove participant<\/td>\n<td data-label=\"Endpoint\"><code>\/v2\/{account_id}\/chats\/{chat_id}\/participants<\/code><\/td>\n<td data-label=\"Notes\">The linked account must be a group admin.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<div class=\"tsg-alert\">\n<div class=\"tsg-alert-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div>\n<div class=\"tsg-alert-text\"><strong>Check permissions before you rely on the response code.<\/strong> If the group doesn't grant \"Add other members\" or the linked account isn't an admin, the API can still return a success response without actually adding or removing anyone. Always verify the participant list after the call, don't trust the status code alone.<\/div>\n<\/p><\/div>\n<div class=\"tsg-scope-box\">\n<div class=\"tsg-scope-title\"><svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg><span>What's not supported for Telegram in Unipile<\/span><\/div>\n<div class=\"tsg-scope-grid\">\n<div class=\"tsg-scope-row\"><svg viewBox=\"0 0 24 24\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg><span>Channels, communities and broadcasts<\/span><\/div>\n<div class=\"tsg-scope-row\"><svg viewBox=\"0 0 24 24\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg><span>Group admin actions: approving or promoting members<\/span><\/div>\n<div class=\"tsg-scope-row\"><svg viewBox=\"0 0 24 24\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg><span>Contact, location, poll and event attachments<\/span><\/div>\n<div class=\"tsg-scope-row\"><svg viewBox=\"0 0 24 24\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg><span>Chat archiving<\/span><\/div>\n<div class=\"tsg-scope-row\"><svg viewBox=\"0 0 24 24\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg><span>Voice and video calls<\/span><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<br \/>\n[et_pb_section fb_built=\"1\" _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_row _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_column type=\"4_4\" _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<br \/>\n[et_pb_code _builder_version=\"4.27.3\" global_colors_info=\"{}\"]\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#unipile-tsm-practices,\n#unipile-tsm-practices *,\n#unipile-tsm-practices *::before,\n#unipile-tsm-practices *::after {\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  border: none !important;\n  outline: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n  line-height: 1.5 !important;\n  letter-spacing: normal !important;\n  text-transform: none !important;\n  text-decoration: none !important;\n  list-style: none !important;\n  background: transparent !important;\n}\n#unipile-tsm-practices {\n  background: transparent !important;\n  display: block !important;\n  width: 100% !important;\n  overflow-x: hidden !important;\n}\n#unipile-tsm-practices p { display: contents !important; }\n#unipile-tsm-practices br { display: none !important; }\n#unipile-tsm-practices .tspr-wrap {\n  max-width: 1100px !important;\n  margin: 0 auto !important;\n  padding: 70px 20px !important;\n}\n#unipile-tsm-practices .tspr-badge {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  color: #2aaa7e !important;\n  padding: 6px 14px !important;\n  border-radius: 20px !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  margin-bottom: 18px !important;\n}\n#unipile-tsm-practices .tspr-badge-dot {\n  width: 7px !important;\n  height: 7px !important;\n  background: #3BB98B !important;\n  border-radius: 50% !important;\n  flex-shrink: 0 !important;\n  display: inline-block !important;\n}\n#unipile-tsm-practices h2 {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 35px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n#unipile-tsm-practices .tspr-lead {\n  font-size: 17px !important;\n  line-height: 1.75 !important;\n  color: #383838 !important;\n  margin-bottom: 36px !important;\n}\n#unipile-tsm-practices .tspr-lead strong { color: #0f2736 !important; font-weight: 700 !important; }\n#unipile-tsm-practices .tspr-grid {\n  display: grid !important;\n  grid-template-columns: repeat(4, 1fr) !important;\n  gap: 18px !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-practices .tspr-card {\n  background: #ffffff !important;\n  border: 1px solid #e5e7eb !important;\n  border-radius: 16px !important;\n  padding: 22px !important;\n}\n#unipile-tsm-practices .tspr-icon {\n  width: 38px !important;\n  height: 38px !important;\n  border-radius: 10px !important;\n  background: rgba(59, 185, 139, 0.12) !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  margin-bottom: 14px !important;\n}\n#unipile-tsm-practices .tspr-icon svg {\n  width: 19px !important;\n  height: 19px !important;\n  stroke: #2aaa7e !important;\n  fill: none !important;\n  stroke-width: 2 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n}\n#unipile-tsm-practices .tspr-card-title {\n  font-size: 14.5px !important;\n  font-weight: 700 !important;\n  color: #0f2736 !important;\n  margin-bottom: 8px !important;\n}\n#unipile-tsm-practices .tspr-card-text {\n  font-size: 13.5px !important;\n  line-height: 1.65 !important;\n  color: #4a5568 !important;\n}\n#unipile-tsm-practices .tspr-warn {\n  background: #0f2736 !important;\n  border-radius: 16px !important;\n  padding: 28px 32px !important;\n  display: flex !important;\n  gap: 20px !important;\n  margin-bottom: 32px !important;\n}\n#unipile-tsm-practices .tspr-warn-icon {\n  width: 42px !important;\n  height: 42px !important;\n  min-width: 42px !important;\n  border-radius: 12px !important;\n  background: rgba(239, 68, 68, 0.18) !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n}\n#unipile-tsm-practices .tspr-warn-icon svg {\n  width: 21px !important;\n  height: 21px !important;\n  stroke: #f87171 !important;\n  fill: none !important;\n  stroke-width: 2 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n}\n#unipile-tsm-practices .tspr-warn-title {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 17px !important;\n  font-weight: 700 !important;\n  color: #ffffff !important;\n  margin-bottom: 8px !important;\n}\n#unipile-tsm-practices .tspr-warn-text {\n  font-size: 14.5px !important;\n  line-height: 1.72 !important;\n  color: rgba(255,255,255,0.75) !important;\n}\n#unipile-tsm-practices .tspr-warn-text strong { color: #ffffff !important; font-weight: 700 !important; }\n#unipile-tsm-practices .tspr-cta {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: #DDDF4C !important;\n  color: #0f2736 !important;\n  padding: 13px 22px !important;\n  border-radius: 8px !important;\n  font-size: 14.5px !important;\n  font-weight: 600 !important;\n  border: 2px solid #DDDF4C !important;\n  cursor: pointer !important;\n  white-space: nowrap !important;\n  transition: transform 0.25s ease !important;\n  text-decoration: none !important;\n}\n#unipile-tsm-practices .tspr-cta:hover { transform: translateY(-5px) !important; }\n#unipile-tsm-practices .tspr-cta svg {\n  width: 15px !important;\n  height: 15px !important;\n  stroke: currentColor !important;\n  fill: none !important;\n  stroke-width: 2.5 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n  flex-shrink: 0 !important;\n}\n@media (max-width: 900px) {\n  #unipile-tsm-practices .tspr-wrap { padding: 50px 20px !important; }\n  #unipile-tsm-practices h2 { font-size: 28px !important; }\n  #unipile-tsm-practices .tspr-grid { grid-template-columns: 1fr 1fr !important; }\n  #unipile-tsm-practices .tspr-warn { flex-direction: column !important; }\n}\n@media (max-width: 600px) {\n  #unipile-tsm-practices .tspr-wrap { padding: 40px 16px !important; }\n  #unipile-tsm-practices h2 { font-size: 24px !important; }\n  #unipile-tsm-practices .tspr-lead { font-size: 16px !important; }\n  #unipile-tsm-practices .tspr-grid { grid-template-columns: 1fr !important; }\n  #unipile-tsm-practices .tspr-warn { padding: 22px !important; }\n  #unipile-tsm-practices .tspr-cta { width: 100% !important; justify-content: center !important; }\n}\n<\/style>\n<div id=\"unipile-tsm-practices\">\n<div class=\"tspr-wrap\">\n    <span id=\"tsm-practices\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><\/p>\n<div class=\"tspr-badge\"><span class=\"tspr-badge-dot\"><\/span><span>Deliverability<\/span><\/div>\n<h2>Best practices to avoid Telegram restrictions<\/h2>\n<div class=\"tspr-lead\">A linked account behaves like a real Telegram user, which means it is also held to the <strong>same anti-spam standards<\/strong> as one. Unipile's official guidance is direct: too many conversations started without a reply, or too many spam and blocking signals, can lead to a temporary restriction on the account.<\/div>\n<div class=\"tspr-grid\">\n<div class=\"tspr-card\">\n<div class=\"tspr-icon\"><svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 6 12 12 16 14\"\/><\/svg><\/div>\n<div class=\"tspr-card-title\">Respect the delay<\/div>\n<div class=\"tspr-card-text\">Never send less than 10 to 20 seconds apart between messages. Vary the interval, don't fire on a fixed clock.<\/div>\n<\/p><\/div>\n<div class=\"tspr-card\">\n<div class=\"tspr-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M22 11.08V12a10 10 0 11-5.93-9.14\"\/><polyline points=\"22 4 12 14.01 9 11.01\"\/><\/svg><\/div>\n<div class=\"tspr-card-title\">Warm up new accounts<\/div>\n<div class=\"tspr-card-text\">Avoid sending high volumes on freshly linked accounts. Start low and increase gradually as reply rates confirm the account is trusted.<\/div>\n<\/p><\/div>\n<div class=\"tspr-card\">\n<div class=\"tspr-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9\"\/><path d=\"M13.73 21a2 2 0 01-3.46 0\"\/><\/svg><\/div>\n<div class=\"tspr-card-title\">Watch reply rates<\/div>\n<div class=\"tspr-card-text\">A high share of conversations that get no reply is one of the strongest signals Telegram uses to flag an account.<\/div>\n<\/p><\/div>\n<div class=\"tspr-card\">\n<div class=\"tspr-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M23 21v-2a4 4 0 00-3-3.87\"\/><path d=\"M16 3.13a4 4 0 010 7.75\"\/><\/svg><\/div>\n<div class=\"tspr-card-title\">Prefer warm outreach<\/div>\n<div class=\"tspr-card-text\">Conversations that build on an existing relationship or referral generate fewer blocks than fully cold first messages.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tspr-warn\">\n<div class=\"tspr-warn-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div>\n<div>\n<div class=\"tspr-warn-title\">This is a customer-side decision<\/div>\n<div class=\"tspr-warn-text\">Unipile relays the messages you send, it does not set your cadence for you. <strong>The sending volume, timing and pacing are decided by you<\/strong>, based on the account's history and Telegram's own tolerance at any given time. Building in realistic delays from day one is the single highest-leverage practice here.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <a class=\"tspr-cta\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><br \/>\n      <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><br \/>\n      <span>Build with safe sending limits<\/span><br \/>\n    <\/a>\n  <\/div>\n<\/div>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<br \/>\n[et_pb_section fb_built=\"1\" _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_row _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_column type=\"4_4\" _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<br \/>\n[et_pb_code _builder_version=\"4.27.3\" global_colors_info=\"{}\"]\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#unipile-tsm-cta,\n#unipile-tsm-cta *,\n#unipile-tsm-cta *::before,\n#unipile-tsm-cta *::after {\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  border: none !important;\n  outline: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n  line-height: 1.5 !important;\n  letter-spacing: normal !important;\n  text-transform: none !important;\n  text-decoration: none !important;\n  list-style: none !important;\n  background: transparent !important;\n}\n#unipile-tsm-cta {\n  background: #0f2736 !important;\n  display: block !important;\n  width: 100% !important;\n  overflow-x: hidden !important;\n}\n#unipile-tsm-cta p { display: contents !important; }\n#unipile-tsm-cta br { display: none !important; }\n#unipile-tsm-cta .tsc-wrap {\n  max-width: 1100px !important;\n  margin: 0 auto !important;\n  padding: 70px 20px !important;\n  text-align: center !important;\n}\n#unipile-tsm-cta .tsc-badge {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: rgba(59, 185, 139, 0.18) !important;\n  color: #3BB98B !important;\n  padding: 6px 14px !important;\n  border-radius: 20px !important;\n  font-size: 12px !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  margin-bottom: 20px !important;\n}\n#unipile-tsm-cta .tsc-badge-dot {\n  width: 7px !important;\n  height: 7px !important;\n  background: #3BB98B !important;\n  border-radius: 50% !important;\n  flex-shrink: 0 !important;\n  display: inline-block !important;\n}\n#unipile-tsm-cta h2 {\n  font-family: 'Poppins', sans-serif !important;\n  font-size: 35px !important;\n  font-weight: 700 !important;\n  color: #ffffff !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n#unipile-tsm-cta .tsc-lead {\n  font-size: 17px !important;\n  line-height: 1.75 !important;\n  color: rgba(255,255,255,0.75) !important;\n  margin-bottom: 36px !important;\n}\n#unipile-tsm-cta .tsc-actions {\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  gap: 14px !important;\n  flex-wrap: wrap !important;\n  margin-bottom: 28px !important;\n}\n#unipile-tsm-cta .tsc-cta-primary {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: #DDDF4C !important;\n  color: #0f2736 !important;\n  padding: 14px 26px !important;\n  border-radius: 8px !important;\n  font-size: 15px !important;\n  font-weight: 600 !important;\n  border: 2px solid #DDDF4C !important;\n  cursor: pointer !important;\n  white-space: nowrap !important;\n  transition: transform 0.25s ease !important;\n  text-decoration: none !important;\n}\n#unipile-tsm-cta .tsc-cta-primary:hover { transform: translateY(-5px) !important; }\n#unipile-tsm-cta .tsc-cta-primary svg {\n  width: 16px !important;\n  height: 16px !important;\n  stroke: currentColor !important;\n  fill: none !important;\n  stroke-width: 2.5 !important;\n  stroke-linecap: round !important;\n  stroke-linejoin: round !important;\n  flex-shrink: 0 !important;\n}\n#unipile-tsm-cta .tsc-cta-secondary {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  background: transparent !important;\n  color: rgba(255,255,255,0.85) !important;\n  padding: 12px 24px !important;\n  border-radius: 8px !important;\n  font-size: 15px !important;\n  font-weight: 600 !important;\n  border: 2px solid rgba(255,255,255,0.25) !important;\n  cursor: pointer !important;\n  white-space: nowrap !important;\n  transition: all 0.25s ease !important;\n  text-decoration: none !important;\n}\n#unipile-tsm-cta .tsc-cta-secondary:hover { border-color: rgba(255,255,255,0.6) !important; color: #ffffff !important; }\n#unipile-tsm-cta .tsc-links {\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  gap: 10px !important;\n  flex-wrap: wrap !important;\n  font-size: 14px !important;\n  color: rgba(255,255,255,0.55) !important;\n}\n#unipile-tsm-cta .tsc-links a,\n#unipile-tsm-cta .tsc-link { color: #3BB98B !important; text-decoration: underline !important; cursor: pointer !important; }\n#unipile-tsm-cta .tsc-sep { color: rgba(255,255,255,0.3) !important; }\n@media (max-width: 900px) {\n  #unipile-tsm-cta .tsc-wrap { padding: 50px 20px !important; }\n  #unipile-tsm-cta h2 { font-size: 28px !important; }\n}\n@media (max-width: 600px) {\n  #unipile-tsm-cta .tsc-wrap { padding: 40px 16px !important; }\n  #unipile-tsm-cta h2 { font-size: 24px !important; }\n  #unipile-tsm-cta .tsc-lead { font-size: 16px !important; }\n  #unipile-tsm-cta .tsc-actions { flex-direction: column !important; width: 100% !important; }\n  #unipile-tsm-cta .tsc-cta-primary, #unipile-tsm-cta .tsc-cta-secondary { width: 100% !important; justify-content: center !important; }\n  #unipile-tsm-cta .tsc-links { flex-direction: column !important; gap: 4px !important; }\n  #unipile-tsm-cta .tsc-sep { display: none !important; }\n}\n<\/style>\n<div id=\"unipile-tsm-cta\">\n<div class=\"tsc-wrap\">\n    <span id=\"tsm-cta\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><\/p>\n<div class=\"tsc-badge\"><span class=\"tsc-badge-dot\"><\/span><span>Build With Unipile<\/span><\/div>\n<h2>Ready to send Telegram messages from real linked accounts?<\/h2>\n<div class=\"tsc-lead\">One API for startChat and sendMessage across Telegram, WhatsApp, LinkedIn, Instagram, Gmail, Outlook and IMAP, plus Google Calendar and Outlook Calendar. Link an account and send your first message in minutes.<\/div>\n<div class=\"tsc-actions\">\n      <a class=\"tsc-cta-primary\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><br \/>\n        <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><br \/>\n        <span>Build your Telegram integration<\/span><br \/>\n      <\/a><br \/>\n      <a class=\"tsc-cta-secondary\" href=\"https:\/\/developer.unipile.com\/docs\/getting-started\" target=\"_blank\" rel=\"noopener\"><br \/>\n        <span>Read the API docs<\/span><br \/>\n      <\/a> <a class=\"tsc-cta-secondary\" href=\"\/communication-api\/messaging-api\/telegram-api\/\"><span>See the Telegram API page<\/span><\/a>\n    <\/div>\n<div class=\"tsc-links\">\n      <span>New to the Telegram API?<\/span><br \/>\n      <a class=\"tsc-link\" href=\"https:\/\/www.unipile.com\/how-to-get-telegram-api-the-ultimate-step-by-step-guide\/\" target=\"_self\">Start with our access guide<\/a><br \/>\n      <span class=\"tsc-sep\">&#8226;<\/span><br \/>\n      <a class=\"tsc-link\" href=\"https:\/\/www.unipile.com\/communication-api\/messaging-api\/telegram-api\/\" target=\"_self\">Explore the Telegram API page<\/a>\n    <\/div>\n<\/p><\/div>\n<\/div>\n<p><script>\n(function(){\n  var root = document.getElementById('unipile-tsm-cta');\n  if (!root) return;\n  root.addEventListener('click', function(e){\n    var el = e.target.closest('[data-upl-link]');\n    if (!el) return;\n    e.preventDefault();\n    window.open(el.getAttribute('data-upl-link'), el.getAttribute('data-upl-target') || '_self');\n  });\n})();\n<\/script><\/p>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<br \/>\n[et_pb_section fb_built=\"1\" _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|40px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_row _builder_version=\"4.27.3\" background_color=\"transparent\" custom_padding=\"0px|0px|0px|0px|false|false\" global_colors_info=\"{}\"]<br \/>\n[et_pb_column type=\"4_4\" _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<br \/>\n[et_pb_code _builder_version=\"4.27.3\" global_colors_info=\"{}\"]<\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How do I send a Telegram message with the Bot API?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Call POST https:\/\/api.telegram.org\/botTOKEN\/sendMessage with a chat_id and a text parameter. The token comes from BotFather. The Bot API is free, and the current version is 10.2, published July 14, 2026.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Why can my Telegram bot not message a user first?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Telegram requires the user to open the conversation with the bot before the bot can send anything. There is no endpoint that lets a bot start a chat with an arbitrary user. If your product needs to initiate contact, a bot is the wrong tool and you need a real user account.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the difference between startChat and sendMessage?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"startChat opens a new conversation and sends the first message in one call. sendMessage posts into a conversation that already exists. Telegram allows only one individual chat per user, so calling startChat on someone you already have a chat with simply posts into that existing chat.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How do I send a message to a Telegram group?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"With the Bot API, add the bot to the group and use the group chat_id. From a connected account, send to the group chat id like any other chat. Unipile also exposes participant listing, adding and removal on groups, but it does not support channels, communities or broadcasts.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Which parse_mode should I use for formatting?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Telegram supports MarkdownV2 and HTML. MarkdownV2 requires escaping a long list of reserved characters, so HTML is usually the safer choice when the message text is generated dynamically.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How do I avoid getting my Telegram account restricted?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Do not use a brand new account purely for automation, ramp volume up gradually, and never send faster than one message every 10 to 20 seconds. Telegram bans permanently for flooding, spamming and inflating counters, and starting many conversations that go unanswered is a strong spam signal.\" }\n    }\n  ]\n}\n<\/script><\/p>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@600;700&#038;display=swap\" rel=\"stylesheet\"><span id=\"faq-tsm\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><br \/>\n<style>\n#upl-tsm-faq { font-family:'Inter',sans-serif; padding:80px 20px; max-width:900px; margin:0 auto; background:transparent!important; }\n#upl-tsm-faq *, #upl-tsm-faq *::before, #upl-tsm-faq *::after { margin:0!important; padding:0!important; box-sizing:border-box!important; }\n#upl-tsm-faq .upl-faq-header { text-align:center!important; margin-bottom:60px!important; }\n#upl-tsm-faq .upl-faq-title { font-family:'Poppins',sans-serif!important; font-size:clamp(32px,5vw,38px)!important; font-weight:700!important; color:#0f2736!important; margin-bottom:16px!important; line-height:1.2!important; }\n#upl-tsm-faq .upl-faq-subtitle { font-size:17px!important; color:#383838!important; max-width:700px!important; margin:0 auto!important; line-height:1.6!important; }\n#upl-tsm-faq .upl-faq-list { display:flex!important; flex-direction:column!important; gap:12px!important; }\n#upl-tsm-faq .upl-faq-item { background:#ffffff!important; border:1px solid #e5e7eb!important; border-radius:16px!important; overflow:hidden!important; transition:all 0.3s ease!important; }\n#upl-tsm-faq .upl-faq-item:hover { border-color:#3BB98B!important; box-shadow:0 4px 20px rgba(59,185,139,0.08)!important; }\n#upl-tsm-faq .upl-faq-item.active { border-color:#3BB98B!important; box-shadow:0 8px 30px rgba(59,185,139,0.12)!important; }\n#upl-tsm-faq .upl-faq-question { width:100%!important; display:flex!important; align-items:flex-start!important; justify-content:space-between!important; gap:20px!important; padding:24px 28px!important; background:transparent!important; border:none!important; cursor:pointer!important; text-align:left!important; }\n#upl-tsm-faq .upl-faq-question-content { display:flex!important; align-items:flex-start!important; gap:16px!important; flex:1!important; }\n#upl-tsm-faq .upl-faq-number { flex-shrink:0!important; padding:6px 12px!important; background:rgba(59,185,139,0.12)!important; color:#3BB98B!important; border-radius:20px!important; font-size:0.8rem!important; font-weight:600!important; }\n#upl-tsm-faq .upl-faq-item.active .upl-faq-number { background:rgba(59,185,139,0.2)!important; color:#2a9d6e!important; }\n#upl-tsm-faq .upl-faq-question-text { font-family:'Poppins',sans-serif!important; font-size:1.1rem!important; font-weight:600!important; color:#0f2736!important; line-height:1.4!important; padding-top:4px!important; }\n#upl-tsm-faq .upl-faq-icon { flex-shrink:0!important; width:36px!important; height:36px!important; background:#f4f5f7!important; border-radius:50%!important; display:flex!important; align-items:center!important; justify-content:center!important; transition:all 0.3s ease!important; margin-top:2px!important; }\n#upl-tsm-faq .upl-faq-icon svg { width:18px!important; height:18px!important; color:#64748b!important; transition:all 0.3s ease!important; }\n#upl-tsm-faq .upl-faq-item:hover .upl-faq-icon { background:rgba(59,185,139,0.1)!important; }\n#upl-tsm-faq .upl-faq-item:hover .upl-faq-icon svg { color:#3BB98B!important; }\n#upl-tsm-faq .upl-faq-item.active .upl-faq-icon { background:#3BB98B!important; transform:rotate(45deg)!important; }\n#upl-tsm-faq .upl-faq-item.active .upl-faq-icon svg { color:#ffffff!important; }\n#upl-tsm-faq .upl-faq-answer { max-height:0!important; overflow:hidden!important; transition:max-height 0.4s ease!important; }\n#upl-tsm-faq .upl-faq-item.active .upl-faq-answer { max-height:600px!important; }\n#upl-tsm-faq .upl-faq-answer-content { padding:0 28px 28px 76px!important; color:#475569!important; font-size:1rem!important; line-height:1.7!important; }\n#upl-tsm-faq .upl-faq-answer-content strong { color:#0f2736!important; font-weight:600!important; }\n#upl-tsm-faq .upl-faq-answer-content a { color:#3BB98B!important; text-decoration:underline!important; }\n#upl-tsm-faq .upl-faq-answer-content code { font-family:monospace!important; background:#f1f5f9!important; padding:2px 6px!important; border-radius:3px!important; font-size:0.85em!important; }\n#upl-tsm-faq .upl-faq-cta { margin-top:50px!important; display:flex!important; align-items:center!important; justify-content:space-between!important; gap:20px!important; padding:20px 28px!important; background:#ffffff!important; border:1px solid #e5e7eb!important; border-radius:12px!important; }\n#upl-tsm-faq .upl-faq-cta-text { color:#475569!important; font-size:1rem!important; }\n#upl-tsm-faq .upl-faq-cta-button { display:inline-flex!important; align-items:center!important; gap:10px!important; background:#DDDF4C!important; color:#0F2836!important; padding:13px 20px!important; border-radius:8px!important; text-decoration:none!important; font-weight:700!important; font-size:1rem!important; border:none!important; cursor:pointer!important; white-space:nowrap!important; }\n#upl-tsm-faq .upl-faq-cta-button:hover { transform:translateY(-2px)!important; }\n@media (max-width:768px) {\n  #upl-tsm-faq { padding:60px 16px!important; }\n  #upl-tsm-faq .upl-faq-answer-content { padding:0 20px 20px 20px!important; }\n  #upl-tsm-faq .upl-faq-question { padding:18px 20px!important; }\n  #upl-tsm-faq .upl-faq-cta { flex-direction:column!important; align-items:flex-start!important; }\n}\n\/* Defensive wpautop parade (additive only, does not touch template structure\/JS) *\/\n#upl-tsm-faq br { display: none !important; }<\/p>\n<p>#unipile-toc a{text-decoration:none!important;color:inherit!important}\n#unipile-toc a:hover{text-decoration:none!important}\n#unipile-tsm-botapi a{text-decoration:none!important;color:inherit!important}\n#unipile-tsm-botapi a:hover{text-decoration:none!important}\n#unipile-tsm-cta a{text-decoration:none!important;color:inherit!important}\n#unipile-tsm-cta a:hover{text-decoration:none!important}\n#unipile-tsm-groups a{text-decoration:none!important;color:inherit!important}\n#unipile-tsm-groups a:hover{text-decoration:none!important}\n#unipile-tsm-hero a{text-decoration:none!important;color:inherit!important}\n#unipile-tsm-hero a:hover{text-decoration:none!important}\n#unipile-tsm-limit a{text-decoration:none!important;color:inherit!important}\n#unipile-tsm-limit a:hover{text-decoration:none!important}\n#unipile-tsm-paths a{text-decoration:none!important;color:inherit!important}\n#unipile-tsm-paths a:hover{text-decoration:none!important}\n#unipile-tsm-practices a{text-decoration:none!important;color:inherit!important}\n#unipile-tsm-practices a:hover{text-decoration:none!important}\n#unipile-tsm-unipile a{text-decoration:none!important;color:inherit!important}\n#unipile-tsm-unipile a:hover{text-decoration:none!important}\n#upl-tsm-faq a{text-decoration:none!important;color:inherit!important}\n#upl-tsm-faq a:hover{text-decoration:none!important}<\/style>\n<section id=\"upl-tsm-faq\">\n<div class=\"upl-faq-header\">\n<h2 class=\"upl-faq-title\">Telegram API Send Message - FAQ<\/h2>\n<pee class=\"upl-faq-subtitle\">Common questions about sending Telegram messages with the Bot API and with linked accounts.<\/pee>\n  <\/div>\n<div class=\"upl-faq-list\">\n<div class=\"upl-faq-item active\">\n      <button class=\"upl-faq-question\" aria-expanded=\"true\"><\/p>\n<div class=\"upl-faq-question-content\">\n          <span class=\"upl-faq-number\">01<\/span><br \/>\n          <span class=\"upl-faq-question-text\">How do I send a Telegram message with the Bot API?<\/span>\n        <\/div>\n<div class=\"upl-faq-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg>\n        <\/div>\n<p>      <\/button><\/p>\n<div class=\"upl-faq-answer\">\n<div class=\"upl-faq-answer-content\"><pee>Call POST https:\/\/api.telegram.org\/bot&lt;TOKEN&gt;\/sendMessage with a chat_id and a text parameter. The token comes from BotFather. The Bot API is free, and the current version is 10.2, published July 14, 2026.<\/pee><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"upl-faq-item\">\n      <button class=\"upl-faq-question\" aria-expanded=\"false\"><\/p>\n<div class=\"upl-faq-question-content\">\n          <span class=\"upl-faq-number\">02<\/span><br \/>\n          <span class=\"upl-faq-question-text\">Why can my Telegram bot not message a user first?<\/span>\n        <\/div>\n<div class=\"upl-faq-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg>\n        <\/div>\n<p>      <\/button><\/p>\n<div class=\"upl-faq-answer\">\n<div class=\"upl-faq-answer-content\"><pee>Telegram requires the user to open the conversation with the bot before the bot can send anything. There is no endpoint that lets a bot start a chat with an arbitrary user. If your product needs to initiate contact, a bot is the wrong tool and you need a real user account.<\/pee><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"upl-faq-item\">\n      <button class=\"upl-faq-question\" aria-expanded=\"false\"><\/p>\n<div class=\"upl-faq-question-content\">\n          <span class=\"upl-faq-number\">03<\/span><br \/>\n          <span class=\"upl-faq-question-text\">What is the difference between startChat and sendMessage?<\/span>\n        <\/div>\n<div class=\"upl-faq-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg>\n        <\/div>\n<p>      <\/button><\/p>\n<div class=\"upl-faq-answer\">\n<div class=\"upl-faq-answer-content\"><pee>startChat opens a new conversation and sends the first message in one call. sendMessage posts into a conversation that already exists. Telegram allows only one individual chat per user, so calling startChat on someone you already have a chat with simply posts into that existing chat.<\/pee><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"upl-faq-item\">\n      <button class=\"upl-faq-question\" aria-expanded=\"false\"><\/p>\n<div class=\"upl-faq-question-content\">\n          <span class=\"upl-faq-number\">04<\/span><br \/>\n          <span class=\"upl-faq-question-text\">How do I send a message to a Telegram group?<\/span>\n        <\/div>\n<div class=\"upl-faq-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg>\n        <\/div>\n<p>      <\/button><\/p>\n<div class=\"upl-faq-answer\">\n<div class=\"upl-faq-answer-content\"><pee>With the Bot API, add the bot to the group and use the group chat_id. From a connected account, send to the group chat id like any other chat. Unipile also exposes participant listing, adding and removal on groups, but it does not support channels, communities or broadcasts.<\/pee><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"upl-faq-item\">\n      <button class=\"upl-faq-question\" aria-expanded=\"false\"><\/p>\n<div class=\"upl-faq-question-content\">\n          <span class=\"upl-faq-number\">05<\/span><br \/>\n          <span class=\"upl-faq-question-text\">Which parse_mode should I use for formatting?<\/span>\n        <\/div>\n<div class=\"upl-faq-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg>\n        <\/div>\n<p>      <\/button><\/p>\n<div class=\"upl-faq-answer\">\n<div class=\"upl-faq-answer-content\"><pee>Telegram supports MarkdownV2 and HTML. MarkdownV2 requires escaping a long list of reserved characters, so HTML is usually the safer choice when the message text is generated dynamically.<\/pee><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"upl-faq-item\">\n      <button class=\"upl-faq-question\" aria-expanded=\"false\"><\/p>\n<div class=\"upl-faq-question-content\">\n          <span class=\"upl-faq-number\">06<\/span><br \/>\n          <span class=\"upl-faq-question-text\">How do I avoid getting my Telegram account restricted?<\/span>\n        <\/div>\n<div class=\"upl-faq-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg>\n        <\/div>\n<p>      <\/button><\/p>\n<div class=\"upl-faq-answer\">\n<div class=\"upl-faq-answer-content\"><pee>Do not use a brand new account purely for automation, ramp volume up gradually, and never send faster than one message every 10 to 20 seconds. Telegram bans permanently for flooding, spamming and inflating counters, and starting many conversations that go unanswered is a strong spam signal.<\/pee><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"upl-faq-cta\">\n    <pee class=\"upl-faq-cta-text\">Still have questions? Our team is here to help.<\/pee>\n    <span class=\"upl-faq-cta-button\" onclick=\"if(window.$crisp){$crisp.push(['do','chat:open'])}\"><span>Talk to an expert<\/span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/span>\n  <\/div>\n<\/section>\n<p><script>\n(function(){\n  function initFaq(){\n    var faq=document.getElementById('upl-tsm-faq');\n    if(!faq)return;\n    faq.querySelectorAll('.upl-faq-question').forEach(function(btn){\n      btn.addEventListener('click',function(){\n        var item=btn.closest('.upl-faq-item');\n        var isActive=item.classList.contains('active');\n        faq.querySelectorAll('.upl-faq-item').forEach(function(i){i.classList.remove('active');i.querySelector('.upl-faq-question').setAttribute('aria-expanded','false');});\n        if(!isActive){item.classList.add('active');btn.setAttribute('aria-expanded','true');}\n      });\n    });\n    faq.addEventListener('click',function(e){\n      var el=e.target.closest('[data-upl-link]');\n      if(!el)return;\n      e.preventDefault();\n      window.open(el.getAttribute('data-upl-link'),el.getAttribute('data-upl-target')||'_blank');\n    });\n  }\n  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initFaq);}else{initFaq();}\n})();\n<\/script><\/p>\n<p>[\/et_pb_code]<br \/>\n[\/et_pb_column]<br \/>\n[\/et_pb_row]<br \/>\n[\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Linked Account Send from a real Telegram account with Unipile Unipile connects an actual Telegram user account, not a bot. Linking happens through Telegram&#8217;s own Devices feature, either a QR code scan or Hosted Auth with providers: &#8220;TELEGRAM&#8221;. Because the message comes from a real account, there is no bot-only &#8220;message me first&#8221; restriction to [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":278599,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[69],"tags":[],"post_folder":[],"class_list":["post-265405","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-api-guidelines"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Telegram API Send Message: sendMessage in curl, Python and Node - Unipile<\/title>\n<meta name=\"description\" content=\"Learn how to use Telegram API to send messages with our guide. Perfect for software publishers and developers.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.unipile.com\/de\/api-telegram-nachricht-senden-umfassender-leitfaden\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Telegram API Send Message: sendMessage in curl, Python and Node - Unipile\" \/>\n<meta property=\"og:description\" content=\"Learn how to use Telegram API to send messages with our guide. Perfect for software publishers and developers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.unipile.com\/de\/api-telegram-nachricht-senden-umfassender-leitfaden\/\" \/>\n<meta property=\"og:site_name\" content=\"Unipile\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/unipilefr\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-28T16:22:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-13T13:14:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/04\/tg-01-send-message.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Damien Girardeau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@UnipileAPI\" \/>\n<meta name=\"twitter:site\" content=\"@UnipileAPI\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Damien Girardeau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"1\u00a0Minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/\"},\"author\":{\"name\":\"Damien Girardeau\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/person\\\/a2ac44e22bdc27d497ce8b58716a673e\"},\"headline\":\"Telegram API Send Message: sendMessage in curl, Python and Node\",\"datePublished\":\"2024-10-28T16:22:58+00:00\",\"dateModified\":\"2026-08-13T13:14:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/\"},\"wordCount\":2290,\"publisher\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/tg-01-send-message.png\",\"articleSection\":[\"API Guidelines\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/\",\"name\":\"Telegram API Send Message: sendMessage in curl, Python and Node - Unipile\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/tg-01-send-message.png\",\"datePublished\":\"2024-10-28T16:22:58+00:00\",\"dateModified\":\"2026-08-13T13:14:59+00:00\",\"description\":\"Learn how to use Telegram API to send messages with our guide. Perfect for software publishers and developers.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/tg-01-send-message.png\",\"contentUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/tg-01-send-message.png\",\"width\":2400,\"height\":1600,\"caption\":\"Send Telegram messages from your SaaS via the Unipile unified API. Connect user accounts and manage conversations.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/telegram-api-send-message-a-comprehensive-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.unipile.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Telegram API Send Message: sendMessage in curl, Python and Node\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#website\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/\",\"name\":\"Unipile\",\"description\":\"Integrate Messaging &amp; Email, Connect with Ease via API\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.unipile.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#organization\",\"name\":\"Unipile\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/logo-unipile.png\",\"contentUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/logo-unipile.png\",\"width\":200,\"height\":49,\"caption\":\"Unipile\"},\"image\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/unipilefr\",\"https:\\\/\\\/x.com\\\/UnipileAPI\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/unipile\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/person\\\/a2ac44e22bdc27d497ce8b58716a673e\",\"name\":\"Damien Girardeau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g\",\"caption\":\"Damien Girardeau\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Telegram API Nachricht senden: sendMessage in curl, Python und Node - Unipile","description":"Lernen Sie mit unserem Leitfaden, wie Sie Telegram API zum Senden von Nachrichten verwenden. Perfekt f\u00fcr Software-Publisher und Entwickler.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.unipile.com\/de\/api-telegram-nachricht-senden-umfassender-leitfaden\/","og_locale":"de_DE","og_type":"article","og_title":"Telegram API Send Message: sendMessage in curl, Python and Node - Unipile","og_description":"Learn how to use Telegram API to send messages with our guide. Perfect for software publishers and developers.","og_url":"https:\/\/www.unipile.com\/de\/api-telegram-nachricht-senden-umfassender-leitfaden\/","og_site_name":"Unipile","article_publisher":"https:\/\/www.facebook.com\/unipilefr","article_published_time":"2024-10-28T16:22:58+00:00","article_modified_time":"2026-08-13T13:14:59+00:00","og_image":[{"width":2400,"height":1600,"url":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/04\/tg-01-send-message.png","type":"image\/png"}],"author":"Damien Girardeau","twitter_card":"summary_large_image","twitter_creator":"@UnipileAPI","twitter_site":"@UnipileAPI","twitter_misc":{"Verfasst von":"Damien Girardeau","Gesch\u00e4tzte Lesezeit":"1\u00a0Minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/#article","isPartOf":{"@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/"},"author":{"name":"Damien Girardeau","@id":"https:\/\/www.unipile.com\/#\/schema\/person\/a2ac44e22bdc27d497ce8b58716a673e"},"headline":"Telegram API Send Message: sendMessage in curl, Python and Node","datePublished":"2024-10-28T16:22:58+00:00","dateModified":"2026-08-13T13:14:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/"},"wordCount":2290,"publisher":{"@id":"https:\/\/www.unipile.com\/#organization"},"image":{"@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/04\/tg-01-send-message.png","articleSection":["API Guidelines"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/","url":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/","name":"Telegram API Nachricht senden: sendMessage in curl, Python und Node - Unipile","isPartOf":{"@id":"https:\/\/www.unipile.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/04\/tg-01-send-message.png","datePublished":"2024-10-28T16:22:58+00:00","dateModified":"2026-08-13T13:14:59+00:00","description":"Lernen Sie mit unserem Leitfaden, wie Sie Telegram API zum Senden von Nachrichten verwenden. Perfekt f\u00fcr Software-Publisher und Entwickler.","breadcrumb":{"@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/#primaryimage","url":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/04\/tg-01-send-message.png","contentUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/04\/tg-01-send-message.png","width":2400,"height":1600,"caption":"Send Telegram messages from your SaaS via the Unipile unified API. Connect user accounts and manage conversations."},{"@type":"BreadcrumbList","@id":"https:\/\/www.unipile.com\/telegram-api-send-message-a-comprehensive-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.unipile.com\/"},{"@type":"ListItem","position":2,"name":"Telegram API Send Message: sendMessage in curl, Python and Node"}]},{"@type":"WebSite","@id":"https:\/\/www.unipile.com\/#website","url":"https:\/\/www.unipile.com\/","name":"Unipile","description":"Integration von Messaging und E-Mail, einfache Verbindung \u00fcber API","publisher":{"@id":"https:\/\/www.unipile.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.unipile.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.unipile.com\/#organization","name":"Unipile","url":"https:\/\/www.unipile.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.unipile.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.unipile.com\/wp-content\/uploads\/2021\/05\/logo-unipile.png","contentUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2021\/05\/logo-unipile.png","width":200,"height":49,"caption":"Unipile"},"image":{"@id":"https:\/\/www.unipile.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/unipilefr","https:\/\/x.com\/UnipileAPI","https:\/\/www.linkedin.com\/company\/unipile\/"]},{"@type":"Person","@id":"https:\/\/www.unipile.com\/#\/schema\/person\/a2ac44e22bdc27d497ce8b58716a673e","name":"Damien Girardeau","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g","caption":"Damien Girardeau"}}]}},"_links":{"self":[{"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/posts\/265405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/comments?post=265405"}],"version-history":[{"count":33,"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/posts\/265405\/revisions"}],"predecessor-version":[{"id":279772,"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/posts\/265405\/revisions\/279772"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/media\/278599"}],"wp:attachment":[{"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/media?parent=265405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/categories?post=265405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/tags?post=265405"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/www.unipile.com\/de\/wp-json\/wp\/v2\/post_folder?post=265405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}