Webhook tester for Telegram bots
Test your bot's webhook handler with realistic Update payloads
before going live. Pick a scenario, customise the fields, and copy the
curl or Python command — or fire the request from your browser if your
server accepts CORS.
Why this matters
Telegram's setWebhook is fire-and-forget. If your handler
crashes on a specific update shape, you'll find out when a user reports
that the bot stopped responding to button taps. This tool lets you
replay every Update shape against your dev server before deploying — no
user required.
Update types covered
message | Plain text message sent in DM. |
callback_query | Inline-button tap. Your handler must respond with answerCallbackQuery. |
inline_query | User typed @yourbot something in any chat. Reply with answerInlineQuery. |
edited_message | User edited a message in DM. Common gotcha — handlers built for message miss this. |
channel_post | New post in a channel where the bot is admin. |
my_chat_member | Bot's permissions changed (added, removed, demoted). Your handler should record the new state. |
chat_join_request | User requested to join a chat with approval enabled. |
pre_checkout_query | User confirmed payment, you have 10 seconds to reply. |
About browser fetch (CORS)
Most webhook endpoints don't allow cross-origin requests from a browser — they only expect calls from Telegram's IPs. If "Fire request" fails with a CORS or network error, use the curl or Python snippets from your local machine or dev server instead.
Secret token verification
If you set a secret token when calling setWebhook, Telegram
adds the header X-Telegram-Bot-Api-Secret-Token to every
request. The generated curl includes a placeholder for this — fill it in
to test the secret-verification path of your handler.