Авторизация

Базовый URL: https://telepath.lemma.company/api/v1. Авторизуйте каждый запрос заголовком Authorization: Bearer <access_token>. Токен Telegram-бота не является OAuth-токеном Telepath.

  1. Прочтите метаданные OAuth-сервера и зарегистрируйте клиента через POST /register с точным redirect URI.
  2. Используйте Authorization Code с S256 PKCE: новые verifier/challenge при каждом входе, /authorize для согласия и /token для обмена.
  3. Канонический ресурс — https://telepath.lemma.company/mcp, в том числе для REST. Для чтения запрашивайте telegram.read, для записи — telegram.write. Scope указан у каждой операции; HTTP POST сам по себе не означает доступ на запись.
  4. Храните токены в хранилище учётных данных интеграции и обновляйте через 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.

Параметры запроса

ПараметрТип / обязательностьОписание / ограничения
querystring
Обязательно
Текст поиска; поиск Notes допускает и пустую строку.
minLength: 1 · maxLength: 1000
limitinteger
Необязательно
Максимум результатов; лимит источника может быть ниже. 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 · Только чтение

Поиск доступного текста сообщений. Можно ограничить чатом и начальной датой.

Параметры запроса

ПараметрТип / обязательностьОписание / ограничения
querystring
Обязательно
Текст поиска; поиск Notes допускает и пустую строку.
minLength: 1 · maxLength: 1000
chat_idinteger
Необязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
sincestring
Необязательно
Нижняя граница даты ISO 8601 с Z или явным смещением UTC.
format: date-time
limitinteger
Необязательно
Максимум результатов; лимит источника может быть ниже. 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; чат должен быть в архиве аккаунта.

Параметры запроса

ПараметрТип / обязательностьОписание / ограничения
beforestring
Необязательно
Верхняя граница даты ISO 8601 с Z или явным смещением UTC.
format: date-time
sincestring
Необязательно
Верхняя граница даты ISO 8601 с Z или явным смещением UTC.
format: date-time
limitinteger
Необязательно
Максимум результатов; лимит источника может быть ниже. 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

ПараметрТип / обязательностьОписание / ограничения
textstring
Обязательно
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
minLength: 1 · maxLength: 4096
reply_to_message_idinteger
Необязательно
Необязательное сообщение, на которое отвечаем.
minimum: -9007199254740991 · maximum: 9007199254740991
message_thread_idinteger
Необязательно
Необязательное сообщение, на которое отвечаем.
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_idinteger
Обязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
message_idsarray
Обязательно
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

ПараметрТип / обязательностьОписание / ограничения
limitinteger
Необязательно
Максимум результатов; лимит источника может быть ниже. 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

ПараметрТип / обязательностьОписание / ограничения
limitinteger
Необязательно
Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 20.
minimum: 1 · maximum: 200
sincestring
Необязательно
Нижняя граница даты 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_idinteger
Обязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
message_idinteger
Обязательно
Положительный безопасный целочисленный ID сообщения в выбранном чате.
minimum: -9007199254740991 · maximum: 9007199254740991
include_textboolean
Необязательно
Пробовать ли поддерживаемое извлечение текста; это не транскрибация.
max_charsinteger
Необязательно
Максимум извлекаемых символов.
minimum: 1 · maximum: 50000
offset_linesinteger
Необязательно
Начальное смещение строк извлечённого текста.
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_idinteger
Обязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
message_idinteger
Обязательно
Положительный безопасный целочисленный 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_idinteger
Обязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
from_chat_idinteger
Необязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
from_message_idinteger
Необязательно
Исходное сообщение в from_chat_id.
minimum: -9007199254740991 · maximum: 9007199254740991
urlstring
Необязательно
URL медиа или кнопки. См. ограничения поля и правила операции.
pattern: ^https?:\/\/ · format: uri
captionstring
Необязательно

maxLength: 1024
as_documentboolean
Необязательно
Отправлять медиа как документ.
reply_to_message_idinteger
Необязательно
Исходное сообщение в from_chat_id.
minimum: -9007199254740991 · maximum: 9007199254740991
message_thread_idinteger
Необязательно
Исходное сообщение в 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_idinteger
Обязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
message_idinteger
Обязательно
Положительный безопасный целочисленный ID сообщения в выбранном чате.
minimum: -9007199254740991 · maximum: 9007199254740991
textstring
Обязательно
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
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_idinteger
Обязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
message_idinteger
Необязательно
Положительный безопасный целочисленный 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_idinteger
Обязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
message_idinteger
Обязательно
Положительный безопасный целочисленный ID сообщения в выбранном чате.
minimum: -9007199254740991 · maximum: 9007199254740991
emojistring
Необязательно
Поддерживаемая Telegram реакция. Не передавайте для удаления реакции бота.
maxLength: 100
bigboolean
Необязательно
Запросить большую анимацию реакции.

Пример запроса

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

ПараметрТип / обязательностьОписание / ограничения
limitinteger
Необязательно
Максимум результатов; лимит источника может быть ниже. 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_idinteger
Обязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
textstring
Обязательно
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
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_idinteger
Обязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
message_idinteger
Обязательно
Положительный безопасный целочисленный ID сообщения в выбранном чате.
minimum: -9007199254740991 · maximum: 9007199254740991
emojistring
Необязательно
Поддерживаемая Telegram реакция. Не передавайте для удаления реакции бота.
maxLength: 100
bigboolean
Необязательно
Запросить большую анимацию реакции.

Пример запроса

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_idinteger
Необязательно
Ненулевой безопасный целочисленный ID чата. В JSON — число, в GET — десятичная строка.
minimum: -9007199254740991 · maximum: 9007199254740991
beforestring
Необязательно
Верхняя граница даты ISO 8601 с Z или явным смещением UTC.
format: date-time
confirmedboolean
Обязательно
Должно быть 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

ПараметрТип / обязательностьОписание / ограничения
querystring
Обязательно
Текст поиска; поиск Notes принимает и пустую строку.
maxLength: 1000
tagstring
Необязательно
Необязательный точный фильтр по тегу.
maxLength: 100
limitinteger
Необязательно
Максимум результатов; лимит источника может быть ниже. 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

ПараметрТип / обязательностьОписание / ограничения
idinteger
Необязательно
ID заметки или напоминания указанного ниже типа.
minimum: -9007199254740991 · maximum: 9007199254740991
titlestring
Необязательно
Название заметки (без крайних пробелов, 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

ПараметрТип / обязательностьОписание / ограничения
tagstring
Необязательно
Необязательный точный фильтр по тегу.
maxLength: 100
limitinteger
Необязательно
Максимум результатов; лимит источника может быть ниже. 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

ПараметрТип / обязательностьОписание / ограничения
titlestring
Обязательно
Название заметки (без крайних пробелов, 1–500 символов); точный выбор по названию без ID.
minLength: 1 · maxLength: 500
bodystring
Необязательно
Текст заметки до 50 000 символов; пустая строка имеет значение.
maxLength: 50000
tagsarray
Необязательно
До 100 строк, каждая до 100 символов. При обновлении заменяет все теги.
maxItems: 100
typestring
Необязательно
Тип заметки или медиа согласно содержащему объекту.
Допустимо: note, project, person, task
task_statusstring
Необязательно
open или done; завершение задачи отменяет напоминание.
Допустимо: open, done
reminderobject | null
Необязательно
Необязательный объект напоминания задачи; null для отмены. Только для открытой задачи.
reminder.textstring
Обязательно, если передан родительский объект
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
minLength: 1 · maxLength: 1500
reminder.atstring
Обязательно, если передан родительский объект
Будущие дата и время ISO 8601 с явным смещением в пределах пяти лет.
format: date-time
reminder.timezonestring
Обязательно, если передан родительский объект
Часовой пояс 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

ПараметрТип / обязательностьОписание / ограничения
idinteger
Необязательно
ID заметки или напоминания указанного ниже типа.
minimum: -9007199254740991 · maximum: 9007199254740991
titlestring
Необязательно
Название заметки (без крайних пробелов, 1–500 символов); точный выбор по названию без ID.
minLength: 1 · maxLength: 500
bodystring
Необязательно
Текст заметки до 50 000 символов; пустая строка имеет значение.
maxLength: 50000
tagsarray
Необязательно
До 100 строк, каждая до 100 символов. При обновлении заменяет все теги.
maxItems: 100
typestring
Необязательно
Тип заметки или медиа согласно содержащему объекту.
Допустимо: note, project, person, task
task_statusstring
Необязательно
open или done; завершение задачи отменяет напоминание.
Допустимо: open, done
reminderobject | null
Необязательно
Необязательный объект напоминания задачи; null для отмены. Только для открытой задачи.
reminder.textstring
Обязательно, если передан родительский объект
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
minLength: 1 · maxLength: 1500
reminder.atstring
Обязательно, если передан родительский объект
Будущие дата и время ISO 8601 с явным смещением в пределах пяти лет.
format: date-time
reminder.timezonestring
Обязательно, если передан родительский объект
Часовой пояс IANA, например Europe/London.
minLength: 1 · maxLength: 80
appendboolean
Необязательно
Дописать 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

ПараметрТип / обязательностьОписание / ограничения
idinteger
Необязательно
ID заметки или напоминания указанного ниже типа.
minimum: -9007199254740991 · maximum: 9007199254740991
titlestring
Необязательно
Название заметки (без крайних пробелов, 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

ПараметрТип / обязательностьОписание / ограничения
textstring
Обязательно
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
minLength: 1 · maxLength: 1500
atstring
Обязательно
Будущие дата и время ISO 8601 с явным смещением в пределах пяти лет.
format: date-time
timezonestring
Обязательно
Часовой пояс IANA, например Europe/London.
minLength: 1 · maxLength: 80
request_idstring
Необязательно
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

ПараметрТип / обязательностьОписание / ограничения
statusstring
Необязательно
Фильтр по статусу доставки напоминания.
Допустимо: scheduled, sending, delivered, failed, uncertain, cancelled, done
limitinteger
Необязательно
Максимум результатов; лимит источника может быть ниже. Return All и неявной пагинации нет. Для архива по умолчанию 30.
minimum: 1 · maximum: 100
offsetinteger
Необязательно
Смещение списка напоминаний.
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

ПараметрТип / обязательностьОписание / ограничения
idstring
Обязательно
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_idinteger
Обязательно
Отрицательный безопасный целочисленный ID подключённого канала, принадлежащего аккаунту сейчас.
minimum: -9007199254740991 · maximum: 9007199254740991
request_idstring
Обязательно
8–100 букв, цифр, дефисов или подчёркиваний. Повторять только для идентичной операции.
minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$
confirmedboolean
Обязательно
Должно быть true; вызывающий должен получить разрешение именно на это действие.
Только true
textstring
Необязательно
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
maxLength: 4096
mediaobject
Необязательно
Одно фото или документ с HTTPS URL.
media.typestring
Обязательно, если передан родительский объект
Тип заметки или медиа согласно содержащему объекту.
Допустимо: photo, document
media.urlstring
Обязательно, если передан родительский объект
URL медиа или кнопки. См. ограничения поля и правила операции.
pattern: ^https\:\/\/ · format: uri
buttonsarray
Необязательно
До пяти строк по 1–4 HTTPS-кнопки; [] удаляет кнопки при правке.
maxItems: 5
buttons[][].textstring
Обязательно, если передан родительский объект
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
minLength: 1 · maxLength: 64
buttons[][].urlstring
Обязательно, если передан родительский объект
URL медиа или кнопки. См. ограничения поля и правила операции.
pattern: ^https\:\/\/ · format: uri
formatstring
Необязательно
plain или HTML для содержимого канала.
Допустимо: plain, HTML
albumarray
Необязательно
2–10 фото/видео/документов; см. ограничения альбома.
minItems: 2 · maxItems: 10
album[].typestring
Обязательно, если передан родительский объект
Тип заметки или медиа согласно содержащему объекту.
Допустимо: photo, video, document
album[].urlstring
Обязательно, если передан родительский объект
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_idinteger
Обязательно
Отрицательный безопасный целочисленный ID подключённого канала, принадлежащего аккаунту сейчас.
minimum: -9007199254740991 · maximum: 9007199254740991
request_idstring
Обязательно
8–100 букв, цифр, дефисов или подчёркиваний. Повторять только для идентичной операции.
minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$
confirmedboolean
Обязательно
Должно быть true; вызывающий должен получить разрешение именно на это действие.
Только true
textstring
Необязательно
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
maxLength: 4096
mediaobject
Необязательно
Одно фото или документ с HTTPS URL.
media.typestring
Обязательно, если передан родительский объект
Тип заметки или медиа согласно содержащему объекту.
Допустимо: photo, document
media.urlstring
Обязательно, если передан родительский объект
URL медиа или кнопки. См. ограничения поля и правила операции.
pattern: ^https\:\/\/ · format: uri
buttonsarray
Необязательно
До пяти строк по 1–4 HTTPS-кнопки; [] удаляет кнопки при правке.
maxItems: 5
buttons[][].textstring
Обязательно, если передан родительский объект
Текст сообщения, поста или напоминания. Обычная отправка только пробелов отклоняется.
minLength: 1 · maxLength: 64
buttons[][].urlstring
Обязательно, если передан родительский объект
URL медиа или кнопки. См. ограничения поля и правила операции.
pattern: ^https\:\/\/ · format: uri
formatstring
Необязательно
plain или HTML для содержимого канала.
Допустимо: plain, HTML
message_idinteger
Обязательно
Положительный безопасный целочисленный 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_idinteger
Обязательно
Отрицательный безопасный целочисленный ID подключённого канала, принадлежащего аккаунту сейчас.
minimum: -9007199254740991 · maximum: 9007199254740991
request_idstring
Обязательно
8–100 букв, цифр, дефисов или подчёркиваний. Повторять только для идентичной операции.
minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$
confirmedboolean
Обязательно
Должно быть true; вызывающий должен получить разрешение именно на это действие.
Только true
message_idinteger
Обязательно
Положительный безопасный целочисленный 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_idinteger
Обязательно
Отрицательный безопасный целочисленный ID подключённого канала, принадлежащего аккаунту сейчас.
minimum: -9007199254740991 · maximum: 9007199254740991
request_idstring
Обязательно
8–100 букв, цифр, дефисов или подчёркиваний. Повторять только для идентичной операции.
minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$
confirmedboolean
Обязательно
Должно быть true; вызывающий должен получить разрешение именно на это действие.
Только true
message_idinteger
Обязательно
Положительный безопасный целочисленный ID сообщения в выбранном чате.
minimum: -9007199254740991 · maximum: 9007199254740991
pinnedboolean
Обязательно
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КодыЗначение
400invalid_request / unsupported_chat_type / invalid_reminderНеверные параметры или JSON; неподдерживаемый тип чата; неверное напоминание.
401invalid_tokenТокен доступа отсутствует, истёк, отозван или неверен. Обновите через OAuth.
403account_unavailable / insufficient_scope / sending_disabled / capability_unavailable / entitlement_requiredНеактивный аккаунт, нет scope, функция выключена или исчерпан лимит напоминаний.
404chat_not_found / not_foundНеизвестный путь/метод, недоступный объект или чат отсутствует в требуемом архиве/ящике.
413invalid_requestТело JSON превышает 256 КБ.
415unsupported_media_type / invalid_requestИспользуйте application/json; неподдерживаемые кодировка или charset.
429rate_limited / telegram_rate_limitedОбщий лимит аккаунта или отказ Telegram. Соблюдайте Retry-After, если он есть.
500server_errorНепредвиденная ошибка обработки запроса.
502operation_failedОперация не выполнена или результат неопределён. Запись могла пройти; проверьте состояние перед повтором.
  • Повтор чтения: увеличивайте задержку и соблюдайте Retry-After. При ошибках авторизации или прав остановитесь и устраните причину.
  • Обычная отправка и дописывание: общего ключа идемпотентности нет. Тайм-аут или 502 возможны и после успеха. Проверьте место назначения перед повтором; отключите слепые повторы всего сценария.
  • Действия с каналом: нужны confirmed=true и стабильный request_id. Идентичный завершённый запрос возвращает квитанцию; изменённые данные с тем же ключом отклоняются. Pending/uncertain требуют проверки, не нового ключа.
  • Создание напоминания: необязательный request_id убирает идентичные повторы. Завершение/удаление задачи отменяет её напоминание; отмена не возвращает квоту создания.
  • 429 при записи: отличайте явный отказ шлюза до выполнения rate_limited от ошибок Telegram или сети. Не повторяйте отправку при любой серверной ошибке или ограничении частоты.

REST не предоставляет администрирование аккаунтов, OAuth-данные, настройки автоответов и универсальный вызов любого инструмента. Параметры генерации голоса из других транспортов не принимаются этими REST-схемами медиа/постов.

Скачать OpenAPI JSON ↓Помощь с интеграцией ↗