A free tool from Angelia · Updated 27 October 2026

# Telegram bot token and chat id checker

Paste the token @BotFather gave you. The page asks Telegram who the bot is, and lists the chats that wrote to it in the last 24 hours, with their chat ids. Those ids are what a route in Angelia needs.

**Your token stays in this browser.** The page sends it only to `api.telegram.org`, which is how every Telegram bot talks to Telegram. There is no server of ours in between, no analytics on this page, and nothing is stored: reload the page and the token is gone. The page's security policy lets it connect to `api.telegram.org` and nowhere else.

Bot token

From @BotFather: digits, a colon, then about 35 letters, digits, `-` and `_`. Paste the token; do not type it.

Show the token

**Stop Angelia, or any other program that polls this bot, first.** Telegram gives a bot's updates to one reader at a time. A check interrupts the other program's open request: that program gets `409 Conflict`. Angelia retries by itself; another program may not.

If Angelia already runs with this token, you do not need this page: a chat that is not in `routing.yaml` gets no answer, and `~/.angelia/daemon.log` gets one line with its chat id.

## What the check does

1. `getMe`: is the token valid, and which bot is it. A wrong or revoked token answers `401 Unauthorized`.
2. `getWebhookInfo`: does the bot send its updates to a webhook.
3. `getUpdates`: the updates Telegram holds for the bot, up to 100. The page reads each update's chat. It sends no `offset`, so it marks nothing as read; another program still gets the same updates.

All three only read; nothing on the bot changes. One side effect: if another program is polling the bot, the check ends that program's open request (see below).

## Find a chat id

- **Your direct chat:** open the bot in Telegram, press Start or send any message, then press Check. A direct chat's id is your own user id, a positive number.
- **A group:** add the bot to the group, then press Check. Being added is an update every bot gets, and it carries the group's id. Or send `/start@your_bot` in the group. A group's id is negative; most start with `-100`.
- **Privacy mode** is on for every new bot. In a group, the bot then gets only commands sent to it, replies to its own messages and service messages, such as being added. It does not get plain messages, and not `@your_bot` mentions either.
- **For Angelia in a group:** Angelia answers mentions, so make the bot an admin of that group. An admin bot gets every message. Or turn privacy mode off in @BotFather (`/setprivacy`), then add the bot to the group again.
- **Nothing shows:** Telegram keeps updates for at most 24 hours, and only until a program that polls the bot takes them.

## When getUpdates fails

Telegram gives a bot's updates to one reader at a time. `getUpdates` answers `409 Conflict` in two cases.

- **The bot has a webhook.** Telegram pushes the updates to that address instead, and says: `Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first`. The page sees the webhook in step 2 and stops there. Angelia polls: when it starts, it removes the webhook first, so a service that gets this bot's updates by webhook stops getting them. Give Angelia a bot of its own.
- **Another program is polling.** Angelia itself is one: while it runs with this token, it keeps a `getUpdates` request open. In practice, a new request ends the older one, so a check from this page usually wins, and the other program gets `Conflict: terminated by other getUpdates request; make sure that only one bot instance is running`. Angelia retries by itself: after 5 seconds, then twice as long each time, up to a minute. The pauses start again from 5 seconds once polling has held for 5 minutes. `angelia status` shows `telegram: conflict` until it polls again. Another bot program may not retry, so stop it before you check. If this page gets the error, the other program asked last.

## Use the ids with Angelia

[Angelia](https://useangelia.com/) routes each Telegram chat to a coding agent CLI on your Mac. `angelia init` pairs your first chat for you. To add a chat by hand, put a route in `~/.angelia/workspace/routing.yaml`:

```
routes:
  - { platform: telegram, chat: 111111111,      profile: coding }
  - { platform: telegram, chat: -1001234567890, profile: house, owners: [111111111] }

telegram: { token_env: TELEGRAM_BOT_TOKEN }
```

The token goes in `~/.angelia/env` as `TELEGRAM_BOT_TOKEN=…`, never in the table. In a group, `owners` lists the user ids that may talk to the agent and approve what it runs. Put only your own there. Your user id is the chat id of your direct chat with the bot. Then run `angelia check-config` and send `/restart` in a chat you own.

## Sources

- [Telegram Bot API](https://core.telegram.org/bots/api#getme): `getMe`, `getWebhookInfo`, `getUpdates`.
- [Privacy mode](https://core.telegram.org/bots/features#privacy-mode): what a bot sees in a group.

## More tools

- [Claude Code permissions: settings.json allow, ask, deny](https://useangelia.com/tools/claude-code-permissions/)
- [Docs](https://useangelia.com/docs/)
- [Guides](https://useangelia.com/guides/)

## Try Angelia

```
curl -fsSL https://useangelia.com/install | sh
```

It checks the release's signature, then a wizard pairs your first chat. Free and open source (MIT). [How it works](https://useangelia.com/) · [Security model](https://useangelia.com/docs/security/) · [GitHub](https://github.com/korengast/angelia)

Angelia · open source, MIT [Docs](https://useangelia.com/docs/) · [info@useangelia.com](mailto:info@useangelia.com) · [GitHub](https://github.com/korengast/angelia)
