Авторизация
Базовый URL: https://telepath.lemma.company/api/v1. Авторизуйте каждый запрос заголовком Authorization: Bearer <access_token>. Токен Telegram-бота не является OAuth-токеном Telepath.
- Прочтите метаданные OAuth-сервера и зарегистрируйте клиента через
POST /registerс точным redirect URI. - Используйте Authorization Code с S256 PKCE: новые verifier/challenge при каждом входе,
/authorizeдля согласия и/tokenдля обмена. - Канонический ресурс —
https://telepath.lemma.company/mcp, в том числе для REST. Для чтения запрашивайтеtelegram.read, для записи —telegram.write. Scope указан у каждой операции; HTTP POST сам по себе не означает доступ на запись. - Храните токены в хранилище учётных данных интеграции и обновляйте через refresh-token grant на
/token. Соблюдайте метод аутентификации зарегистрированного клиента. Не используйте учётные данные одного аккаунта для посторонних пользователей.
Учётные данные n8n обрабатывают регистрацию, PKCE и обновление. Собственное HTTP/OAuth-подключение Make должно поддерживать те же требования; полный цикл входа и обновления Make здесь не проверялся.
Запросы и ответы
- Параметры GET передаются в строке запроса. ID чатов в пути — десятичные целые. В JSON POST числовые ID передаются числами с
Content-Type: application/json. POST-операции чтения без параметров всё равно требуют{}. - Неизвестные поля и query-параметры POST отклоняются. Лимит тела JSON: 256 КБ. ID должны быть безопасными целыми; ID чата может быть отрицательным, но не нулём; ID сообщения/заметки — положительным.
- Дата и время — ISO 8601 с
Zили явным смещением. Часовой пояс напоминаний — идентификатор IANA. Правила операций ниже дополняют схему запроса. - HTTP 200 возвращает объект результата напрямую, без общей обёртки данных. Сохраняйте неизвестные поля, уведомления о настройке/истории, метаданные источника/охвата и квот. Успешное чтение может быть пустым.
- Успешные примеры — искусственные и неполные; необязательные поля могут отсутствовать или быть null. Набор фото может содержать ошибки отдельных элементов. Статус напоминания
scheduledне доказывает доставку. - Большинство операций чтения возвращает ограниченное окно без полного курсора пагинации. Пагинация по offset описана только для reminders/list. Лимит шлюза — 120 запросов в минуту на аккаунт, общий для его учётных данных; действуют также лимиты Telegram и тарифа.
Архив, Session и границы аккаунта
Вход даёт доступ к аккаунту, но сам не собирает историю Telegram. Архив Bot API сохраняет разрешённые новые сообщения; старую историю импортируют отдельно. REST API не отправляет webhook для каждого сообщения: чтение по расписанию — опрос, который может пропустить сообщения при всплеске активности или простое.
Подключённая и включённая Session имеет приоритет для пяти операций поиска чатов/сообщений и чтения текста. Результаты содержат source: "telegram_session", history_archived: false, effective_limit, coverage и partial. Session может уменьшить запрошенный лимит (сейчас до 50); поиск охватывает недавние диалоги, а не полный каталог. Ошибка или пустой результат Session не переключают чтение на архив молча.
Ограничение REST: любая операция с chat_id перед выполнением проверяет наличие чата в архиве, кроме отдельного входящего ящика бота. Это касается чтения одного чата и поиска с фильтром по чату даже при подключённой Session. Поэтому чат, найденный только через Session, может вернуть 404 chat_not_found. ID входящих бота проверяются по этому ящику. Справочник не обещает отправку через Session.
Входящие сообщения бота — не Channel Direct Messages и не личные Business-сообщения. Для Business-ответов нужны разрешение и входящее за последние 24 часа. В группе отправляет бот. Каналы требуют актуального владения, подключения и прав бота. Scope не отменяет эти проверки и настройки аккаунта.
Раскройте операцию для просмотра параметров, вложенных полей, примера запроса и структуры ответа. Страница не выполняет примеры. Перед записью замените искусственные ID и URL на разрешённые цели.
Чаты и группы
GET/chats/searchНайти чаты Telegram
Scope: telegram.read · Только чтение
Найти чат по имени, username или числовому ID. Это не глобальный поиск по Telegram.
Параметры запроса
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
query | string Обязательно | Текст поиска; поиск Notes допускает и пустую строку. minLength: 1 · maxLength: 1000 |
limit | integer Необязательно | Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 20. minimum: 1 · maximum: 100 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/chats/search?query=Example&limit=10' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN"Ответ HTTP 200
count и chats; поиск может включать query. У чатов есть chat_id, name, type, username и поля охвата архива. Session добавляет source, coverage и partial.
{
"count": 1,
"chats": [
{
"chat_id": 123456789,
"name": "Example contact",
"type": "private",
"username": null,
"message_count": 1
}
]
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
GET/messages/searchПоиск сообщений Telegram
Scope: telegram.read · Только чтение
Поиск доступного текста сообщений. Можно ограничить чатом и начальной датой.
Параметры запроса
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
query | string Обязательно | Текст поиска; поиск Notes допускает и пустую строку. minLength: 1 · maxLength: 1000 |
chat_id | integer Необязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
since | string Необязательно | Нижняя граница даты ISO 8601 с Z или явным смещением UTC. format: date-time |
limit | integer Необязательно | Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 30. minimum: 1 · maximum: 200 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/messages/search?query=details&limit=20' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN"Ответ HTTP 200
count и messages; чтение чата включает chat, поиск — query, фильтр по дате может добавить since. Сообщения содержат chat_id, message_id, date, direction, text, text_source, sender и доступные метаданные медиа/расшифровок.
{
"count": 1,
"messages": [
{
"chat_id": 123456789,
"message_id": 42,
"chat_name": "Example contact",
"date": "2026-11-05T08:00:00.000Z",
"direction": "incoming",
"text": "Could you send the details?",
"text_source": "written",
"message_type": "text"
}
]
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
GET/chats/{chat_id}/messagesЧтение одного чата
Scope: telegram.read · Только чтение
Читает ограниченное окно сообщений чата. REST-шлюз требует наличия чата в архиве аккаунта до передачи запроса на чтение.
Путь: chat_id — обязательный ненулевой безопасный целочисленный ID; чат должен быть в архиве аккаунта.
Параметры запроса
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
before | string Необязательно | Верхняя граница даты ISO 8601 с Z или явным смещением UTC. format: date-time |
since | string Необязательно | Верхняя граница даты ISO 8601 с Z или явным смещением UTC. format: date-time |
limit | integer Необязательно | Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 50. minimum: 1 · maximum: 200 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/chats/123456789/messages?limit=20' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN"Ответ HTTP 200
count и messages; чтение чата включает chat, поиск — query, фильтр по дате может добавить since. Сообщения содержат chat_id, message_id, date, direction, text, text_source, sender и доступные метаданные медиа/расшифровок.
{
"count": 1,
"messages": [
{
"chat_id": 123456789,
"message_id": 42,
"chat_name": "Example contact",
"date": "2026-11-05T08:00:00.000Z",
"direction": "incoming",
"text": "Could you send the details?",
"text_source": "written",
"message_type": "text"
}
]
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/chats/{chat_id}/messagesОтправить сообщение
Scope: telegram.write · Запись
Отправка в известный личный Business-чат или группу. Для Business нужны разрешение отвечать и входящее за последние 24 часа; в группе отправляет бот. Для каналов используйте операции постов. У обычной отправки нет ключа идемпотентности.
Путь: chat_id — обязательный ненулевой безопасный целочисленный ID; чат должен быть в архиве аккаунта.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
text | string Обязательно | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. minLength: 1 · maxLength: 4096 |
reply_to_message_id | integer Необязательно | Необязательное сообщение, на которое отвечаем. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_thread_id | integer Необязательно | Необязательное сообщение, на которое отвечаем. minimum: -9007199254740991 · maximum: 9007199254740991 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/chats/123456789/messages' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"text":"Thanks for your message."}'Ответ HTTP 200
Поля: sent, chat_id, chat_name, message_id, date и text.
{
"sent": true,
"chat_id": 123456789,
"chat_name": "Example contact",
"message_id": 43,
"date": "2026-11-05T08:01:00.000Z",
"text": "Thanks for your message."
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/messages/photosПолучить несколько фото из архива
Scope: telegram.read · Только чтение
До пяти фото из одного архивного чата. Возвращает данные фото и временные ссылки; n8n не отображает фотoвиджет ChatGPT.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Обязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_ids | array Обязательно | 1–5 положительных ID сообщений одного чата. minItems: 1 · maxItems: 5 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/messages/photos' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_ids":[42]}'Ответ HTTP 200
count, bytes_per_photo и photos. Каждый элемент содержит message_id и поля фото либо свою ошибку; HTTP 200 не означает, что загрузились все фото.
{
"count": 1,
"bytes_per_photo": 250000,
"photos": [
{
"message_id": 42,
"data": "<base64 image bytes>",
"mimeType": "image/jpeg",
"bytes": 12345,
"caption": null,
"url": null
}
]
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/chats/listСписок чатов Telegram
Scope: telegram.read · Только чтение
Список архивных чатов, включая подключённые каналы. Пустой архив не доказывает отсутствие сообщений в Telegram.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
limit | integer Необязательно | Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 20. minimum: 1 · maximum: 200 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/chats/list' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":10}'Ответ HTTP 200
count и chats; поиск может включать query. У чатов есть chat_id, name, type, username и поля охвата архива. Session добавляет source, coverage и partial.
{
"count": 1,
"chats": [
{
"chat_id": 123456789,
"name": "Example contact",
"type": "private",
"username": null,
"message_count": 1
}
]
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/messages/recentПоследние сообщения
Scope: telegram.read · Только чтение
Читает последние сохранённые сообщения разных чатов. Сбор начинается после подключения Telegram; старую историю нужно импортировать.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
limit | integer Необязательно | Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 20. minimum: 1 · maximum: 200 |
since | string Необязательно | Нижняя граница даты ISO 8601 с Z или явным смещением UTC. format: date-time |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/messages/recent' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":20}'Ответ HTTP 200
count и messages; чтение чата включает chat, поиск — query, фильтр по дате может добавить since. Сообщения содержат chat_id, message_id, date, direction, text, text_source, sender и доступные метаданные медиа/расшифровок.
{
"count": 1,
"messages": [
{
"chat_id": 123456789,
"message_id": 42,
"chat_name": "Example contact",
"date": "2026-11-05T08:00:00.000Z",
"direction": "incoming",
"text": "Could you send the details?",
"text_source": "written",
"message_type": "text"
}
]
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/messages/fileПрочитать файл из архива
Scope: telegram.read · Только чтение
Метаданные файла, временная ссылка и извлечённый текст, если поддерживается. Импортированные файлы без сохранённых Telegram file ID могут быть недоступны. Не передавайте ссылки другим пользователям.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Обязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Обязательно | Положительный безопасный целочисленный ID сообщения в выбранном чате. minimum: -9007199254740991 · maximum: 9007199254740991 |
include_text | boolean Необязательно | Пробовать ли поддерживаемое извлечение текста; это не транскрибация. |
max_chars | integer Необязательно | Максимум извлекаемых символов. minimum: 1 · maximum: 50000 |
offset_lines | integer Необязательно | Начальное смещение строк извлечённого текста. minimum: 0 · maximum: 1000000 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/messages/file' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":42,"include_text":true}'Ответ HTTP 200
filename, mimeType, bytes, message_type, caption, временный url и необязательный text. Проверяйте text_error, text_truncated и диапазоны строк; медиа из текстового экспорта могут быть недоступны.
{
"filename": "example.txt",
"mimeType": "text/plain",
"bytes": 7,
"message_type": "document",
"caption": null,
"url": null,
"text": "Example",
"text_truncated": false,
"text_error": null
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/messages/photoПолучить фото из архива
Scope: telegram.read · Только чтение
Возвращает данные и метаданные фото через медиазагрузчик Telepath. Отображение и понимание изображения зависят от клиента; это не метод анализа изображений.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Обязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Обязательно | Положительный безопасный целочисленный ID сообщения в выбранном чате. minimum: -9007199254740991 · maximum: 9007199254740991 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/messages/photo' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":42}'Ответ HTTP 200
Base64, mimeType, bytes, caption и временный url при наличии. Метод получает изображение, но не анализирует его.
{
"data": "<base64 image bytes>",
"mimeType": "image/jpeg",
"bytes": 12345,
"caption": null,
"url": null
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/messages/send-mediaОтправить фото или документ
Scope: telegram.write · Запись
Подтвердите получателя и медиа. Укажите ровно один источник: публичный HTTP(S) URL либо from_chat_id вместе с from_message_id из вашего архива. В личных чатах действуют Business-разрешения, в группах отправляет бот. Не повторяйте автоматически при неопределённой доставке.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Обязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
from_chat_id | integer Необязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
from_message_id | integer Необязательно | Исходное сообщение в from_chat_id. minimum: -9007199254740991 · maximum: 9007199254740991 |
url | string Необязательно | URL медиа или кнопки. См. ограничения поля и правила операции. pattern: ^https?:\/\/ · format: uri |
caption | string Необязательно | maxLength: 1024 |
as_document | boolean Необязательно | Отправлять медиа как документ. |
reply_to_message_id | integer Необязательно | Исходное сообщение в from_chat_id. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_thread_id | integer Необязательно | Исходное сообщение в from_chat_id. minimum: -9007199254740991 · maximum: 9007199254740991 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/messages/send-media' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"url":"https://example.com/example.pdf","as_document":true}'Ответ HTTP 200
sent, kind, chat_id, chat_name, message_id, filename, caption и sent_as. После тайм-аута доставка может быть неопределённой.
{
"sent": true,
"kind": "document",
"chat_id": 123456789,
"chat_name": "Example contact",
"message_id": 44,
"filename": "example.pdf",
"caption": null,
"sent_as": "you"
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/messages/editИзменить отправленное сообщение
Scope: telegram.write · Запись
Подтвердите точную замену и адресата. Менять можно только подходящие исходящие сообщения. Для каналов есть отдельные инструменты постов.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Обязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Обязательно | Положительный безопасный целочисленный ID сообщения в выбранном чате. minimum: -9007199254740991 · maximum: 9007199254740991 |
text | string Обязательно | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. minLength: 1 · maxLength: 4096 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/messages/edit' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":43,"text":"Updated reply."}'Ответ HTTP 200
edited, chat_id, message_id и новый text.
{
"edited": true,
"chat_id": 123456789,
"message_id": 43,
"text": "Updated reply."
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/messages/mark-readОтметить диалог прочитанным
Scope: telegram.write · Запись
Отмечает Business-диалог прочитанным в Telegram до указанного или последнего известного сообщения. Это меняет статус непрочитанного; обычное чтение архива — нет.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Обязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Необязательно | Положительный безопасный целочисленный ID сообщения в выбранном чате. minimum: -9007199254740991 · maximum: 9007199254740991 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/messages/mark-read' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":42}'Ответ HTTP 200
Поля: marked_read, chat_id, chat_name и up_to_message_id.
{
"marked_read": true,
"chat_id": 123456789,
"chat_name": "Example contact",
"up_to_message_id": 42
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/messages/reactionПоставить или убрать реакцию
Scope: telegram.write · Запись
Подтвердите сообщение и эмодзи. Реагирует бот в поддерживаемой группе или разрешённом подключённом канале; реакции Business-чатов не поддерживаются. Для удаления реакции бота не передавайте emoji.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Обязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Обязательно | Положительный безопасный целочисленный ID сообщения в выбранном чате. minimum: -9007199254740991 · maximum: 9007199254740991 |
emoji | string Необязательно | Поддерживаемая Telegram реакция. Не передавайте для удаления реакции бота. maxLength: 100 |
big | boolean Необязательно | Запросить большую анимацию реакции. |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/messages/reaction' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":-1001234567890,"message_id":42,"emoji":"👍"}'Ответ HTTP 200
Для группы: ok, chat_id, chat_name, message_id, reaction, removed и reacted_as. Для канала вместо этого используются emoji и sent_as.
{
"ok": true,
"chat_id": -1001234567890,
"chat_name": "Example group",
"message_id": 42,
"reaction": "👍",
"removed": false,
"reacted_as": "the bot"
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
Входящие сообщения бота
POST/bot/messagesВходящие сообщения бота
Scope: telegram.read · Только чтение
Чтение отдельного входящего ящика бота. Не смешивайте его с личными Business-чатами, даже при совпадении ID.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
limit | integer Необязательно | Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 20. minimum: 1 · maximum: 100 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/bot/messages' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":10}'Ответ HTTP 200
count, note и messages. У записей line=bot_dm, имя отправителя, date, text и also_has_business_chat. Этот ящик отделён от Business-чатов и личных сообщений каналу.
{
"count": 1,
"messages": [
{
"chat_id": 123456789,
"message_id": 42,
"from": "Example contact",
"date": "2026-11-05T08:00:00.000Z",
"text": "Hello",
"line": "bot_dm",
"also_has_business_chat": false
}
]
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/bot/replyОтвет во входящих бота
Scope: telegram.write · Запись
Разрешённый ответ от имени бота человеку из входящего ящика этого аккаунта. Не отвечает в Business-чате владельца. Не повторяйте автоматически при неопределённой доставке.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Обязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
text | string Обязательно | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. minLength: 1 · maxLength: 4096 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/bot/reply' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"text":"Thanks for your message."}'Ответ HTTP 200
Поля: ok, chat_id, sent_as и message_id.
{
"ok": true,
"chat_id": 123456789,
"sent_as": "the bot",
"message_id": 43
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/bot/reactionРеакция во входящих бота
Scope: telegram.write · Запись
Реакция от имени бота на сообщение в отдельном входящем ящике этого аккаунта. Для удаления не передавайте emoji.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Обязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Обязательно | Положительный безопасный целочисленный ID сообщения в выбранном чате. minimum: -9007199254740991 · maximum: 9007199254740991 |
emoji | string Необязательно | Поддерживаемая Telegram реакция. Не передавайте для удаления реакции бота. maxLength: 100 |
big | boolean Необязательно | Запросить большую анимацию реакции. |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/bot/reaction' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":42,"emoji":"👍"}'Ответ HTTP 200
Поля: ok, chat_id, message_id, reaction, removed и reacted_as.
{
"ok": true,
"chat_id": 123456789,
"message_id": 42,
"reaction": "👍",
"removed": false,
"reacted_as": "the bot"
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
Архив
POST/archive/forgetУдалить сообщения из архива
Scope: telegram.write · Запись
Безвозвратное удаление сообщений архива Telepath в указанной области, не из Telegram. Нужны разрешённое удаление архива в аккаунте и явное подтверждение. Укажите chat_id, before или оба.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
chat_id | integer Необязательно | Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка. minimum: -9007199254740991 · maximum: 9007199254740991 |
before | string Необязательно | Верхняя граница даты ISO 8601 с Z или явным смещением UTC. format: date-time |
confirmed | boolean Обязательно | Должно быть true; вызывающий должен получить разрешение именно на это действие. Только true |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/archive/forget' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"confirmed":true}'Ответ HTTP 200
forgotten (число строк), chat_id или null, before или null и пояснение о сохранённых копиях. Удаляются данные архива, не переписка Telegram.
{
"forgotten": 3,
"chat_id": 123456789,
"before": null,
"note": "Removed from the archive. Telegram retains its copy."
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
Notes
POST/notes/searchПоиск заметок
Scope: telegram.read · Только чтение
Поиск Notes этого аккаунта. Пустой запрос возвращает последние заметки. Необязательный фильтр по тегу.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
query | string Обязательно | Текст поиска; поиск Notes принимает и пустую строку. maxLength: 1000 |
tag | string Необязательно | Необязательный точный фильтр по тегу. maxLength: 100 |
limit | integer Необязательно | Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 20. minimum: 1 · maximum: 100 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/notes/search' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"query":"Follow up","limit":10}'Ответ HTTP 200
count и notes; поиск также содержит query. Список/поиск возвращают сводки без полного body, links и backlinks; для них используйте notes/get.
{
"count": 1,
"notes": [
{
"id": 17,
"title": "Follow up",
"type": "note",
"tags": [],
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z"
}
]
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/notes/getПрочитать заметку
Scope: telegram.read · Только чтение
Чтение заметки, задачи, проекта или страницы человека со связями и обратными ссылками. Укажите ID или точное название.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
id | integer Необязательно | ID заметки или напоминания указанного ниже типа. minimum: -9007199254740991 · maximum: 9007199254740991 |
title | string Необязательно | Название заметки (без крайних пробелов, 1–500 символов); точный выбор по названию без ID. minLength: 1 · maxLength: 500 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/notes/get' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"id":17}'Ответ HTTP 200
Объект заметки: id, title, body, tags, type, task_status, reminder, created_at, updated_at, links и backlinks.
{
"id": 17,
"title": "Follow up",
"body": "Send the requested details.",
"tags": [],
"type": "note",
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z",
"links": [],
"backlinks": []
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/notes/listСписок заметок
Scope: telegram.read · Только чтение
Последние заметки, задачи и проекты. При необходимости фильтруйте по тегу.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
tag | string Необязательно | Необязательный точный фильтр по тегу. maxLength: 100 |
limit | integer Необязательно | Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 30. minimum: 1 · maximum: 200 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/notes/list' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":10}'Ответ HTTP 200
count и notes; поиск также содержит query. Список/поиск возвращают сводки без полного body, links и backlinks; для них используйте notes/get.
{
"count": 1,
"notes": [
{
"id": 17,
"title": "Follow up",
"type": "note",
"tags": [],
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z"
}
]
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/notes/createСоздать заметку или задачу
Scope: telegram.write · Запись
Сохраняйте разрешённое пользователем содержимое. Названия уникальны; используйте ссылки [[Title]] и теги. Типы: note, project, person, task. Напоминание разрешено только для открытой задачи с явным согласием. Ошибка квоты означает, что сохранения не было. Перед созданием ищите дубликаты.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
title | string Обязательно | Название заметки (без крайних пробелов, 1–500 символов); точный выбор по названию без ID. minLength: 1 · maxLength: 500 |
body | string Необязательно | Текст заметки до 50 000 символов; пустая строка имеет значение. maxLength: 50000 |
tags | array Необязательно | До 100 строк, каждая до 100 символов. При обновлении заменяет все теги. maxItems: 100 |
type | string Необязательно | Тип заметки или медиа согласно содержащему объекту. Допустимо: note, project, person, task |
task_status | string Необязательно | open или done; завершение задачи отменяет напоминание. Допустимо: open, done |
reminder | object | null Необязательно | Необязательный объект напоминания задачи; null для отмены. Только для открытой задачи. |
reminder.text | string Обязательно, если передан родительский объект | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. minLength: 1 · maxLength: 1500 |
reminder.at | string Обязательно, если передан родительский объект | Будущие дата и время ISO 8601 с явным смещением в пределах пяти лет. format: date-time |
reminder.timezone | string Обязательно, если передан родительский объект | Часовой пояс IANA, например Europe/London. minLength: 1 · maxLength: 80 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/notes/create' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"title":"Follow up","body":"Send the requested details."}'Ответ HTTP 200
Объект заметки: id, title, body, tags, type, task_status, reminder, created_at, updated_at, links и backlinks.
{
"id": 17,
"title": "Follow up",
"body": "Send the requested details.",
"tags": [],
"type": "note",
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z",
"links": [],
"backlinks": []
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/notes/updateОбновить заметку или задачу
Scope: telegram.write · Запись
Сначала прочитайте заметку. При переименовании используйте ID; иначе title выбирает существующую заметку. Пропущенные поля сохраняются, append дописывает body, tags заменяет теги. reminder:null отменяет напоминание, завершение задачи тоже. Подтвердите замену содержимого. Не повторяйте append автоматически.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
id | integer Необязательно | ID заметки или напоминания указанного ниже типа. minimum: -9007199254740991 · maximum: 9007199254740991 |
title | string Необязательно | Название заметки (без крайних пробелов, 1–500 символов); точный выбор по названию без ID. minLength: 1 · maxLength: 500 |
body | string Необязательно | Текст заметки до 50 000 символов; пустая строка имеет значение. maxLength: 50000 |
tags | array Необязательно | До 100 строк, каждая до 100 символов. При обновлении заменяет все теги. maxItems: 100 |
type | string Необязательно | Тип заметки или медиа согласно содержащему объекту. Допустимо: note, project, person, task |
task_status | string Необязательно | open или done; завершение задачи отменяет напоминание. Допустимо: open, done |
reminder | object | null Необязательно | Необязательный объект напоминания задачи; null для отмены. Только для открытой задачи. |
reminder.text | string Обязательно, если передан родительский объект | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. minLength: 1 · maxLength: 1500 |
reminder.at | string Обязательно, если передан родительский объект | Будущие дата и время ISO 8601 с явным смещением в пределах пяти лет. format: date-time |
reminder.timezone | string Обязательно, если передан родительский объект | Часовой пояс IANA, например Europe/London. minLength: 1 · maxLength: 80 |
append | boolean Необязательно | Дописать body вместо замены. |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/notes/update' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"id":17,"body":"Updated details."}'Ответ HTTP 200
Объект заметки: id, title, body, tags, type, task_status, reminder, created_at, updated_at, links и backlinks.
{
"id": 17,
"title": "Follow up",
"body": "Send the requested details.",
"tags": [],
"type": "note",
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z",
"links": [],
"backlinks": []
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/notes/deleteУдалить заметку
Scope: telegram.write · Запись
Навсегда удаляет выбранную заметку после подтверждения пользователя. Отменяет её напоминание. Укажите ID или точное название.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
id | integer Необязательно | ID заметки или напоминания указанного ниже типа. minimum: -9007199254740991 · maximum: 9007199254740991 |
title | string Необязательно | Название заметки (без крайних пробелов, 1–500 символов); точный выбор по названию без ID. minLength: 1 · maxLength: 500 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/notes/delete' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"id":17}'Ответ HTTP 200
Поля: deleted, id и title.
{
"deleted": true,
"id": 17,
"title": "Follow up"
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
Напоминания
POST/reminders/createСоздать напоминание
Scope: telegram.write · Запись
Разовое напоминание только владельцу авторизованного аккаунта. Уточните время, пояс и текст; создавайте только с разрешения. При повторе используйте тот же request_id и данные. Лимит общий с напоминаниями задач. Запланировано — не значит доставлено.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
text | string Обязательно | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. minLength: 1 · maxLength: 1500 |
at | string Обязательно | Будущие дата и время ISO 8601 с явным смещением в пределах пяти лет. format: date-time |
timezone | string Обязательно | Часовой пояс IANA, например Europe/London. minLength: 1 · maxLength: 80 |
request_id | string Необязательно | 8–100 букв, цифр, дефисов или подчёркиваний. Повторять только для идентичной операции. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/reminders/create' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"text":"Follow up","at":"2027-01-15T09:00:00Z","timezone":"Europe/London","request_id":"reminder-example-001"}'Ответ HTTP 200
reminder, created и quota. Повтор идентичного request_id возвращает created=false. Запланировано — не значит доставлено.
{
"reminder": {
"id": "r_example_reminder",
"kind": "standalone",
"note_id": null,
"at": "2027-01-15T09:00:00.000Z",
"timezone": "Europe/London",
"text": "Follow up",
"status": "scheduled"
},
"created": true
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/reminders/listСписок напоминаний
Scope: telegram.read · Только чтение
Отдельные напоминания и напоминания задач со статусами доставки. Доступно независимо от остатка квоты создания. По умолчанию без done/cancelled. Uncertain не означает доставку.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
status | string Необязательно | Фильтр по статусу доставки напоминания. Допустимо: scheduled, sending, delivered, failed, uncertain, cancelled, done |
limit | integer Необязательно | Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 30. minimum: 1 · maximum: 100 |
offset | integer Необязательно | Смещение списка напоминаний. minimum: 0 · maximum: 1000000 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/reminders/list' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":10,"offset":0}'Ответ HTTP 200
count, total, reminders, next_offset (или null) и quota. Поддерживается пагинация по offset.
{
"count": 1,
"total": 1,
"reminders": [
{
"id": "r_example_reminder",
"kind": "standalone",
"note_id": null,
"at": "2027-01-15T09:00:00.000Z",
"timezone": "Europe/London",
"text": "Follow up",
"status": "scheduled"
}
],
"next_offset": null
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/reminders/cancelОтменить напоминание
Scope: telegram.write · Запись
Отмена по ID по запросу владельца; связанная задача сохраняется. Доступна даже при запрете создания Notes или исчерпанном лимите. Отмена не возвращает квоту и не отзывает отправленное сообщение.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
id | string Обязательно | ID заметки или напоминания указанного ниже типа. minLength: 1 · maxLength: 100 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/reminders/cancel' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"id":"r_example_reminder"}'Ответ HTTP 200
reminder и cancelled. Проверяйте статус: отмена не отзывает доставленное сообщение.
{
"reminder": {
"id": "r_example_reminder",
"kind": "standalone",
"note_id": null,
"at": "2027-01-15T09:00:00.000Z",
"timezone": "Europe/London",
"text": "Follow up",
"status": "cancelled"
},
"cancelled": true
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
Каналы
POST/channels/posts/createОпубликовать пост в канале
Scope: telegram.write · Запись
Публикация в подключённом канале, которым вы сейчас владеете. Покажите канал, текст, все медиа и адреса кнопок и получите явное согласие. Текст, одно фото/документ или альбом из 2–10 элементов. У альбомов нет кнопок, документы нельзя смешивать с фото/видео. Подписи до 1024 символов. Нужны права Post messages. При идентичном повторе сохраняйте request_id; при неопределённой доставке не создавайте новый ID.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
channel_id | integer Обязательно | Отрицательный безопасный целочисленный ID подключённого канала, принадлежащего аккаунту сейчас. minimum: -9007199254740991 · maximum: 9007199254740991 |
request_id | string Обязательно | 8–100 букв, цифр, дефисов или подчёркиваний. Повторять только для идентичной операции. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
confirmed | boolean Обязательно | Должно быть true; вызывающий должен получить разрешение именно на это действие. Только true |
text | string Необязательно | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. maxLength: 4096 |
media | object Необязательно | Одно фото или документ с HTTPS URL. |
media.type | string Обязательно, если передан родительский объект | Тип заметки или медиа согласно содержащему объекту. Допустимо: photo, document |
media.url | string Обязательно, если передан родительский объект | URL медиа или кнопки. См. ограничения поля и правила операции. pattern: ^https\:\/\/ · format: uri |
buttons | array Необязательно | До пяти строк по 1–4 HTTPS-кнопки; [] удаляет кнопки при правке. maxItems: 5 |
buttons[][].text | string Обязательно, если передан родительский объект | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. minLength: 1 · maxLength: 64 |
buttons[][].url | string Обязательно, если передан родительский объект | URL медиа или кнопки. См. ограничения поля и правила операции. pattern: ^https\:\/\/ · format: uri |
format | string Необязательно | plain или HTML для содержимого канала. Допустимо: plain, HTML |
album | array Необязательно | 2–10 фото/видео/документов; см. ограничения альбома. minItems: 2 · maxItems: 10 |
album[].type | string Обязательно, если передан родительский объект | Тип заметки или медиа согласно содержащему объекту. Допустимо: photo, video, document |
album[].url | string Обязательно, если передан родительский объект | URL медиа или кнопки. См. ограничения поля и правила операции. pattern: ^https\:\/\/ · format: uri |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/channels/posts/create' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"channel_id":-1001234567890,"request_id":"post-create-example-001","confirmed":true,"text":"Example announcement."}'Ответ HTTP 200
ok, channel_id, channel_title, message_id и action. Создание альбома добавляет message_ids и media_group_id. Успешный идентичный повтор request_id возвращает сохранённый результат.
{
"ok": true,
"channel_id": -1001234567890,
"channel_title": "Example channel",
"message_id": 42,
"action": "telegram_create_post"
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/channels/posts/editИзменить пост канала
Scope: telegram.write · Запись
Сначала прочитайте пост, подтвердите канал и замену. Пропущенные поля сохраняются, пустые buttons удаляют кнопки. Нужны актуальное владение и Edit messages. Меняется один элемент альбома, не весь. Идентичный повтор — с тем же request_id.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
channel_id | integer Обязательно | Отрицательный безопасный целочисленный ID подключённого канала, принадлежащего аккаунту сейчас. minimum: -9007199254740991 · maximum: 9007199254740991 |
request_id | string Обязательно | 8–100 букв, цифр, дефисов или подчёркиваний. Повторять только для идентичной операции. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
confirmed | boolean Обязательно | Должно быть true; вызывающий должен получить разрешение именно на это действие. Только true |
text | string Необязательно | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. maxLength: 4096 |
media | object Необязательно | Одно фото или документ с HTTPS URL. |
media.type | string Обязательно, если передан родительский объект | Тип заметки или медиа согласно содержащему объекту. Допустимо: photo, document |
media.url | string Обязательно, если передан родительский объект | URL медиа или кнопки. См. ограничения поля и правила операции. pattern: ^https\:\/\/ · format: uri |
buttons | array Необязательно | До пяти строк по 1–4 HTTPS-кнопки; [] удаляет кнопки при правке. maxItems: 5 |
buttons[][].text | string Обязательно, если передан родительский объект | Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется. minLength: 1 · maxLength: 64 |
buttons[][].url | string Обязательно, если передан родительский объект | URL медиа или кнопки. См. ограничения поля и правила операции. pattern: ^https\:\/\/ · format: uri |
format | string Необязательно | plain или HTML для содержимого канала. Допустимо: plain, HTML |
message_id | integer Обязательно | Положительный безопасный целочисленный ID сообщения в выбранном чате. minimum: -9007199254740991 · maximum: 9007199254740991 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/channels/posts/edit' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"channel_id":-1001234567890,"message_id":42,"request_id":"post-edit-example-001","confirmed":true,"text":"Updated announcement."}'Ответ HTTP 200
ok, channel_id, channel_title, message_id и action. Создание альбома добавляет message_ids и media_group_id. Успешный идентичный повтор request_id возвращает сохранённый результат.
{
"ok": true,
"channel_id": -1001234567890,
"channel_title": "Example channel",
"message_id": 42,
"action": "telegram_edit_post"
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/channels/posts/deleteУдалить пост канала
Scope: telegram.write · Запись
После подтверждения безвозвратно удаляет один архивный пост из Telegram. Нужны актуальное владение, Delete messages и соблюдение окна удаления Telegram. Это не просто удаление из архива. Повторяйте идентичный запрос с тем же request_id.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
channel_id | integer Обязательно | Отрицательный безопасный целочисленный ID подключённого канала, принадлежащего аккаунту сейчас. minimum: -9007199254740991 · maximum: 9007199254740991 |
request_id | string Обязательно | 8–100 букв, цифр, дефисов или подчёркиваний. Повторять только для идентичной операции. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
confirmed | boolean Обязательно | Должно быть true; вызывающий должен получить разрешение именно на это действие. Только true |
message_id | integer Обязательно | Положительный безопасный целочисленный ID сообщения в выбранном чате. minimum: -9007199254740991 · maximum: 9007199254740991 |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/channels/posts/delete' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"channel_id":-1001234567890,"message_id":42,"request_id":"post-delete-example-001","confirmed":true}'Ответ HTTP 200
ok, channel_id, channel_title, message_id и action. Создание альбома добавляет message_ids и media_group_id. Успешный идентичный повтор request_id возвращает сохранённый результат.
{
"ok": true,
"channel_id": -1001234567890,
"channel_title": "Example channel",
"message_id": 42,
"action": "telegram_delete_post"
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
POST/channels/posts/pinЗакрепить или открепить пост
Scope: telegram.write · Запись
Подтвердите канал, пост и нужное состояние. Меняется закрепление только этого поста; нужны владение и Edit messages. Идентичный повтор — с тем же request_id.
Тело JSON
| Параметр | Тип / обязательность | Описание / ограничения |
|---|---|---|
channel_id | integer Обязательно | Отрицательный безопасный целочисленный ID подключённого канала, принадлежащего аккаунту сейчас. minimum: -9007199254740991 · maximum: 9007199254740991 |
request_id | string Обязательно | 8–100 букв, цифр, дефисов или подчёркиваний. Повторять только для идентичной операции. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
confirmed | boolean Обязательно | Должно быть true; вызывающий должен получить разрешение именно на это действие. Только true |
message_id | integer Обязательно | Положительный безопасный целочисленный ID сообщения в выбранном чате. minimum: -9007199254740991 · maximum: 9007199254740991 |
pinned | boolean Обязательно | true — закрепить, false — открепить. |
Пример запроса
curl 'https://telepath.lemma.company/api/v1/channels/posts/pin' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"channel_id":-1001234567890,"message_id":42,"request_id":"post-pin-example-001","confirmed":true,"pinned":true}'Ответ HTTP 200
ok, channel_id, channel_title, message_id и action. Создание альбома добавляет message_ids и media_group_id. Успешный идентичный повтор request_id возвращает сохранённый результат.
{
"ok": true,
"channel_id": -1001234567890,
"channel_title": "Example channel",
"message_id": 42,
"action": "telegram_set_post_pinned"
}См. общие ошибки и правила повторных попыток. Разрешения аккаунта и доступность функции проверяются для каждой операции.
Ошибки и правила повторных попыток
Ошибки обычно имеют вид {"error":"code","error_description":"explanation"}. Ошибки квоты напоминаний добавляют quota. Авторизация может вернуть OAuth-ошибку без error_description. Не сопоставленные с конкретной ошибкой сбои становятся 502 operation_failed; не считайте, что любая ошибка разрешений или валидации — 400/403.
| HTTP | Коды | Значение |
|---|---|---|
| 400 | invalid_request / unsupported_chat_type / invalid_reminder | Неверные параметры или JSON; неподдерживаемый тип чата; неверное напоминание. |
| 401 | invalid_token | Токен доступа отсутствует, истёк, отозван или неверен. Обновите через OAuth. |
| 403 | account_unavailable / insufficient_scope / sending_disabled / capability_unavailable / entitlement_required | Неактивный аккаунт, нет scope, функция выключена или исчерпан лимит напоминаний. |
| 404 | chat_not_found / not_found | Неизвестный путь/метод, недоступный объект или чат отсутствует в требуемом архиве/ящике. |
| 413 | invalid_request | Тело JSON превышает 256 КБ. |
| 415 | unsupported_media_type / invalid_request | Используйте application/json; неподдерживаемые кодировка или charset. |
| 429 | rate_limited / telegram_rate_limited | Общий лимит аккаунта или отказ Telegram. Соблюдайте Retry-After, если он есть. |
| 500 | server_error | Непредвиденная ошибка обработки запроса. |
| 502 | operation_failed | Операция не выполнена или результат неопределён. Запись могла пройти; проверьте состояние перед повтором. |
- Повтор чтения: увеличивайте задержку и соблюдайте Retry-After. При ошибках авторизации или прав остановитесь и устраните причину.
- Обычная отправка и дописывание: общего ключа идемпотентности нет. Тайм-аут или 502 возможны и после успеха. Проверьте место назначения перед повтором; отключите слепые повторы всего сценария.
- Действия с каналом: нужны
confirmed=trueи стабильныйrequest_id. Идентичный завершённый запрос возвращает квитанцию; изменённые данные с тем же ключом отклоняются. Pending/uncertain требуют проверки, не нового ключа. - Создание напоминания: необязательный request_id убирает идентичные повторы. Завершение/удаление задачи отменяет её напоминание; отмена не возвращает квоту создания.
- 429 при записи: отличайте явный отказ шлюза до выполнения
rate_limitedот ошибок Telegram или сети. Не повторяйте отправку при любой серверной ошибке или ограничении частоты.
REST не предоставляет администрирование аккаунтов, OAuth-данные, настройки автоответов и универсальный вызов любого инструмента. Параметры генерации голоса из других транспортов не принимаются этими REST-схемами медиа/постов.