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.

