---
title: "Telegram integration"
description: "Mention alerts and digests, posted by a Telegram bot to you or your team's group."
canonical: https://docs.rumoro.dev/alerts/telegram
markdown: https://docs.rumoro.dev/alerts/telegram.mdx
---

# Telegram integration

Mention alerts and digests, posted by a Telegram bot to you or your team's group.

**@RumoroAlertsBot** sends instant alerts and digests to a chat with you or to a team group. Connecting takes one tap, without tokens or chat ids.

## Connect from the dashboard

Go to **Settings › Integrations › Telegram**.

1. Click **Connect Telegram** to get a one-time link. It is valid for 15 minutes.
2. Click **Open in Telegram** and press **Start**, or choose **Add to a group**. The chat shows up in the dashboard within seconds.
3. In **Alerts**, pick the rules that should post to this chat.

If `t.me` links don't open, message the bot `/start <code>`, using the code shown next to the buttons.

One chat can serve many rules. Removing a chat detaches it from all of them. Groups that turn into supergroups keep working. The bot only posts to chats that are connected.

## What you see in Telegram

```
🐞 Bug report about driftwood
by nadia_dev
The user reports that flags stop updating after the app goes to the background.
> The text of the post, up to 600 characters.
Open on Reddit · See it in the feed
```

The first line says what kind of mention it is, as in [Slack](/alerts/slack). Then come the author, the classifier's note and the post.

A digest is one message. It shows how many mentions came in and how many are relevant, the change against the previous period, the platforms and keywords, then up to 5 mentions under "Needs you today" and 5 under "Also worth a look", and a link to the feed. If it would be longer than Telegram's limit of 4,096 characters, the last sections are left out.

## Delivery

Only scored mentions that pass the filter are sent, once per post per chat. When Telegram asks the bot to slow down, Rumoro waits and tries again, up to 5 times. For a very busy keyword, a digest works better. A chat that blocked or removed the bot fails right away and shows up in the delivery history.

## Connect through the API

```bash
# 1. Create a connect link.
curl -X POST https://api.rumoro.dev/v1/telegram/links \
  -H "Authorization: Bearer $RUMORO_API_KEY"
# { "url": "https://t.me/RumoroAlertsBot?start=...", "groupUrl": "https://t.me/RumoroAlertsBot?startgroup=...",
#   "code": "...", "expiresAt": 1759600000000 }

# 2. After Start, the chat is a channel of kind "telegram" (see GET /v1/channels). Point a rule at it.
curl -X POST https://api.rumoro.dev/v1/alerts \
  -H "Authorization: Bearer $RUMORO_API_KEY" -H "Content-Type: application/json" \
  -d '{ "name": "Team chat", "mode": "instant", "filter": { "minRelevance": 60 }, "channelIds": ["dest_..."] }'
```

`GET /v1/telegram/status` returns `{ "configured": true, "botUsername": "RumoroAlertsBot" }`. `DELETE /v1/channels/{id}` disconnects a chat. The Telegram connection endpoints aren't in the API reference.

## Errors

| Code | Status | When |
| --- | --- | --- |
| `telegram_not_configured` | 503 | Telegram isn't available |
| `internal_error` | 502 | Telegram didn't respond while Rumoro looked up the bot |
