Gateway API · Боты

Партнёрская документация — управляемые Telegram-аккаунты

Base URL
api/v1/gateway
v1.1 · Bearer
Аутентификация

Каждый запрос — с заголовком Authorization: Bearer <token>. Для POST — Content-Type: application/json.

Base URL
https://telegramilti.com/api/v1/gateway
Внимание: путь именно с префиксом /api/v1/gateway (короткий /gateway/… → 404). Не путать с /api/v1/accounts — там другая авторизация (по owner_user_id, без Bearer); gateway-токен туда слать нельзя (Session is invalid).
Эндпоинты
GET/bots

Список всех управляемых аккаунтов.

Запрос
curl -sS "https://telegramilti.com/api/v1/gateway/bots" \
  -H "Authorization: Bearer $TOKEN"
Ответ
{ "bots": [ Bot, … ] }
POST/bots/get

Один аккаунт по bot_tg_id.

Запрос
curl -sS "https://telegramilti.com/api/v1/gateway/bots/get" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"bot_tg_id":"8160200298"}'
Ответ — объект Bot (404, если не найден)
POST/bots/sleep/bots/wake

Ротация: усыпить аккаунт (AUTO-выбор его пропустит; явный вызов по bot_tg_id всё равно сработает) / разбудить.

Усыпить
curl -sS "…/api/v1/gateway/bots/sleep" -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" -d '{"bot_tg_id":"816…","seconds":300}'

# разбудить: POST /bots/wake  {"bot_tg_id":"816…"}
Ответ
{ "bot_tg_id":"…", "sleeping":true|false, "sleep_until":<ts>|null }
Объект Bot
{
  "bot_tg_id": "8160200298",
  "username": "solo_lux_man",
  "display_name": "Snowy",
  "is_premium": false,
  "status": "available",
  "status_reason": null,
  "flood_wait_until": null,
  "sleep_until": null,
  "meta": { "internal_account_id": "…", "phone": "+8190…" },
  "last_seen_at": 1783071435
}
ПолеТипОписание
bot_tg_idstringTelegram user id (числом). Если не резолвнулся — придёт внутренний UUID + status=unknown: не использовать.
usernamestring · null@username без «@».
display_namestring · nullИмя профиля.
is_premiumNEWboolЕсть ли у аккаунта Telegram Premium.
statusenumavailable · unavailable · unknown
status_reasonstring · nullПричина, когда не available (см. ниже).
flood_wait_untilint · nullUnix ts (сек) — до конца флуд-ожидания.
sleep_untilint · nullUnix ts (сек) — окно «сна»/ротации.
metaobjectinternal_account_id, phone.
last_seen_atint · nullUnix ts (сек) последней проверки.
Статусы

available — можно таргетить.

unavailable — временно нельзя; смотри status_reason:

flood_waitlimitedfrozenbanneddeadauth_requiredsleeping

unknown — состояние неизвестно (unresolved — не резолвнулся tg id, либо error). Не таргетить.

Коды ошибок

401 нет / невалидный / отозванный токен   404 бот не найден   422 ошибка валидации тела   429 rate-limit (заголовок Retry-After, сек)

Вступление в чат · subscribe

Когда отправка вернула source_context_unavailable, в error приходит подсказка suggested_action: "join_source_chat" + join_chat_peer_id. Аккаунт вступает в этот чат и повторяет отправку.

POST/bots/join-chat
Запрос — по @username или инвайт-ссылке. Идемпотентна по operation_id (повтор с тем же id вернёт тот же оп).
{
  "operation_id": "<uuid>",
  "bot_tg_id": "8160200298",
  "chat": { "type": "username", "username": "source_channel" }
  // либо: "chat": { "type": "invite_link", "invite_link": "https://t.me/+abc…" }
}
Ответ
{
  "operation": { "type":"join_chat", "status":"succeeded", // pending|running|succeeded|failed
                 "error":null, "result":{…}, "created_at":…, "updated_at":… },
  "membership": { "chat_peer_id":"…", "status":"joined", … } // null, если ещё нет
}
@combot и чаты с аппрувом: вступление уходит заявкой → membership.status = "join_request_sent", ждём ручного одобрения. Обойти нельзя — это гейт на стороне Telegram. Как одобрят — статус станет joined, тогда повторяй отправку.

Статусы membership: joinedjoiningjoin_request_sentbannedrestrictedunknown

Приватные диалоги · Bot API

Чтение входящих ЛС аккаунтов через Bot API (в обход MTProto) — для быстрых ответов бота.

POST/private-dialogs/list

Список диалогов (собеседников).

// body: { "bot_tg_id":"…"?, "limit":50, "offset":0 }
// resp: { "dialogs": [ { bot_tg_id, user_tg_id, username, source, related_chat_peer_id, last_message_at } ] }
POST/private-dialogs/messages

Сообщения одного диалога.

// body: { "bot_tg_id":"…", "user_tg_id":"…", "from_tg_message_id":null?, "to_tg_message_id":null? }
// resp: { "dialog_info":{…}, "messages":[ { sender:{type:"bot|user",tg_id}, tg_message_id, text, entities:[], sent_at, received_at } ] }
POST/private-dialogs/messages/feed

Лента новых сообщений по окну времени сохранения (для поллинга входящих).

// body: { "stored_after":<ts>, "stored_before":<ts>, "bot_tg_ids":["…"]?, "limit":1000, "offset":0 }
// resp: { "messages":[ { bot_tg_id, user_tg_id, stored_at, sender, tg_message_id, text, entities, sent_at, received_at } ] }
TG Manager Gateway API · Bearer-token · telegramilti.com