Перейти к содержанию

CheckAccount#

Test Postman Apidog

Метод проверяет наличие аккаунта мессенджера Telegram на номере телефона.

Для метода используются ограничения на частоту запросов в секунду.

Обратите внимание!

Система фиксирует, если часто отправляются запросы на проверку существования аккаунта по номеру телефона. Особенно это подозрительно, когда многократно проверяется один и тот же номер, которого не существует. В результате мессенджер может наложить временные ограничения.

Запрос#

Для проверки наличия аккаунта мессенджера Telegram требуется выполнить запрос по адресу:

POST
{{apiUrl}}/waInstance{{idInstance}}/checkAccount/{{apiTokenInstance}}

Для получения параметров запроса apiUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.

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

Параметр Тип Обязательный Описание
phoneNumber integer Нет* Номер телефона в международном формате (*обязательный, если не указан username)
username string Нет* Имя пользователя телеграм, которое начинается с символа @ (*обязательный, если не указан phoneNumber)
force boolean Нет Параметр определяет, нужно ли игнорировать кэш.
По умолчанию false - метод использует кэшированные данные.
При значении true игнорирует кэш и отправляет запрос напрямую на сервер Telegram.

Пример тела запроса#

{
    "username": "@username"
}
{
    "phoneNumber": 79876543210,
    "force": true
}

Ответ#

Поля ответа#

Поле Тип Описание
exist boolean Флаг наличия аккаунта Telegram на номере телефона
chatId string chatId пользователя Telegram на номере телефона
username string Уникальное публичное имя пользователя
phoneNumber integer Номер телефона в международном формате
fromCache boolean Если true - данные получены из кеша
Если false - напрямую с сервера Telegram

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

К номеру привязан Telegram аккаунт

{
    "exist": true,
    "chatId": "10000000",
    "username": "@username",
    "phoneNumber": 79876543210,
    "fromCache": true
}

У номера отсутствует Telegram аккаунт или номер скрыт настройками приватности

{
    "exist": false,
    "chatId": ""
}

Инстанс находится в статусе starting или notAuthorized

{
    "status": false,
    "reason": "instance is starting or not authorized"
}

Лимит запросов номера телефона методом

{
    "status": false,
    "data": {
        "status": "fail",
        "reason": "rate_limit_exceeded",
        "retryAfter": 11930619
    }
}

В запросе указаны и номер телефона, и юзернейм

{
    "status": false,
    "reason": "request should contain 'phoneNumber' or 'username'"
}

На аккаунт Telegram наложены ограничения по поиску и импорту контактов (код HTTP 469)

{
    "status": false,
    "reason": "Rate limited by messenger"
}

Требуется дождаться снятия ограничения. Telegram не раскрывает время ограничений, рекомендуется повторить запрос через несколько часов.

Сервера Telegram временно недоступны (код HTTP 500)

{
    "status": false,
    "reason": "Messenger is temporarily unavailable"
}

Рекомендуется повторить попытку через несколько минут.

Ошибки#

Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки

Код HTTP Идентификатор ошибки Описание
400 Bad Request
Validation failed
Ошибка валидации
400 Validation failed.
Details: Wrong format. 'phoneNumber' must contain only digits
Номер должен содержать только цифры
200 rate_limit_exceeded Сервер Telegram вернул ошибку из-за частых запросов на различные номера в течение нескольких минут. Рекомендуется приостановить проверки номеров на инстансе на 2 часа.
469 Rate limited by messenger На аккаунт Telegram наложены ограничения. Требуется дождаться снятия ограничения. Telegram не раскрывает время ограничений, рекомендуется повторить запрос через несколько часов
500 Messenger is temporarily unavailable Сервера Telegram временно недоступны. Рекомендуется повторить попытку через несколько минут

Примеры кода#

import requests

url = "{{apiUrl}}/waInstance{{idInstance}}/checkAccount/{{apiTokenInstance}}"

payload = {
    "phoneNumber": 79876543210
}

response = requests.post(url, json=payload)

print(response.text.encode('utf8'))
curl --location '{{apiUrl}}/waInstance{{idInstance}}/checkAccount/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data '{
    "phoneNumber": 79876543210
}'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/checkAccount/")
    .append({{apiTokenInstance}});

var headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

var jsonBody = "{\"phoneNumber\": 79876543210}";

var requestEntity = new HttpEntity<>(jsonBody, headers);

var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.POST, requestEntity, String.class);
System.out.println(response);
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/Instance").append({{idInstance}})
    .append("/checkAccount/")
    .append({{apiTokenInstance}});

var response = Unirest.post(requestUrl.toString())
    .header("Content-Type", "application/json")
    .body("{\"phoneNumber\": 79876543210}")
    .asString();

System.out.println(response);
Sub CheckAccount()
    Dim url As String
    Dim RequestBody As String
    Dim http As Object
    Dim response As String

    ' The apiUrl, idInstance and apiTokenInstance values are available in console, double brackets must be removed
    url = "{{apiUrl}}/waInstance{{idInstance}}/checkAccount/{{apiTokenInstance}}"

    ' chatId - is the number to check Telegram
    RequestBody = "{""phoneNumber"":"79876543210"}"

    Set http = CreateObject("MSXML2.XMLHTTP")

    With http
        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/json"
        .Send RequestBody
    End With

    response = http.responseText

    Debug.Print response

    ' Outputting the answer to the desired cell
    Range("A1").Value = response

    Set http = Nothing
End Sub