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

searchMessages

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

Ищет письма в одной папке. Все заданные условия действуют одновременно. Ответ — как у getMessages: конверты от свежих к старым, страницами по nextBeforeUid.

Запрос POST /waInstance{idInstance}/searchMessages/{apiTokenInstance}
Тело JSON
Каналы почта

Параметры

Параметр Тип Обязательный Описание
folder string нет где искать: роль, имя на сервере или название. По умолчанию — «Входящие»
from string нет отправитель: адрес или его часть — maria@client.ru, @client.ru
to string нет получатель в «Кому»: адрес или его часть
cc string нет получатель в «Копии»: адрес или его часть
subject string нет тема содержит
text string нет заголовки или тело содержат
body string нет тело содержит
header object нет любые заголовки: {"X-Order": "1532"} — заголовок содержит значение
since string, integer нет с этой даты: ГГГГ-ММ-ДД или время Unix
before string, integer нет до этой даты, не включая её
seen boolean нет true — прочитанные, false — непрочитанные
unseen boolean нет true — только непрочитанные, как seen: false
flagged boolean нет отмечены флажком или нет
answered boolean нет отвечены или нет
larger integer нет больше этого размера, байт
smaller integer нет меньше этого размера, байт
limit integer нет писем на странице, 1–500. По умолчанию 50
beforeUid integer нет следующая страница: nextBeforeUid из прошлого ответа
  • Ищет сервер почты: подстрока, без учёта регистра. Даты сравниваются с днём, когда письмо легло в ящик.
  • Поиск — в одной папке. Во всём ящике Gmail ищите в folder: "all", у остальной почты — по папкам по очереди.
  • Имя заголовка в header — латиница, цифры и дефис.
  • Без условий ответ такой же, как у getMessages.

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

Письма Марии с «пробное» в теме с 1 октября:

curl

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/searchMessages/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "folder": "inbox",
    "from": "maria@client.ru",
    "subject": "пробное",
    "since": "2026-10-01"
  }'

Python

import os
import requests

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

url = f"{BASE}/searchMessages/{TOKEN}"
payload = {
    "folder": "inbox",
    "from": "maria@client.ru",
    "subject": "пробное",
    "since": "2026-10-01",
}
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}/searchMessages/${GRATIO_TOKEN}`;
const payload = {
  folder: "inbox",
  from: "maria@client.ru",
  subject: "пробное",
  since: "2026-10-01",
};
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 . '/searchMessages/' . getenv('GRATIO_TOKEN');
$payload = [
    'folder' => 'inbox',
    'from' => 'maria@client.ru',
    'subject' => 'пробное',
    'since' => '2026-10-01',
];

$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:

{
  "folder": "INBOX",
  "uidValidity": 1700000000,
  "total": 1,
  "messages": [
    {
      "idMessage": "c62b698304229a98aad3",
      "folder": "INBOX",
      "uid": 1532,
      "uidValidity": 1700000000,
      "chatId": "maria@client.ru",
      "messageId": "CAF1xQm7v2k@mail.gmail.com",
      "threadId": "c62b698304229a98aad3",
      "inReplyTo": null,
      "references": [],
      "timestamp": 1791823658,
      "internalDate": 1791823661,
      "from": {"address": "maria@client.ru", "name": "Мария"},
      "to": [{"address": "info@school.ru", "name": ""}],
      "cc": [],
      "replyTo": [],
      "subject": "Запись на пробное",
      "flags": ["\\Seen"],
      "seen": true,
      "flagged": false,
      "answered": false,
      "draft": false,
      "size": 4821,
      "hasAttachments": false
    }
  ],
  "nextBeforeUid": null
}

Поля — как у getMessages, конверт письма — в статье Почта через API.

Ещё примеры

По своему заголовку

Письма, которые ваша система отправила с заголовком X-Order:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/searchMessages/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"folder": "sent", "header": {"X-Order": "1532"}}'

Непрочитанные без ответа

Письма с домена клиента, на которые ещё не ответили:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/searchMessages/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"from": "@client.ru", "unseen": true, "answered": false}'

Большие письма

Письма больше 10 МБ в «Архиве»:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/searchMessages/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"folder": "archive", "larger": 10485760}'

Ошибки

Код code Когда Что делать
400 validation header — не объект; число или дата в неверном виде исправить запрос
400 bad_query имя заголовка в header не из латиницы, цифр и дефиса исправить имя
400 folder_not_found нет такой папки проверить getFolders
400 mail_error сервер почты не выполнил поиск см. message — там ответ сервера
400 not_authorized ящик не подключён подключить ящик: connectMailbox
501 not_supported канал — не почта вызвать у канала «Почта»

Общие правила — в статье Ответы и ошибки.

Что дальше

  • getEmail — письмо целиком.
  • getThread — вся цепочка найденного письма.
  • moveMessages — разложить найденные письма по папкам.

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