Начать

REST · JSON · HTTPS

API System X для WhatsApp

Отправка и приём сообщений WhatsApp из вашей CRM, сайта или 1С. Статусы, вебхуки с подписью, ключи с правами.

English · https://app.system-x.asia/api/v1

Авторизация

Создайте ключ в кабинете: Настройки → API для разработчиков. Ключ показывается один раз. Права: «только отправка» или «полный» (с чтением переписки). Передавайте его заголовком:

HTTP
Authorization: Bearer sx_xxxxxxxx_…

Отправить сообщение — POST /v1/messages

curl
curl -X POST https://app.system-x.asia/api/v1/messages \
  -H "Authorization: Bearer sx_xxxxxxxx_…" \
  -H "Content-Type: application/json" \
  -d '{"to": "77011234567", "text": "Ваш заказ готов"}'
JavaScript
const r = await fetch("https://app.system-x.asia/api/v1/messages", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.SX_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ to: "77011234567", text: "Ваш заказ готов" }),
})
const data = await r.json()  // { id, to, status }
Python
import os, requests

r = requests.post("https://app.system-x.asia/api/v1/messages",
                  headers={"Authorization": f"Bearer {os.environ['SX_KEY']}"},
                  json={"to": "77011234567", "text": "Ваш заказ готов"}, timeout=15)
print(r.json())  # {'id': ..., 'to': ..., 'status': 'sent'}

Статус сообщения — GET /v1/messages/{id}

curl
curl https://app.system-x.asia/api/v1/messages/wamid.HBgM… -H "Authorization: Bearer sx_…"

Входящие (права «полный») — GET /v1/messages?since=2026-09-29T00:00:00+05:00

curl
curl "https://app.system-x.asia/api/v1/messages?since=2026-09-29T00:00:00%2B05:00" -H "Authorization: Bearer sx_…"

Ключ и лимит — GET /v1/me

curl
curl https://app.system-x.asia/api/v1/me -H "Authorization: Bearer sx_…"

Вебхуки

Укажите https-адрес в кабинете. На каждое событие придёт POST с JSON и заголовком X-SX-Signature: t=метка,v1=HMAC-SHA256(секрет, «метка.тело»). Отвечайте 2xx; при ошибке доставка повторяется до 5 раз с растущей паузой.

JSON
{
  "event": "message.incoming",
  "data": { "id": "wamid.HBgM…", "from": "77011234567", "text": "Здравствуйте", "at": "2026-09-29T10:15:00+05:00" }
}

Проверка подписи

Python
import hashlib, hmac, time

def verify(secret: str, body: bytes, header: str) -> bool:
    parts = dict(p.split("=", 1) for p in header.split(","))
    ts = int(parts["t"])
    if abs(time.time() - ts) > 300:
        return False
    mac = hmac.new(secret.encode(), f"{ts}.".encode() + body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(mac, parts["v1"])
JavaScript
import crypto from "node:crypto"

export function verify(secret, rawBody, header) {
  const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")))
  if (Math.abs(Date.now() / 1000 - Number(parts.t)) > 300) return false
  const mac = crypto.createHmac("sha256", secret).update(`${parts.t}.`).update(rawBody).digest("hex")
  return crypto.timingSafeEqual(Buffer.from(mac), Buffer.from(parts.v1))
}

Ошибки

401нет ключа, ключ неверный или отозван
402тариф API не подключён
403ключу не хватает прав
409нет подключённой линии WhatsApp
422неверный номер или текст
429лимит запросов или тарифа исчерпан

Лимиты и тарифы

120 запросов в минуту на ключ. Исходящие сообщения считаются по тарифу API: 1 000 — 2 900 ₸, 10 000 — 5 900 ₸, 50 000 — 8 900 ₸ в месяц; оплата с баланса организации. Сверх лимита — ответ 429.

↑