Перейти до вмісту

API шлюзу повідомлень

Єдиний API для всіх каналів повідомлень

Надсилайте повідомлення у WhatsApp Business, SMS, Telegram, Messenger, Instagram і TikTok через один REST-ендпоінт. Передоплата, оплата за кожне вихідне повідомлення, вебхуки про доставку та тестовий режим.

Від
0,0003 $
за вихідне повідомлення
За реєстрацію
100
безкоштовних повідомлень
Зобов’язання
Немає
передоплата, без контракту
curl https://api.omnimessage.co/v1/messages \
  -H "Authorization: Bearer om_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1042-shipped" \
  -d '{
    "channel": "ch_7Hq2mN5vB8cX1zL0pK3j",
    "to": "+971501234567",
    "type": "text",
    "text": { "body": "Your order #1042 has shipped." },
    "reference": "order-1042"
  }'
202 Accepted
{
  "id": "msg_2b1Xw9aQ3rT8yU0pL4kZ",
  "object": "message",
  "mode": "live",
  "channel_id": "ch_7Hq2mN5vB8cX1zL0pK3j",
  "channel_type": "whatsapp",
  "direction": "outbound",
  "to": "+971501234567",
  "from": "+971800123456",
  "type": "text",
  "content": {
    "text": { "body": "Your order #1042 has shipped." }
  },
  "status": "queued",
  "error": null,
  "reference": "order-1042",
  "metadata": {},
  "billing": {
    "source": "wallet",
    "amount_micros": 1000,
    "package_grant_id": null,
    "refunded": false
  },
  "created_at": "2026-10-05T09:30:00.000Z",
  "sent_at": null,
  "delivered_at": null,
  "read_at": null,
  "failed_at": null
}
  • Типи каналів7 за одним ендпоінтом
  • Типи повідомлень9: від тексту до інтерактивних списків
  • Ціна від0,0003 $ за вихідне повідомлення
  • Ліміт запитів100 запитів на секунду на ключ
  • Розмір пакетного запитуДо 100 повідомлень в одному запиті
  • Повторні спроби вебхуків8, з інтервалом, що зростає від 30 секунд до 24 годин
  • Вікно ідемпотентності24 години
  • Тестовий режимБезкоштовно, канал не потрібен
  • Повідомлення з помилкоюКошти повертаються автоматично
  • Вхідні повідомленняБезкоштовно

Канали

Сім типів каналів, один формат запиту

Підключайте відправників, які у вас уже є. Кожен стає ідентифікатором каналу, який ви передаєте на той самий ендпоінт, і кожен повертає однакові статуси.

Як це працює

Від реєстрації до доставленого повідомлення за чотири кроки

Жодних дзвінків із відділом продажів і мінімальних зобов’язань. Перший виклик API в тестовому режимі можна зробити за хвилину після створення акаунта.

  1. Крок 01

    Створіть акаунт

    Зареєструйтеся, підтвердьте електронну пошту і створіть API-ключ у консолі. Тестові ключі працюють одразу, ще до підключення каналів.

  2. Крок 02

    Підключіть канал

    Увійдіть через Facebook або TikTok у консолі, щоб підключити номер WhatsApp, Сторінку чи бізнес-акаунт. Бота Telegram або номер Twilio додайте за допомогою їхніх облікових даних — у консолі або запитом POST /v1/channels.

  3. Крок 03

    Надсилайте через один ендпоінт

    POST /v1/messages приймає ідентифікатор каналу, одержувача та типізований об’єкт із вмістом. Формат запиту однаковий для всіх каналів.

  4. Крок 04

    Відстежуйте кожну доставку

    Підписані вебхуки повідомляють про статуси «надіслано», «доставлено», «прочитано» та «помилка». Та сама історія доступна в консолі та за запитом GET /v1/messages.

Типи повідомлень

Що надсилаєте, те й бачить одержувач

Кожне повідомлення має тип і об’єкт із вмістом під ключем цього типу. Виберіть тип, щоб побачити тіло запиту поруч із повідомленням, яке він створює.

POST /v1/messages
{
  "channel": "ch_7Hq2mN5vB8cX1zL0pK3j",
  "to": "+971501234567",
  "type": "text",
  "text": {
    "body": "Ваше замовлення #1042 відправлено. Відстежити його можна тут: https://example.com/t/1042",
    "preview_url": true
  },
  "reference": "order-1042"
}

Звичайний текст, який приймають усі типи каналів. Установіть preview_url, щоб канал показав попередній перегляд посилання.

КаналиWhatsApp Business, SMS, SMS OTP, Telegram, Messenger, Instagram і TikTok

Консоль

Консоль для всього, що не є кодом

Створюйте ключі, підключайте канали, шукайте в журналі повідомлень, повторюйте доставки вебхуків і керуйте оплатою. Усе, що показує консоль, доступне й через API.

Огляд. Баланс гаманця, залишок кредитів пакетів і обсяг вихідних повідомлень за останні 30 днів — окремо для кожного акаунта й режиму. Екрани на цій сторінці показано з демонстраційними даними.
Журнал повідомлень. Фільтруйте за каналом, статусом, одержувачем або власним референсом і відкривайте будь-яке повідомлення, щоб побачити історію статусів і суму списання.
Оплата. Поповнюйте гаманець, купуйте пакети, налаштовуйте автопоповнення та завантажуйте квитанції. Для кредитів пакетів видно залишок і термін дії.

Ціни

Платіть за кожне повідомлення або купуйте повідомлення оптом

Поповніть передоплачений гаманець на суму від 10 $ і платіть за кожне повідомлення за ціною відповідного каналу або купіть пакет кредитів повідомлень для великих обсягів на найдорожчих каналах.

10 тис. повідомлень

8 $

0,0008 $ за повідомлення

  • Вихідних повідомлень: 10 000
  • Діє 3 місяці з моменту покупки
  • Діє для всіх типів каналів
Почати з пакета «10 тис.»

100 тис. повідомлень

Рекомендуємо

60 $

0,0006 $ за повідомлення

  • Вихідних повідомлень: 100 000
  • Діє 6 місяців з моменту покупки
  • Діє для всіх типів каналів
Почати з пакета «100 тис.»

1 млн повідомлень

400 $

0,0004 $ за повідомлення

  • Вихідних повідомлень: 1 000 000
  • Діє 12 місяців з моменту покупки
  • Діє для всіх типів каналів
Почати з пакета «1 млн»

Оплата за фактом

Ціна за вихідне повідомлення за фактом за типами каналів, у доларах США
КаналЗа повідомлення
WhatsApp Business0,001 $
SMS0,0005 $
SMS OTP0,0005 $
Telegram0,0003 $
Messenger0,0005 $
Instagram0,0005 $
TikTok0,0005 $

Що входить у ціну

  • ОплачуєтьсяВихідні повідомлення, прийняті API, — у момент прийняття.
  • БезкоштовноВхідні повідомлення, повідомлення в тестовому режимі, вебхуки та консоль.
  • ПовертаєтьсяБудь-яке повідомлення, що завершилося помилкою, — у той пакет або гаманець, з якого його було оплачено.
  • ОкремоПлата, яку Meta, оператори зв’язку чи інші провайдери стягують за сам канал.

Зручність для розробників

Інтегруйте один раз — і більше не повертайтеся

Підписані вебхуки, безпечні повторні запити, пісочниця, що поводиться як продакшн, і помилки, за якими можна розгалужувати логіку.

Вебхуки, які можна перевірити

Кожну доставку підписано за допомогою HMAC-SHA256 від часової позначки та сирого тіла запиту; підпис передається в заголовку OmniMessage-Signature. Дайте будь-яку відповідь 2xx протягом 10 секунд. Невдалі доставки повторюються вісім разів з інтервалом, що зростає від 30 секунд до 24 годин.

verify-signature.js
import { createHmac, timingSafeEqual } from 'node:crypto';

// header is "t=<unix seconds>,v1=<hex hmac-sha256>"
export function verifySignature(rawBody, header, secret) {
  const parts = header.split(',').map((part) => part.split('='));
  const { t, v1 = '' } = Object.fromEntries(parts);

  const expected = createHmac('sha256', secret)
    .update(`${t}.${rawBody}`)
    .digest('hex');

  const fresh = Math.abs(Date.now() / 1000 - Number(t)) < 300;
  const matches =
    v1.length === expected.length &&
    timingSafeEqual(Buffer.from(v1), Buffer.from(expected));

  return fresh && matches;
}
Подія message.delivered
{
  "id": "evt_8Kd2pQ7wN4xB1zR6mT3c",
  "object": "event",
  "type": "message.delivered",
  "mode": "live",
  "created_at": "2026-10-05T09:30:02.900Z",
  "data": {
    "object": {
      "id": "msg_2b1Xw9aQ3rT8yU0pL4kZ",
      "object": "message",
      "status": "delivered",
      "reference": "order-1042",
      "delivered_at": "2026-10-05T09:30:02.871Z"
    }
  }
}

Тестовий режим, який нічого не коштує

Тестові ключі працюють із вбудованими каналами-пісочницями, тож підключати нічого не потрібно. Останні цифри одержувача визначають імітований результат, а ваші вебхуки спрацьовують так само, як у продакшні.

Запит у пісочниці, кінцевий статус — «прочитано»
curl https://api.omnimessage.co/v1/messages \
  -H "Authorization: Bearer om_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "ch_test_whatsapp",
    "to": "+971501230002",
    "type": "text",
    "text": { "body": "Hello from the sandbox" }
  }'

Помилки з типом і кодом

Кожна відповідь, відмінна від 2xx, має однакове тіло: type — клас помилки, стабільний code для розгалуження логіки, параметр param, що спричинив помилку (якщо такий є), і request_id для звернення до підтримки.

402 Payment Required
{
  "error": {
    "type": "billing_error",
    "code": "insufficient_balance",
    "message": "Not enough wallet balance or package credits.",
    "request_id": "req_5Vn1cH8jL3qW6yD9sF2k",
    "doc_url": "https://omnimessage.co/docs/errors#insufficient_balance"
  }
}
  • Ідемпотентні POST-запити

    Додайте заголовок Idempotency-Key, і повторний запит протягом 24 годин поверне збережену відповідь із Idempotent-Replayed: true — без повторного надсилання та списання.

  • Передбачувані ліміти

    100 запитів на секунду на ключ для POST /v1/messages і 20 — для решти ендпоінтів. Кожна відповідь містить RateLimit-Remaining, а відповідь 429 — Retry-After.

  • Пакетне надсилання

    POST /v1/messages/batch приймає до 100 повідомлень. Кожен елемент приймається, відхиляється та оплачується окремо, а відповідь 207 повідомляє результати за індексами.

  • Ключі з обмеженими дозволами

    Надавайте кожному ключу лише потрібні дозволи, наприклад messages:write або billing:read, і обмежуйте його списком дозволених IP-адрес.

Запитання

Перш ніж інтегрувати

Тут короткі відповіді. Докладні — у документації.

Чи потрібен мені власний номер WhatsApp, бот або номер для SMS?

Так. OmniMessage — шлюз, до якого ви підключаєте власні канали: свій номер WhatsApp Cloud API, бота Telegram, номер Twilio чи акаунт у соцмережі — і зберігаєте право власності на них. На сторінці каналів описано, що потрібно для кожного типу.

За що саме я плачу?

Одне списання за кожне вихідне повідомлення, прийняте API: кредит пакета, якщо він у вас є, а якщо ні — ціна повідомлення для цього типу каналу з гаманця. Вхідні повідомлення та повідомлення в тестовому режимі безкоштовні, а кошти за повідомлення, що завершилося помилкою, повертаються автоматично.

Чи входить у ціну плата Meta, операторів зв’язку або провайдерів?

Ні. Плата за шлюз покриває API, відстеження доставки, вебхуки та консоль. Плата, яку Meta, Twilio чи інший провайдер стягує за сам канал, залишається між вами та цим провайдером.

Як тестувати, не надсилаючи справжніх повідомлень?

Використовуйте ключ, що починається з om_test_. У кожному акаунті є канал-пісочниця для кожного типу, наприклад ch_test_whatsapp. Нічого не доставляється і не оплачується, а статуси імітуються: для одержувача, що закінчується на 0000, повідомлення завершується помилкою, на 0001 — залишається надісланим, на 0002 — ще й прочитується, а в решті випадків доставляється приблизно за дві секунди.

Що буде, коли баланс закінчиться?

API відповість 402 insufficient_balance і нічого не поставить у чергу, тож заборгованості заднім числом у вас не виникне. Можна підписатися на подію balance.low або ввімкнути автопоповнення, щоб гаманець поповнювався, щойно баланс опуститься нижче вибраного вами порога.

Чи потрібен SDK?

Ні. API — це JSON поверх HTTPS з автентифікацією за bearer-токеном, тож підійде будь-який HTTP-клієнт. У документації є приклади для cURL, Node, Python і PHP.

Надішліть перше повідомлення в тестовому режимі вже сьогодні

Створіть акаунт, скопіюйте тестовий ключ і викличте API ще до підключення першого каналу. Кожен новий акаунт отримує 100 безкоштовних повідомлень.