xaxumessageAPI
Начало

Авторизация

Каждый запрос к /v1 подписывается API-ключом клиента. Ключ выдаёт оператор платформы, он действует, пока клиент активен.

API-ключ

Передайте ключ в заголовке Authorization со схемой Bearer — или в заголовке X-API-Key. Ключ начинается с xm_.

curl https://msg.xaxu.am/v1/me -H "Authorization: Bearer xm_..."
# или
curl https://msg.xaxu.am/v1/me -H "X-API-Key: xm_..."
TypeScript / Node.js
const res = await fetch('https://msg.xaxu.am/v1/accounts', {
  headers: { Authorization: `Bearer ${process.env.XM_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const { accounts } = await res.json();
ОтветКогда
401 unauthorized — API key requiredключ не передан
401 unauthorized — Invalid API keyключ неверный, перевыпущен или клиент приостановлен оператором
404 not_foundобъект не существует или принадлежит другому клиенту — чужие данные неотличимы от несуществующих

Как хранить ключ

  • Ключ — только на вашем сервере (переменная окружения, хранилище секретов). Никогда не кладите его в браузер, мобильное приложение или репозиторий.
  • Ключ показывается один раз при выдаче; на платформе хранится только его хэш — восстановить старый ключ нельзя.
  • Утёк или потерялся ключ — попросите оператора перевыпустить его. Старый ключ перестаёт работать сразу же.
  • Ключом можно делать всё с вашими номерами (отправлять, читать переписку, удалять номера). Выдавайте его только своим серверам.

Доступ по IP

Кроме ключа API принимает запросы только с разрешённых IP-адресов. Запрос с другого адреса получит 403 от веб-сервера ещё до проверки ключа. Новый адрес добавляет оператор.

Подпись событий

События, которые шлюз отправляет вам, подписаны отдельным секретом вебхука (HMAC-SHA256). Как проверить подпись — в разделе Вебхуки.

Доступ оператора

Методы /admin/* (клиенты, номера всех клиентов, цены, диагностика) доступны только оператору платформы: по ADMIN_TOKEN или из веб-консоли /ui/. Их описание — в разделе «Оператор», он открывается после входа в консоль.

Для разработчиков консоли: под сессией консоли (cookie) методы /v1/* тоже работают, если передать X-Tenant-Id: <id клиента> и на запись — X-CSRF-Token. Явно переданный, но неверный ключ сессией не «спасается».