Skip to main content
BotMux provides a Telegram API proxy at /tgapi/ that transparently forwards requests to api.telegram.org and captures outgoing messages. It also intercepts several management methods so your backend can use the standard Telegram Bot API without conflicting with BotMux’s internal state.

Why use the API proxy?

Telegram’s getUpdates only returns incoming messages — messages sent by the bot itself are not included. The API proxy solves this by intercepting send methods and saving the sent message to the database.

Setup

Change your backend’s API base URL:
# Before (direct)
https://api.telegram.org/bot{TOKEN}/sendMessage

# After (via BotMux proxy)
http://localhost:8080/tgapi/bot{TOKEN}/sendMessage
The proxy forwards all requests to Telegram and returns responses unchanged, except for intercepted methods that BotMux handles internally.

File download proxy

BotMux also provides a file download endpoint that makes it compatible as a drop-in base_file_url for Telegram bot libraries:
# Telegram default
https://api.telegram.org/file/bot{TOKEN}/{file_path}

# Via BotMux proxy
http://localhost:8080/tgapi/file/bot{TOKEN}/{file_path}
This endpoint downloads the file from Telegram and streams it to the client. WebP files (stickers) are automatically converted to PNG for browser compatibility.

Captured methods

MethodDescription
sendMessageText messages
sendPhotoPhotos
sendAudioAudio files
sendDocumentDocuments
sendVideoVideos
sendAnimationGIFs/animations
sendVoiceVoice messages
sendVideoNoteVideo notes
sendStickerStickers
sendLocationLocations
sendVenueVenues
sendContactContacts
sendPollPolls
sendDiceDice
forwardMessageForwarded messages
copyMessageCopied messages
editMessageTextEdited messages
The API Proxy URL is displayed in the bot detail view when proxy mode is enabled (click to copy).

Intercepted methods

The following Telegram Bot API methods are intercepted by the proxy and handled internally by BotMux instead of being forwarded to Telegram:
MethodBehavior
setWebhookRegisters the webhook URL as the bot’s backend URL in BotMux and enables proxy mode. If the bot token is not yet registered, BotMux auto-registers it via getMe. Supports url and drop_pending_updates parameters.
deleteWebhookClears the backend URL and disables proxy mode for the bot. Supports drop_pending_updates.
getWebhookInfoReturns BotMux’s internal webhook state including the configured backend URL and pending update count.
getUpdatesWhen long polling is enabled, returns updates from BotMux’s internal queue instead of polling Telegram directly. When the bot is managed but long polling is not enabled, returns an empty result to prevent conflict errors.
logOutReturns success without forwarding to Telegram. Forwarding would disable the token for 10 minutes, breaking BotMux’s polling.
closeReturns success without forwarding to Telegram. Forwarding would shut down the bot instance on Telegram’s side.
The setWebhook interception enables zero-configuration migration: point your existing bot backend at BotMux’s API proxy URL, and BotMux will automatically register the bot and start forwarding updates to your backend.