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

Шаг 2. Первый запрос

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

В этом шаге вы проверите, что канал на связи, и отправите сообщение со своего канала на свой личный телефон.

Что понадобится

  • ключ канала из Шаг 1. Подключите номер;
  • второй телефон или номер с тем же мессенджером — чтобы получить сообщение;
  • одно из: curl; Python 3.10+ с pip install requests; Node.js 18+; PHP 8 с модулем curl.

Примеры на Node.js используют await на верхнем уровне — сохраните файл с расширением .mjs. Примеры на curl — для bash и zsh (на Windows — Git Bash или WSL).

1. Задайте ключ в переменных окружения

Все примеры в справке берут ключ из трёх переменных. Задайте их один раз в терминале.

macOS, Linux, Git Bash:

export GRATIO_URL=https://api.gratio.net
export GRATIO_ID=7100000001
export GRATIO_TOKEN=ваш_apiTokenInstance

Windows PowerShell:

$env:GRATIO_URL = "https://api.gratio.net"
$env:GRATIO_ID = "7100000001"
$env:GRATIO_TOKEN = "ваш_apiTokenInstance"

Подставьте свои idInstance и apiTokenInstance из кабинета.

2. Проверьте канал

Метод getStateInstance отвечает, на связи ли номер:

curl

curl "$GRATIO_URL/waInstance$GRATIO_ID/getStateInstance/$GRATIO_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}/getStateInstance/{TOKEN}"
response = requests.get(url, 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}/getStateInstance/${GRATIO_TOKEN}`;
const response = await fetch(url);
console.log(response.status, await response.json());

PHP

<?php
$base = getenv('GRATIO_URL') . '/waInstance' . getenv('GRATIO_ID');
$url = $base . '/getStateInstance/' . getenv('GRATIO_TOKEN');

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 90,
]);
$response = json_decode(curl_exec($ch), true);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;
print_r($response);

Вы увидите:

{"stateInstance": "authorized"}

authorized — всё готово. starting — канал подключается, повторите через несколько секунд. notAuthorized — номер не привязан, вернитесь к шагу 1.

3. Отправьте сообщение

Замените 79991234567 на свой личный номер — тот, на который придёт сообщение. Формат — номер@c.us, 11 цифр без +:

curl

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/sendMessage/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "chatId": "79991234567@c.us",
    "message": "Привет! Это первое сообщение через Gratio API."
  }'

Python

import os
import requests

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

url = f"{BASE}/sendMessage/{TOKEN}"
payload = {
    "chatId": "79991234567@c.us",
    "message": "Привет! Это первое сообщение через Gratio API.",
}
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}/sendMessage/${GRATIO_TOKEN}`;
const payload = {
  chatId: "79991234567@c.us",
  message: "Привет! Это первое сообщение через Gratio API.",
};
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 . '/sendMessage/' . getenv('GRATIO_TOKEN');
$payload = [
    'chatId' => '79991234567@c.us',
    'message' => 'Привет! Это первое сообщение через Gratio API.',
];

$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);

Вы увидите ответ с id сообщения:

{"idMessage": "117428956522361912"}

…и сообщение на телефоне.

Если не получилось

Ответ Причина Что сделать
401 неверный idInstance или токен скопируйте ключ из кабинета заново; проверьте, что переменные заданы в этом же терминале
400 not_authorized номер не на связи проверьте статус в кабинете, привяжите номер
400 no_account на номере нет аккаунта в этом мессенджере возьмите номер, где мессенджер установлен
400 bad_phone номер не из 11–12 цифр уберите +, пробелы и скобки
429 слишком частые запросы повторите через столько секунд, сколько в Retry-After

В Telegram найти человека по номеру можно, только если он разрешил это в настройках приватности. Если не находится — напишите с личного телефона на подключённый аккаунт и ответьте ему по chatId из следующего шага.

Все коды — в статье Ответы и ошибки.

Что дальше

Отправлять умеете — научитесь принимать.

Шаг 3. Примите входящиеЗабрать входящее сообщение из очереди, подтвердить его и ответить — по шагам и готовым циклом на Python и Node.js.

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