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

sendDraft

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

Отправляет черновик как есть — с получателями, темой, текстом и вложениями. Черновик может сохранить ваше приложение методом saveDraft или сотрудник в почтовой программе. После отправки черновик удаляется, копия письма ложится в «Отправленные».

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

Параметры

Параметр Тип Обязательный Описание
folder + uid, idMessage или messageId да, одно из черновик — folder и uid из ответа saveDraft или из getMessages с folder: "drafts"
clientMessageId string нет ключ от дублей: повтор с тем же ключом не отправит черновик второй раз

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

Черновик из ответа saveDraft:

curl

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/sendDraft/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "folder": "drafts",
    "uid": 88,
    "clientMessageId": "send-draft-nov-1"
  }'

Python

import os
import requests

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

url = f"{BASE}/sendDraft/{TOKEN}"
payload = {"folder": "drafts", "uid": 88, "clientMessageId": "send-draft-nov-1"}
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}/sendDraft/${GRATIO_TOKEN}`;
const payload = { folder: "drafts", uid: 88, clientMessageId: "send-draft-nov-1" };
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 . '/sendDraft/' . getenv('GRATIO_TOKEN');
$payload = [
    'folder' => 'drafts',
    'uid' => 88,
    'clientMessageId' => 'send-draft-nov-1',
];

$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": "ecaf8b7f2dcf87cac8f4"}

Поля ответа

Поле Тип Описание
idMessage string id отправленного письма — тот же, что у черновика

Как отправляется черновик

  • Получатели — все из «Кому», «Копии» и скрытой копии черновика. Заголовок Bcc из письма убирается.
  • Дата письма — время отправки. Тема, текст, вложения и Message-ID — как в черновике.
  • Черновик удаляется насовсем, копия письма ложится в «Отправленные».
  • Указывайте письмо из «Черновиков»: метод отправит письмо из любой папки и удалит его там.

Ошибки

Код code Когда Что делать
400 validation не указан черновик добавить folder и uid
400 not_found черновика нет: его уже отправили или удалили проверить getMessages с folder: "drafts"
400 bad_address в черновике нет получателей в «Кому» или «Копии» сохранить черновик с получателями
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

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

Что дальше

  • saveDraft — сохранить черновик.
  • outgoingMessageStatus — недоставка и отчёт о прочтении.
  • getThread — письмо в цепочке после отправки.

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