Метод file_to отправляет получателю файл по публичной ссылке (документ, изображение, видео, аудио и т.п.) через подключённый канал связи. Файл должен открываться по URL без авторизации; сервер WAMM.chat перед отправкой проверяет доступность ссылки (ожидается ответ HTTP 200). Проверка номера или ID чата в мессенджере выполняется автоматически, как при отправке текстовых сообщений; отдельно вызывать проверку наличия мессенджера не обязательно. Если файла в открытом доступе нет, используйте отправку файлов в формате BASE64. Статус доставки можно получить методом получения статуса сообщения по возвращённому msg_id.

При нескольких запросах подряд сообщения ставятся в очередь с интервалом около 8–12 секунд между отправками. На тестовых тарифах действует ограничение — не более 30 исходящих сообщений по API в сутки (включая текст и файлы).


Поддерживаемые мессенджеры

Метод доступен для каналов: WhatsApp, MAX Personal, Telegram Personal, Telegram Bot.

Для Telegram Bot и MAX Bot получатель должен уже быть в контактах WAMM.chat (новый диалог через API без существующего контакта не создаётся). Каналы VK, Avito и другие типы через этот метод не отправляют файлы.


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

GET https://wamm.chat/api2/file_to/{token}/?phone={phone}&url={url}

или

GET https://wamm.chat/api2/file_to/{token}/{phone}/{url}

Параметры запроса
ПараметрТипОбязательныйОписание
tokenstringДаAPI-токен канала из раздела «Настройки > Управление > API»
phonestringДаНомер в международном формате (например, 79001234567). Для Telegram — ID чата или никнейм; для MAX — ID чата
urlstringДаПубличная ссылка на файл (http:// или https://), доступная без авторизации. Передавайте через urlencode. Сервер должен отдавать файл с кодом 200
file_namestringНетИмя файла для получателя. Если не указано — берётся из URL. Недопустимые символы и расширения .php, .sh удаляются
quote_msg_idintegerНетID сообщения в WAMM.chat (msg_id из ответа отправки), на которое отправляется ответ с файлом

Ответ при успехе
{"err":0,"msg_id":1234567}

msg_id — идентификатор сообщения в WAMM.chat; используйте его для проверки статуса или цитирования.


Возможные ошибки
Код ошибкиОписание
token failНеверный или неактивный API-токен
acc not authorizedКанал не авторизован или не готов к отправке
phone failНекорректный номер или идентификатор получателя
no WhatsApp on the numberНа номере нет WhatsApp (канал WhatsApp)
no Account on the numberНет аккаунта в мессенджере на указанном идентификаторе (Telegram, MAX и др.)
phone not checked for WhatsApp, please retryНе удалось проверить номер для WhatsApp — повторите запрос
phone not checked, please retryНе удалось проверить идентификатор — повторите запрос
url failПустая ссылка, нет http:// / https:// или файл недоступен по URL
quote_msg_id fail, not foundСообщение для цитирования не найдено
chat bannedЧат с получателем заблокирован в WAMM.chat
Limit 30 send messages per 1 day on TEST accountsПревышен дневной лимит отправки на тестовом тарифе

Примеры использования
function sendFile($token, $phone, $fileUrl, $fileName = null, $quoteMsgId = null) {
    $params = [
        'phone' => $phone,
        'url'   => $fileUrl,
    ];
    if ($fileName !== null) {
        $params['file_name'] = $fileName;
    }
    if ($quoteMsgId !== null) {
        $params['quote_msg_id'] = $quoteMsgId;
    }

    $url = 'https://wamm.chat/api2/file_to/' . rawurlencode($token) . '/?' . http_build_query($params);

    $response = file_get_contents($url);
    if ($response === false) {
        throw new RuntimeException('Не удалось выполнить запрос к API');
    }

    $json = json_decode($response, true);
    if (!is_array($json) || !array_key_exists('err', $json)) {
        throw new RuntimeException('Некорректный ответ API');
    }

    if ($json['err'] === 0 && isset($json['msg_id'])) {
        return (int) $json['msg_id'];
    }

    throw new RuntimeException('Ошибка API: ' . $json['err']);
}

$msgId = sendFile(
    'YOUR_TOKEN',
    '79001234567',
    'https://example.com/files/document.pdf',
    'document.pdf'
);
echo 'Файл поставлен в очередь, msg_id: ' . $msgId;