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 $ |
| Telegram | 0,0003 $ |
| SMS | 0,0005 $ |
| SMS OTP | 0,0005 $ |
| Messenger | 0,0005 $ |
| 0,0005 $ | |
| TikTok | 0,0005 $ |
Какво включва цената
- Таксува сеИзходящите съобщения, приети от API – в момента на приемането им.
- БезплатноВходящите съобщения, съобщенията в тестов режим, уебхуковете и конзолата.
- Възстановява сеВсяко съобщение, което завърши като неуспешно – обратно в пакета или портфейла, от който е таксувано.
- ОтделноТаксите, които Meta, операторите или други доставчици начисляват за самия канал.
Удобство за разработчика
Създаден да се интегрира веднъж и да работи без намеса
Подписани уебхукове, безопасни повторни опити, sandbox среда, която се държи като продукционната, и грешки, по които можете да разклонявате логиката си.
Уебхукове, които можете да проверите
Всяка доставка е подписана с 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"
}
}
}Тестов режим, който не струва нищо
Тестовите ключове използват вградени sandbox канали, така че няма какво да свързвате. Последните цифри на получателя определят симулирания резултат, а уебхуковете ви се задействат както в продукционна среда.
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_. Всеки акаунт има по един sandbox канал за всеки тип, например ch_test_whatsapp. Нищо не се доставя и не се таксува, а статусите са симулирани: съобщение до получател, завършващ на 0000, е неуспешно, на 0001 – остава изпратено, на 0002 – бива и прочетено, а всичко останало се доставя за около две секунди.
Какво става, когато балансът ми свърши?
API отговаря с 402 insufficient_balance и нищо не се поставя в опашката, така че никога не дължите пари впоследствие. Можете да се абонирате за събитието balance.low или да включите автоматично зареждане, което зарежда портфейла, когато той спадне под избран от вас праг.
Нужен ли ми е SDK?
Не. API работи с JSON през HTTPS с bearer удостоверяване, така че всеки HTTP клиент върши работа. В документацията има примери на cURL, Node, Python и PHP.
Изпратете първото си съобщение в тестов режим още днес
Създайте акаунт, копирайте тестов ключ и извикайте API, преди да сте свързали и един канал. Всеки нов акаунт започва с 100 безплатни съобщения.