Към съдържанието

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 $
Telegram0,0003 $
SMS0,0005 $
SMS OTP0,0005 $
Messenger0,0005 $
Instagram0,0005 $
TikTok0,0005 $

Какво включва цената

  • Таксува сеИзходящите съобщения, приети от API – в момента на приемането им.
  • БезплатноВходящите съобщения, съобщенията в тестов режим, уебхуковете и конзолата.
  • Възстановява сеВсяко съобщение, което завърши като неуспешно – обратно в пакета или портфейла, от който е таксувано.
  • ОтделноТаксите, които Meta, операторите или други доставчици начисляват за самия канал.

Удобство за разработчика

Създаден да се интегрира веднъж и да работи без намеса

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

Уебхукове, които можете да проверите

Всяка доставка е подписана с 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"
    }
  }
}

Тестов режим, който не струва нищо

Тестовите ключове използват вградени sandbox канали, така че няма какво да свързвате. Последните цифри на получателя определят симулирания резултат, а уебхуковете ви се задействат както в продукционна среда.

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 за поддръжката.

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_. Всеки акаунт има по един 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 безплатни съобщения.