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

setSettings

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

Меняет настройки канала: адрес вебхука, токен для него и какие уведомления присылать. Передайте только поля, которые меняете, — остальные останутся как есть. Настройки действуют сразу, без переподключения.

Запрос POST /waInstance{idInstance}/setSettings/{apiTokenInstance}
Тело JSON
Каналы MAX, Telegram, WhatsApp, почта

Параметры

Параметр Тип Обязательный Описание
webhookUrl string нет адрес вебхука http(s) на публичном хосте. Пустая строка — без вебхука: уведомления ждут в очереди
webhookUrlToken string нет ваш секрет: Gratio передаёт его вебхуку в заголовке Authorization: Bearer …
incomingWebhook string нет "yes" или "no" — см. таблицу ниже
outgoingWebhook string нет то же
outgoingMessageWebhook string нет то же
outgoingAPIMessageWebhook string нет то же
stateWebhook string нет то же
incomingCallWebhook string нет то же
groupEventsWebhook string нет то же

Нужно хотя бы одно известное поле. Неизвестные поля Gratio пропускает.

Флаги уведомлений

Флаг Какие уведомления По умолчанию
incomingWebhook сообщения собеседников, их правки, удаления и реакции — incomingMessageReceived "yes"
outgoingWebhook статусы исходящих — outgoingMessageStatus "yes"
outgoingMessageWebhook свои сообщения, отправленные не через API: с телефона, из приложения площадки, из почтовой программы — outgoingMessageReceived "yes"
outgoingAPIMessageWebhook сообщения, отправленные через API, — outgoingAPIMessageReceived "yes"
stateWebhook смена состояния канала — stateInstanceChanged "yes"
incomingCallWebhook звонки и их ход — incomingCall, outgoingCall, callStateChanged "yes"
groupEventsWebhook события групп: состав, админы, название, удаление — groupEvent "yes"

Уведомление syncGap приходит всегда: флага у него нет.

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

Включить вебхук с токеном:

curl

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/setSettings/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "webhookUrl": "https://example.ru/gratio/hook",
    "webhookUrlToken": "s3cr3t-hook-token"
  }'

Python

import os
import requests

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

url = f"{BASE}/setSettings/{TOKEN}"
payload = {
    "webhookUrl": "https://example.ru/gratio/hook",
    "webhookUrlToken": "s3cr3t-hook-token",
}
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}/setSettings/${GRATIO_TOKEN}`;
const payload = {
  webhookUrl: "https://example.ru/gratio/hook",
  webhookUrlToken: "s3cr3t-hook-token",
};
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 . '/setSettings/' . getenv('GRATIO_TOKEN');
$payload = [
    'webhookUrl' => 'https://example.ru/gratio/hook',
    'webhookUrlToken' => 's3cr3t-hook-token',
];

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

{"saveSettings": true}

С этой минуты уведомления идут на https://example.ru/gratio/hook, а receiveNotification отвечает 400 webhook_set.

Ещё примеры

Только входящие

Не присылать статусы и свои сообщения:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/setSettings/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "outgoingWebhook": "no",
    "outgoingMessageWebhook": "no",
    "outgoingAPIMessageWebhook": "no"
  }'

Вернуться к очереди

Пустой адрес снимает вебхук — уведомления снова забирают из очереди:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/setSettings/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"webhookUrl": ""}'

Настройки ящика

У канала почты — свои ключи с префиксом email:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/setSettings/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "emailFromName": "Школа робототехники",
    "emailSkipBulk": "yes"
  }'

Ошибки

Код code Когда Что делать
400 validation в теле нет ни одного известного поля; неверное значение ключа почты проверить имена и значения полей
400 bad_url webhookUrl ведёт во внутреннюю сеть: частный или локальный адрес дать публичный адрес

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

Особенности каналов

Почта. Тем же методом настраиваются папки для уведомлений, имя отправителя, подпись, «ответить всем», цитата, правила заявок с форм: ключи emailFolders, emailSkipBulk, emailFromName, emailSignature, emailSubject, emailReplyAll, emailQuote, emailHtml, emailAliases, emailForms. Подробно — в статье Настройки ящика. У других каналов ключи email… пропускаются.

Что дальше

  • Вебхук — заголовки, ответ и повторы доставки.
  • subscriptions — несколько адресов для одного канала и подпись уведомлений.
  • getSettings — проверить, что сохранилось.

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