Пересылает письмо, как кнопка «Переслать» в почтовой программе: ваш текст сверху, под ним — шапка и текст письма, вложения письма — с ним. С asAttachment: true письмо уходит целиком файлом .eml. Пересылка — всегда новая цепочка с темой «Fwd: …».
| Запрос | POST /waInstance{idInstance}/forwardEmail/{apiTokenInstance} |
| Тело | JSON |
| Каналы | почта |
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
folder + uid, idMessage или messageId |
да, одно из | письмо, которое пересылаете, — см. Почта через API | |
to |
array, string | да | кому переслать: адрес, список или строка через запятую |
message |
string | нет | ваш текст над пересылаемым письмом |
subject |
string | нет | своя тема вместо «Fwd: …» |
cc, bcc |
array, string | нет | копия и скрытая копия |
files |
array | нет | ещё вложения: [{"urlFile": "…", "fileName": "…"}] |
asAttachment |
boolean | нет | true — письмо целиком файлом .eml. По умолчанию false |
signature |
string | нет | подпись; "" — без подписи. Не задана — emailSignature |
chatId |
string | нет | адрес собеседника — если письмо указано по idMessage |
clientMessageId |
string | нет | ключ от дублей |
Пример запроса
Письмо Марии — директору, с комментарием:
curl
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/forwardEmail/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"idMessage": "7877cd439c05bc16617b",
"chatId": "maria@client.ru",
"to": [
"director@school.ru"
],
"message": "Новая запись на пробное — посмотрите анкету.",
"clientMessageId": "fwd-1532-boss"
}'
Python
import os
import requests
BASE = f"{os.environ['GRATIO_URL']}/waInstance{os.environ['GRATIO_ID']}"
TOKEN = os.environ["GRATIO_TOKEN"]
url = f"{BASE}/forwardEmail/{TOKEN}"
payload = {
"idMessage": "7877cd439c05bc16617b",
"chatId": "maria@client.ru",
"to": ["director@school.ru"],
"message": "Новая запись на пробное — посмотрите анкету.",
"clientMessageId": "fwd-1532-boss",
}
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}/forwardEmail/${GRATIO_TOKEN}`;
const payload = {
idMessage: "7877cd439c05bc16617b",
chatId: "maria@client.ru",
to: ["director@school.ru"],
message: "Новая запись на пробное — посмотрите анкету.",
clientMessageId: "fwd-1532-boss",
};
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 . '/forwardEmail/' . getenv('GRATIO_TOKEN');
$payload = [
'idMessage' => '7877cd439c05bc16617b',
'chatId' => 'maria@client.ru',
'to' => ['director@school.ru'],
'message' => 'Новая запись на пробное — посмотрите анкету.',
'clientMessageId' => 'fwd-1532-boss',
];
$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:
{
"idMessage": "3cec5ab4fae20395e2ca",
"emailMessageData": {
"subject": "Fwd: Re: Запись на пробное",
"messageId": "gr.4bijewwctbktco4bzxr3yx3a5j@school.ru",
"threadId": "3cec5ab4fae20395e2ca",
"inReplyTo": null,
"to": ["director@school.ru"],
"cc": [],
"bcc": [],
"refused": {}
}
}
Поля — как у sendEmail.
Как выглядит пересылка
Без asAttachment под вашим текстом и подписью идёт шапка пересылаемого письма и его текст:
Новая запись на пробное — посмотрите анкету.
---------- Пересылаемое сообщение ----------
От: Мария <maria@client.ru>
Дата: 12.10.2026, 21:07
Тема: Re: Запись на пробное
Кому: info@school.ru
Да, в субботу удобно. Анкету приложила.
--
Мария Иванова
+7 999 123-45-67
пн, 12 окт. 2026 г. в 20:07, Школа робототехники <info@school.ru>:
> Мария, есть место в субботу на 11:00. Подойдёт?
Текст письма пересылается целиком, с подписью и цитатой. Вложения письма — «Анкета.pdf» — уходят вложениями пересылки. Есть html-версия — она пересылается тоже.
Ещё примеры
Целиком файлом
Письмо уходит вложением .eml со всеми заголовками — удобно для разбора в другой системе:
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/forwardEmail/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"folder": "inbox",
"uid": 1540,
"to": "support@school.ru",
"asAttachment": true
}'
Ошибки
| Код | code |
Когда | Что делать |
|---|---|---|---|
400 |
validation |
нет to; не указано письмо |
исправить запрос |
400 |
bad_address |
адрес в to, cc или bcc не распознан |
исправить адрес |
400 |
not_found |
письма нет | указать folder и uid из getMessages |
400 |
folder_not_found |
нет папки folder |
проверить getFolders |
400 |
too_large, rejected, auth_failed и другие |
отказ почты | см. sendEmail |
402 |
payment_required |
канал на паузе за неоплату | продлить канал в кабинете |
409 |
idempotency_conflict |
тот же clientMessageId с другой пересылкой |
новый ключ для новой пересылки |
429 |
daily_limit, too_frequent |
предел ящика за сутки или почта просит подождать | повторить после Retry-After |
501 |
not_supported |
канал — не почта | вызвать у канала «Почта» |
503 |
outcome_unknown |
связь оборвалась посреди отправки | повторить с тем же clientMessageId |
Общие правила — в статье Ответы и ошибки.
Что дальше
- replyEmail — ответить на письмо.
- getEmailRaw — забрать письмо файлом себе.
- forwardMessages — пересылка общим методом, как в мессенджерах.
