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"
}'{
"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
}Канали
Сім типів каналів, один формат запиту
Підключайте відправників, які у вас уже є. Кожен стає ідентифікатором каналу, який ви передаєте на той самий ендпоінт, і кожен повертає однакові статуси.
- 0,001 $WhatsApp BusinessШаблони, інтерактивні повідомлення та медіа з вашого власного номера Cloud API.Текст · Вкладення · Шаблон · Кнопки відповіді · Список · URL-кнопка · Геолокація · Контакти
- 0,0005 $SMSТекстові та мультимедійні повідомлення з вашого власного номера Twilio.Текст · Вкладення
- 0,0005 $SMS OTPСуто текстовий маршрут для одноразових кодів.Текст
- 0,0003 $TelegramПовідомлення від бота з кнопками, опитуваннями, геолокацією та медіа.Текст · Вкладення · Кнопки відповіді · Геолокація · Контакти · Опитування
- 0,0005 $MessengerРозмови з людьми, які пишуть на вашу Сторінку Facebook.Текст · Вкладення · Кнопки відповіді
- 0,0005 $InstagramОсобисті повідомлення для професійного акаунта Instagram.Текст · Вкладення · Кнопки відповіді
- 0,0005 $TikTokОсобисті повідомлення для бізнес-акаунта TikTok.Текст · Вкладення · Кнопки відповіді
- Підключайте власні каналиВаші номери та боти залишаються вашимиЩо потрібно для кожного каналу
Як це працює
Від реєстрації до доставленого повідомлення за чотири кроки
Жодних дзвінків із відділом продажів і мінімальних зобов’язань. Перший виклик API в тестовому режимі можна зробити за хвилину після створення акаунта.
- Крок 01
Створіть акаунт
Зареєструйтеся, підтвердьте електронну пошту і створіть API-ключ у консолі. Тестові ключі працюють одразу, ще до підключення каналів.
- Крок 02
Підключіть канал
Увійдіть через Facebook або TikTok у консолі, щоб підключити номер WhatsApp, Сторінку чи бізнес-акаунт. Бота Telegram або номер Twilio додайте за допомогою їхніх облікових даних — у консолі або запитом
POST /v1/channels. - Крок 03
Надсилайте через один ендпоінт
POST /v1/messagesприймає ідентифікатор каналу, одержувача та типізований об’єкт із вмістом. Формат запиту однаковий для всіх каналів. - Крок 04
Відстежуйте кожну доставку
Підписані вебхуки повідомляють про статуси «надіслано», «доставлено», «прочитано» та «помилка». Та сама історія доступна в консолі та за запитом
GET /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.
Ціни
Платіть за кожне повідомлення або купуйте повідомлення оптом
Поповніть передоплачений гаманець на суму від 10 $ і платіть за кожне повідомлення за ціною відповідного каналу або купіть пакет кредитів повідомлень для великих обсягів на найдорожчих каналах.
10 тис. повідомлень
8 $
0,0008 $ за повідомлення
- Вихідних повідомлень: 10 000
- Діє 3 місяці з моменту покупки
- Діє для всіх типів каналів
100 тис. повідомлень
Рекомендуємо60 $
0,0006 $ за повідомлення
- Вихідних повідомлень: 100 000
- Діє 6 місяців з моменту покупки
- Діє для всіх типів каналів
1 млн повідомлень
400 $
0,0004 $ за повідомлення
- Вихідних повідомлень: 1 000 000
- Діє 12 місяців з моменту покупки
- Діє для всіх типів каналів
Оплата за фактом
| Канал | За повідомлення |
|---|---|
| WhatsApp Business | 0,001 $ |
| SMS | 0,0005 $ |
| SMS OTP | 0,0005 $ |
| Telegram | 0,0003 $ |
| Messenger | 0,0005 $ |
| 0,0005 $ | |
| TikTok | 0,0005 $ |
Що входить у ціну
- ОплачуєтьсяВихідні повідомлення, прийняті API, — у момент прийняття.
- БезкоштовноВхідні повідомлення, повідомлення в тестовому режимі, вебхуки та консоль.
- ПовертаєтьсяБудь-яке повідомлення, що завершилося помилкою, — у той пакет або гаманець, з якого його було оплачено.
- ОкремоПлата, яку Meta, оператори зв’язку чи інші провайдери стягують за сам канал.
Зручність для розробників
Інтегруйте один раз — і більше не повертайтеся
Підписані вебхуки, безпечні повторні запити, пісочниця, що поводиться як продакшн, і помилки, за якими можна розгалужувати логіку.
Вебхуки, які можна перевірити
Кожну доставку підписано за допомогою HMAC-SHA256 від часової позначки та сирого тіла запиту; підпис передається в заголовку OmniMessage-Signature. Дайте будь-яку відповідь 2xx протягом 10 секунд. Невдалі доставки повторюються вісім разів з інтервалом, що зростає від 30 секунд до 24 годин.
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;
}{
"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 для звернення до підтримки.
{
"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 безкоштовних повідомлень.