Ищет чаты по названию или нику — как строка поиска в приложении мессенджера. В ответе — превью: по ним можно вступить или прочитать историю публичного чата без вступления.
| Запрос | POST /waInstance{idInstance}/searchChats/{apiTokenInstance} |
| Тело | JSON |
| Каналы | Telegram, MAX |
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
query |
string | да | название или ник; @ в начале можно оставить |
limit |
integer | нет | сколько результатов: 1–100, по умолчанию 20. MAX отдаёт не больше 50 |
types |
array или string | нет | только эти виды: group, channel, user, bot — массивом или через запятую |
Пример запроса
Найти каналы и группы про робототехнику:
curl
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/searchChats/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"query": "робототехника",
"limit": 10,
"types": [
"channel",
"group"
]
}'
Python
import os
import requests
BASE = f"{os.environ['GRATIO_URL']}/waInstance{os.environ['GRATIO_ID']}"
TOKEN = os.environ["GRATIO_TOKEN"]
url = f"{BASE}/searchChats/{TOKEN}"
payload = {"query": "робототехника", "limit": 10, "types": ["channel", "group"]}
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}/searchChats/${GRATIO_TOKEN}`;
const payload = { query: "робототехника", limit: 10, types: ["channel", "group"] };
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 . '/searchChats/' . getenv('GRATIO_TOKEN');
$payload = [
'query' => 'робототехника',
'limit' => 10,
'types' => ['channel', 'group'],
];
$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 в Telegram: сначала группа, где аккаунт уже состоит, потом публичный канал из глобального поиска:
{
"query": "робототехника",
"chats": [
{
"chatId": "-1001234567890", "type": "group", "title": "3А · Робототехника",
"username": "", "link": "", "description": "", "members": 14,
"joined": true, "joinRequest": false, "public": false, "verified": false,
"warning": "", "hasAvatar": true, "linkedChatId": ""
},
{
"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": ""
}
]
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
query |
string | запрос из параметра query |
chats |
array | превью найденных чатов. Поля превью — в статье getChatPreview |
В результатах поиска Telegram description и linkedChatId пустые. Полное превью с описанием даёт getChatPreview.
Ещё примеры
Только каналы
types можно передать строкой через запятую:
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/searchChats/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"query": "робототехника", "types": "channel"}'
По нику
Ник ищется так же, как название:
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/searchChats/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"query": "@robo_school", "limit": 1}'
Ошибки
| Код | code |
Когда | Что делать |
|---|---|---|---|
400 |
validation |
нет query; в types неизвестный вид |
исправить запрос |
400 |
query_too_short |
запрос пустой или слишком короткий | уточнить запрос |
400 |
not_authorized |
канал не на связи | проверить getStateInstance |
429 |
too_frequent |
больше 60 поисков, превью и разборов ссылок в час | повторить после Retry-After |
469 |
rate_limited |
площадка попросила паузу | повторить после Retry-After |
501 |
not_supported |
WhatsApp или почта | — |
Особенности каналов
- Telegram. Сначала идут чаты и контакты аккаунта, потом глобальный поиск. До 100 результатов.
- MAX. Только глобальный поиск — как строка поиска MAX: публичные каналы, группы, люди и боты. Свои чаты аккаунта отдельно не подмешиваются. До 50 результатов.
Что дальше
- getChatPreview — подробное превью чата.
- joinChat — вступить в найденный чат.
- Поиск и вступление: правила и лимиты — темп и отказы.
