Telegram-compatible getUpdates endpoint for pull-based integrations
Long polling provides a pull-based alternative to push proxy. External bots/backends can call getUpdates via BotMux instead of Telegram — no code changes needed, just change the API base URL.
Setup
Enable the Long Poll toggle in bot settings
In your backend, change the Telegram API base URL:
# Before (direct to Telegram)https://api.telegram.org/bot{TOKEN}/getUpdates# After (via BotMux)http://localhost:8080/tgapi/bot{TOKEN}/getUpdates
That’s it — no other code changes needed.
How It Works
Telegram ──getUpdates──> BotMux (polls Telegram) │ ├── saves to UpdateQueue (ring buffer, 1000 updates) ├── Management: tracks chats/messages in DB │Backend ──getUpdates──> /tgapi/ (long poll) ──> returns from UpdateQueueBackend ──sendMessage──> /tgapi/ (proxy) ──> Telegram API
Parameters
Response format is identical to Telegram: {"ok": true, "result": [...]}.
Parameter
Description
offset
Identifier of the first update to return
limit
Maximum number of updates (max 100)
timeout
Long polling timeout in seconds (max 60)
Features
Telegram-compatible — same request/response format as Telegram API
Multiple clients can poll the same bot simultaneously
Works alongside push proxy — both can be active for the same bot
In-memory ring buffer — 1000 updates per bot with waiter notification
Authenticated API also available: GET /api/updates/poll?bot_id=X (Bearer or session)
If your backend also sends messages, point those at /tgapi/ too to capture outgoing messages in BotMux.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"BotMux","colors":{"primary":"#2563EB","light":"#60A5FA","dark":"#1D4ED8"},"logo":{"light":"https://mintcdn.com/botmux/9WhspsFNgwz08EH-/docs/logo/light.svg?fit=max\u0026auto=format\u0026n=9WhspsFNgwz08EH-\u0026q=85\u0026s=c5e02d831e50530eefc11d38602ec257","dark":"https://mintcdn.com/botmux/9WhspsFNgwz08EH-/docs/logo/dark.svg?fit=max\u0026auto=format\u0026n=9WhspsFNgwz08EH-\u0026q=85\u0026s=ca5630149012af18662d736ddcf064f5"},"favicon":"https://mintcdn.com/botmux/9WhspsFNgwz08EH-/docs/favicon.svg?fit=max\u0026auto=format\u0026n=9WhspsFNgwz08EH-\u0026q=85\u0026s=5f7a0653284f7f14f04e8833a6be6f9c","api":{},"navbar":{"links":[{"href":"https://botmux.exe.xyz","label":"Demo"}],"primary":{"type":"button","label":"GitHub","href":"https://github.com/skrashevich/botmux"}},"footer":{"socials":{"github":"https://github.com/skrashevich/botmux"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":"docs/en"},{"language":"ru","href":"docs/ru"},{"language":"zh","href":"docs/zh"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"botmux","hasAudioNarration":false,"actualSubdomain":"botmux","customDomains":["docs.botmux.dev"],"gitSource":{"type":"github","owner":"skrashevich","repo":"botmux","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6acea7ca2936335b03160dee","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"en","tag":"Documentation","count":36},{"language":"ru","tag":"Документация","count":36},{"language":"zh","tag":"文档","count":36},{"language":"en","tag":"API Reference","count":35},{"language":"ru","tag":"Справочник API","count":35},{"language":"zh","tag":"API 参考","count":35},{"language":"en","tag":"Features","count":10},{"language":"ru","tag":"Функции","count":10},{"language":"zh","tag":"功能","count":10},{"language":"en","tag":"Bots","count":7},{"language":"ru","tag":"Боты","count":7},{"language":"zh","tag":"机器人","count":7},{"language":"zh","tag":"路由","count":7},{"language":"en","tag":"Messages","count":6},{"language":"ru","tag":"Сообщения","count":6},{"language":"zh","tag":"消息","count":6},{"language":"en","tag":"Admins","count":4},{"language":"en","tag":"Routes","count":4},{"language":"en","tag":"Tags","count":4},{"language":"en","tag":"Configuration","count":4},{"language":"en","tag":"Getting Started","count":4},{"language":"ru","tag":"Администраторы","count":4},{"language":"ru","tag":"Маршруты","count":4},{"language":"ru","tag":"Теги","count":4},{"language":"ru","tag":"Конфигурация","count":4},{"language":"ru","tag":"Начало работы","count":4},{"language":"zh","tag":"管理员","count":4},{"language":"zh","tag":"标签","count":4},{"language":"zh","tag":"配置","count":4},{"language":"zh","tag":"入门","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"docs/en/features/long-polling","slug":"/docs/en/features/long-polling","pageMetadata":{"title":"Long Polling","description":"Telegram-compatible getUpdates endpoint for pull-based integrations","href":"/docs/en/features/long-polling"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Telegram-compatible getUpdates endpoint for pull-based integrations\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Long polling provides a pull-based alternative to push proxy. External bots/backends can call `,_jsx(_components.code,{children:`getUpdates`}),` via BotMux instead of Telegram — no code changes needed, just change the API base URL.`]}),`\n`,_jsx(Heading,{level:`2`,id:`setup`,children:`Setup`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Enable the `,_jsx(_components.strong,{children:`Long Poll`}),` toggle in bot settings`]}),`\n`,_jsx(_components.li,{children:`In your backend, change the Telegram API base URL:`}),`\n`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`# Before (direct to Telegram)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://api.telegram.org/bot{TOKEN}/getUpdates`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`# After (via BotMux)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`http://localhost:8080/tgapi/bot{TOKEN}/getUpdates`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`That’s it — no other code changes needed.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How It Works`}),`\n`,_jsx(CodeBlock,{numberOfLines:`8`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Telegram ──getUpdates──> BotMux (polls Telegram)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` │`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ├── saves to UpdateQueue (ring buffer, 1000 updates)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ├── Management: tracks chats/messages in DB`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` │`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Backend ──getUpdates──> /tgapi/ (long poll) ──> returns from UpdateQueue`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Backend ──sendMessage──> /tgapi/ (proxy) ──> Telegram API`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`parameters`,children:`Parameters`}),`\n`,_jsxs(_components.p,{children:[`Response format is identical to Telegram: `,_jsx(_components.code,{children:`{\"ok\": true, \"result\": [...]}`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Parameter`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`offset`})}),_jsx(_components.td,{children:`Identifier of the first update to return`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`limit`})}),_jsx(_components.td,{children:`Maximum number of updates (max 100)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`timeout`})}),_jsx(_components.td,{children:`Long polling timeout in seconds (max 60)`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`features`,children:`Features`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Telegram-compatible`}),` — same request/response format as Telegram API`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Multiple clients`}),` can poll the same bot simultaneously`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Works alongside push proxy`}),` — both can be active for the same bot`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`In-memory ring buffer`}),` — 1000 updates per bot with waiter notification`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Authenticated API`}),` also available: `,_jsx(_components.code,{children:`GET /api/updates/poll?bot_id=X`}),` (Bearer or session)`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If your backend also sends messages, point those at `,_jsx(_components.code,{children:`/tgapi/`}),` too to capture outgoing messages in BotMux.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Long Polling","description":"Telegram-compatible getUpdates endpoint for pull-based integrations","href":"/docs/en/features/long-polling"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Setup","slug":"setup","depth":2,"children":[]},{"title":"How It Works","slug":"how-it-works","depth":2,"children":[]},{"title":"Parameters","slug":"parameters","depth":2,"children":[]},{"title":"Features","slug":"features","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/botmux/4aec683526972be5/internal/server/templates/assets/telegram-ui.js"],"subdomain":"botmux","siteName":"BotMux","title":"Long Polling - BotMux","contextualStarterQuestions":[{"_id":"69c1838cc6c3dabe19e30c21","deploymentId":"69c0760ebfae8e8141dfcb88","questionText":"Can I use it with push proxy?","status":"active","generatedBy":"contextual","path":"docs/en/features/long-polling","createdAt":"2026-03-23T18:16:44.940Z","updatedAt":"2026-03-23T18:16:44.940Z","__v":0},{"_id":"69c1838cc6c3dabe19e30c20","deploymentId":"69c0760ebfae8e8141dfcb88","questionText":"What's the update queue size limit?","status":"active","generatedBy":"contextual","path":"docs/en/features/long-polling","createdAt":"2026-03-23T18:16:44.940Z","updatedAt":"2026-03-23T18:16:44.940Z","__v":0},{"_id":"69c1838cc6c3dabe19e30c1f","deploymentId":"69c0760ebfae8e8141dfcb88","questionText":"How do I enable long polling?","status":"active","generatedBy":"contextual","path":"docs/en/features/long-polling","createdAt":"2026-03-23T18:16:44.940Z","updatedAt":"2026-03-23T18:16:44.940Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/docs/en/features/long-polling","matchLevel":0},"ru":{"href":"/docs/ru/features/long-polling","matchLevel":1},"zh":{"href":"/docs/zh/features/long-polling","matchLevel":1}}},"lastModified":"2026-03-23T18:16:23.353Z","originalFileLocation":"docs/en/features/long-polling.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Telegram-compatible getUpdates endpoint for pull-based integrations\">\u003cmeta data-mint-head name=\"application-name\" content=\"BotMux\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Long Polling - BotMux\">\u003cmeta data-mint-head property=\"og:description\" content=\"Telegram-compatible getUpdates endpoint for pull-based integrations\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"BotMux\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.botmux.dev/docs/en/features/long-polling\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://botmux.mintlify.site/_mintlify/api/og/v2?division=Features\u0026amp;title=Long+Polling\u0026amp;description=Telegram-compatible+getUpdates+endpoint+for+pull-based+integrations\u0026amp;theme=96cbeb44b3fd6eaa66365d4b\u0026amp;signature=43c0d5a60094c28c4d5f4b8878fd4523e23ea9ac0f321fd639adb1f95af22a4b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Long Polling - BotMux\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Telegram-compatible getUpdates endpoint for pull-based integrations\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://botmux.mintlify.site/_mintlify/api/og/v2?division=Features\u0026amp;title=Long+Polling\u0026amp;description=Telegram-compatible+getUpdates+endpoint+for+pull-based+integrations\u0026amp;theme=96cbeb44b3fd6eaa66365d4b\u0026amp;signature=43c0d5a60094c28c4d5f4b8878fd4523e23ea9ac0f321fd639adb1f95af22a4b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/botmux/fr5g8gAVOWdg5DL2/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"BotMux\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563EB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.botmux.dev/docs/en/features/long-polling\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/en/features/long-polling.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.botmux.dev/docs/en/features/long-polling\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://docs.botmux.dev/docs/ru/features/long-polling\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.botmux.dev/docs/zh/features/long-polling\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.botmux.dev/docs/en/features/long-polling\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.botmux.dev/#organization\",\"name\":\"BotMux\",\"url\":\"https://docs.botmux.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/botmux/9WhspsFNgwz08EH-/docs/logo/light.svg?fit=max\u0026auto=format\u0026n=9WhspsFNgwz08EH-\u0026q=85\u0026s=c5e02d831e50530eefc11d38602ec257\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.botmux.dev#website\",\"name\":\"BotMux\",\"url\":\"https://docs.botmux.dev\",\"publisher\":{\"@id\":\"https://docs.botmux.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.botmux.dev/docs/en/features/long-polling#webpage\",\"url\":\"https://docs.botmux.dev/docs/en/features/long-polling\",\"name\":\"Long Polling\",\"description\":\"Telegram-compatible getUpdates endpoint for pull-based integrations\",\"dateModified\":\"2026-03-23T18:16:23.353Z\",\"isPartOf\":{\"@id\":\"https://docs.botmux.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.botmux.dev/docs/en/features/long-polling#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.botmux.dev/docs/en/features/long-polling#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://docs.botmux.dev/docs/en/features/reverse-proxy\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Long Polling\",\"item\":\"https://docs.botmux.dev/docs/en/features/long-polling\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.botmux.dev/docs/en/features/long-polling#article\",\"headline\":\"Long Polling\",\"name\":\"Long Polling\",\"description\":\"Telegram-compatible getUpdates endpoint for pull-based integrations\",\"url\":\"https://docs.botmux.dev/docs/en/features/long-polling\",\"mainEntityOfPage\":{\"@id\":\"https://docs.botmux.dev/docs/en/features/long-polling#webpage\"},\"dateModified\":\"2026-03-23T18:16:23.353Z\",\"publisher\":{\"@id\":\"https://docs.botmux.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.botmux.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"BotMux\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"BotMux\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/en/features/long-polling.md","siteName":"BotMux","nav":{"global":null,"languages":[{"language":"en","dropdowns":[{"dropdown":"Documentation","icon":"book","description":"Learn how to use BotMux","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/docs/en"},{"title":"Quick Start","href":"/docs/en/quickstart"},{"title":"Installation","href":"/docs/en/installation"},{"title":"Docker","href":"/docs/en/docker"}]},{"group":"Core Concepts","pages":[{"title":"How It Works","href":"/docs/en/concepts/how-it-works"},{"title":"Multi-Bot Management","href":"/docs/en/concepts/multi-bot"},{"title":"Bot Setup","href":"/docs/en/concepts/bot-setup"}]},{"group":"Features","pages":[{"title":"Reverse Proxy","description":"Forward Telegram updates to legacy webhook backends","href":"/docs/en/features/reverse-proxy"},{"title":"Long Polling","href":"/docs/en/features/long-polling"},{"title":"API Proxy","description":"Transparent Telegram API proxy that captures outgoing bot messages","href":"/docs/en/features/api-proxy"},{"title":"Message Monitoring","href":"/docs/en/features/message-monitoring"},{"title":"Analytics","href":"/docs/en/features/analytics"},{"title":"Admin Actions","href":"/docs/en/features/admin-actions"},{"title":"User Tags","href":"/docs/en/features/user-tags"},{"title":"Audit Log","href":"/docs/en/features/audit-log"},{"title":"Media Support","href":"/docs/en/features/media-support"},{"title":"Internationalization","href":"/docs/en/features/i18n"}]},{"group":"Routing","pages":[{"title":"Inter-Bot Routing","href":"/docs/en/routing/inter-bot-routing"},{"title":"LLM Routing","href":"/docs/en/routing/llm-routing"},{"title":"Source-NAT","href":"/docs/en/routing/source-nat"}]},{"group":"Bridges","pages":[{"title":"Protocol Bridges","href":"/docs/en/bridges/overview"},{"title":"Slack Bridge","href":"/docs/en/bridges/slack"},{"title":"Webhook Bridge","href":"/docs/en/bridges/webhook"}]},{"group":"Authentication","pages":[{"title":"Authentication","href":"/docs/en/auth/overview"},{"title":"Users \u0026 Roles","href":"/docs/en/auth/users-and-roles"},{"title":"API Keys","href":"/docs/en/auth/api-keys"}]},{"group":"Configuration","pages":[{"title":"CLI Flags","href":"/docs/en/configuration/cli-flags"},{"title":"Environment Variables","href":"/docs/en/configuration/environment-variables"},{"title":"Custom Telegram API","href":"/docs/en/configuration/custom-telegram-api"},{"title":"Demo Mode","href":"/docs/en/configuration/demo-mode"}]},{"group":"Architecture","pages":[{"title":"Architecture","href":"/docs/en/architecture/overview"},{"title":"Data Flow","href":"/docs/en/architecture/data-flow"},{"title":"Storage","href":"/docs/en/architecture/storage"}]},{"group":"Deployment","pages":[{"title":"Requirements","href":"/docs/en/deployment/requirements"},{"title":"Resource Requirements","href":"/docs/en/deployment/resource-requirements"},{"title":"Security","href":"/docs/en/deployment/security"}]}]},{"dropdown":"API Reference","icon":"rectangle-terminal","description":"REST API endpoints","groups":[{"group":"Bots","pages":[{"title":"List Bots","openapi":"GET /api/bots","href":"/docs/en/api-reference/bots/list"},{"title":"Add Bot","openapi":"POST /api/bots/add","href":"/docs/en/api-reference/bots/add"},{"title":"Update Bot","openapi":"POST /api/bots/update","href":"/docs/en/api-reference/bots/update"},{"title":"Delete Bot","openapi":"POST /api/bots/delete","href":"/docs/en/api-reference/bots/delete"},{"title":"Toggle bot disabled","openapi":"POST /api/bots/toggle-disabled","href":"/docs/en/api-reference/bots/toggle-disabled"},{"title":"Validate Token","openapi":"GET /api/bots/validate","href":"/docs/en/api-reference/bots/validate"},{"title":"Check Health","openapi":"GET /api/bots/health","href":"/docs/en/api-reference/bots/health"}]},{"group":"Chats","pages":[{"title":"List Chats","openapi":"GET /api/chats","href":"/docs/en/api-reference/chats/list"},{"title":"Refresh Chat","openapi":"GET /api/chats/refresh","href":"/docs/en/api-reference/chats/refresh"},{"title":"Delete Chat","openapi":"POST /api/chats/delete","href":"/docs/en/api-reference/chats/delete"}]},{"group":"Messages","pages":[{"title":"List Messages","openapi":"GET /api/messages","href":"/docs/en/api-reference/messages/list"},{"title":"Search Messages","openapi":"GET /api/messages/search","href":"/docs/en/api-reference/messages/search"},{"title":"Send Message","openapi":"POST /api/messages/send","href":"/docs/en/api-reference/messages/send"},{"title":"Pin Message","openapi":"POST /api/messages/pin","href":"/docs/en/api-reference/messages/pin"},{"title":"Unpin Message","openapi":"POST /api/messages/unpin","href":"/docs/en/api-reference/messages/unpin"},{"title":"Delete Message","openapi":"POST /api/messages/delete","href":"/docs/en/api-reference/messages/delete"}]},{"group":"Users","pages":[{"title":"List Users","openapi":"GET /api/users/list","href":"/docs/en/api-reference/users/list"},{"title":"Ban User","openapi":"POST /api/users/ban","href":"/docs/en/api-reference/users/ban"},{"title":"Unban User","openapi":"POST /api/users/unban","href":"/docs/en/api-reference/users/unban"}]},{"group":"Admins","pages":[{"title":"List Admins","openapi":"GET /api/admins","href":"/docs/en/api-reference/admins/list"},{"title":"Promote User","openapi":"POST /api/admins/promote","href":"/docs/en/api-reference/admins/promote"},{"title":"Demote Admin","openapi":"POST /api/admins/demote","href":"/docs/en/api-reference/admins/demote"},{"title":"Set Admin Title","openapi":"POST /api/admins/title","href":"/docs/en/api-reference/admins/title"}]},{"group":"Tags","pages":[{"title":"List Tags","openapi":"GET /api/tags","href":"/docs/en/api-reference/tags/list"},{"title":"User Tags","openapi":"GET /api/tags/user","href":"/docs/en/api-reference/tags/user-tags"},{"title":"Add Tag","openapi":"POST /api/tags/add","href":"/docs/en/api-reference/tags/add"},{"title":"Remove Tag","openapi":"POST /api/tags/remove","href":"/docs/en/api-reference/tags/remove"}]},{"group":"Routes","pages":[{"title":"List Routes","openapi":"GET /api/routes","href":"/docs/en/api-reference/routes/list"},{"title":"Add Route","openapi":"POST /api/routes/add","href":"/docs/en/api-reference/routes/add"},{"title":"Update Route","openapi":"POST /api/routes/update","href":"/docs/en/api-reference/routes/update"},{"title":"Delete Route","openapi":"POST /api/routes/delete","href":"/docs/en/api-reference/routes/delete"}]},{"group":"Analytics \u0026 Audit","pages":[{"title":"Chat Statistics","openapi":"GET /api/stats","href":"/docs/en/api-reference/analytics/stats"},{"title":"Audit Log","openapi":"GET /api/adminlog","href":"/docs/en/api-reference/audit-log/list"}]},{"group":"Long Polling \u0026 Proxy","pages":[{"title":"Poll Updates","openapi":"GET /api/updates/poll","href":"/docs/en/api-reference/long-polling/poll"},{"title":"Telegram API Proxy","href":"/docs/en/api-reference/telegram-proxy/proxy"}]}]}]},{"language":"ru","pages":[{"title":"ru","href":"/docs/ru/features/long-polling"}]},{"language":"zh","pages":[{"title":"zh","href":"/docs/zh/features/long-polling"}]}]},"basePath":"","title":"Long Polling - BotMux","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":[],"chunks":[]}