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

messagePlain text message sent in DM.
callback_queryInline-button tap. Your handler must respond with answerCallbackQuery.
inline_queryUser typed @yourbot something in any chat. Reply with answerInlineQuery.
edited_messageUser edited a message in DM. Common gotcha — handlers built for message miss this.
channel_postNew post in a channel where the bot is admin.
my_chat_memberBot's permissions changed (added, removed, demoted). Your handler should record the new state.
chat_join_requestUser requested to join a chat with approval enabled.
pre_checkout_queryUser 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.

Related tools