Перейти к содержимому

getChatPreview

Обновлено 17 октября 2026

Возвращает превью чата: название, описание, число участников, можно ли читать без вступления и нужна ли заявка. Аккаунт при этом в чат не вступает.

Запрос POST /waInstance{idInstance}/getChatPreview/{apiTokenInstance}
Тело JSON
Каналы Telegram, MAX

Параметры

Передайте link или chatId:

Параметр Тип Обязательный Описание
link string одно из двух ссылка, ник или приглашение — форматы в таблице ниже
chatId string одно из двух id чата, например из searchChats
Площадка Что принимает link
Telegram @ник, t.me/ник, ссылка на пост t.me/ник/123, t.me/s/ник, ник.t.me, tg://resolve?domain=ник; приглашение t.me/+код, t.me/joinchat/код, tg://join?invite=код; пост закрытого канала t.me/c/<id>/<номер>
MAX @ник, max.ru/ник, приглашение max.ru/join/код

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

Превью публичного канала Telegram по ссылке:

curl

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/getChatPreview/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"link": "https://t.me/robo_school"}'

Python

import os
import requests

BASE = f"{os.environ['GRATIO_URL']}/waInstance{os.environ['GRATIO_ID']}"
TOKEN = os.environ["GRATIO_TOKEN"]

url = f"{BASE}/getChatPreview/{TOKEN}"
payload = {"link": "https://t.me/robo_school"}
response = requests.post(url, json=payload, timeout=60)
print(response.status_code, response.json())

Node.js

const { GRATIO_URL, GRATIO_ID, GRATIO_TOKEN } = process.env;
const base = `${GRATIO_URL}/waInstance${GRATIO_ID}`;

const url = `${base}/getChatPreview/${GRATIO_TOKEN}`;
const payload = { link: "https://t.me/robo_school" };
const response = await fetch(url, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(payload),
});
console.log(response.status, await response.json());

PHP

<?php
$base = getenv('GRATIO_URL') . '/waInstance' . getenv('GRATIO_ID');
$url = $base . '/getChatPreview/' . getenv('GRATIO_TOKEN');
$payload = ['link' => 'https://t.me/robo_school'];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 60,
]);
$response = json_decode(curl_exec($ch), true);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;
print_r($response);

Пример ответа

Ответ 200 OK:

{
  "chatId": "-1001987654321",
  "type": "channel",
  "title": "Робототехника для школьников",
  "username": "robo_school",
  "link": "https://t.me/robo_school",
  "description": "Конкурсы, наборы и идеи для занятий",
  "members": 2400,
  "joined": false,
  "joinRequest": false,
  "public": true,
  "verified": false,
  "warning": "",
  "hasAvatar": true,
  "linkedChatId": "-1001987654322"
}

Поля превью

Поле Тип Описание
chatId string или null id чата. null — Telegram не раскрывает адрес чата по приглашению до вступления; его вернёт joinChat
type string group, channel, user или bot
title string название или имя
username string публичный ник без @; нет ника — пустая строка
link string публичная ссылка или ссылка, по которой открыли
description string описание чата или «о себе»
members integer или null участников или подписчиков; null — площадка не сообщила
joined boolean аккаунт уже в чате. У людей и ботов — false
joinRequest boolean вступление по заявке: одобряет админ
public boolean историю можно читать без вступления — см. Поиск и вступление: правила и лимиты
verified boolean отметка площадки: в MAX — «официальный»
warning string Telegram: scam или fake — отметка Telegram; иначе пустая строка
hasAvatar boolean есть аватар — получите его через getAvatar по chatId
linkedChatId string Telegram: обсуждение канала или канал группы; иначе пустая строка

Ещё примеры

По приглашению Telegram

Аккаунта в чате нет — chatId будет null, вступить можно по той же ссылке:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/getChatPreview/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"link": "https://t.me/+AbCdEfGhIjKlMnOp"}'
{
  "chatId": null, "type": "group", "title": "Родители 3А", "username": "",
  "link": "https://t.me/+AbCdEfGhIjKlMnOp", "description": "", "members": 26,
  "joined": false, "joinRequest": true, "public": false, "verified": false,
  "warning": "", "hasAvatar": false, "linkedChatId": ""
}

В MAX

По приглашению MAX сразу отдаёт chatId и название:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/getChatPreview/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"link": "https://max.ru/join/AbCdEfGhIjKl"}'

Ошибки

Код code Когда Что делать
400 validation нет ни link, ни chatId добавить поле
400 bad_link ссылка или ник не этой площадки проверить ссылку
400 not_found чата нет или он закрыт —
400 invite_invalid приглашение недействительно или отозвано попросить новую ссылку
400 private Telegram: чат закрыт или аккаунт в нём заблокирован —
400 not_authorized канал не на связи проверить getStateInstance
429 too_frequent темп поиска и проверки приглашений повторить после Retry-After
469 rate_limited площадка попросила паузу повторить после Retry-After
501 not_supported WhatsApp или почта —

Особенности каналов

  • Telegram. Приглашение, по которому Telegram разрешает смотреть чат до вступления, приходит с public: true. Проверка приглашений t.me/+… — не больше 10 в час; ответ хранится 5 минут, поэтому превью и следующее за ним вступление тратят одну проверку.
  • MAX. warning и linkedChatId всегда пустые. У закрытой группы по приглашению members может быть null.

Что дальше

Была ли статья полезна?