Pređite na sadržaj

API gateway za poruke

Jedan API za svaki kanal za poruke

Šaljite WhatsApp Business, SMS, Telegram, Messenger, Instagram i TikTok poruke preko jednog REST endpointa. Pripejd, naplata po odlaznoj poruci, uz webhookove o isporuci i testni režim.

Već od
0,0003 $
po odlaznoj poruci
Pri registraciji
100
besplatnih poruka
Obaveza
Nema
pripejd, bez ugovora
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
}
  • Tipovi kanala7 iza jednog endpointa
  • Tipovi poruka9, od teksta do interaktivnih lista
  • Cena od0,0003 $ po odlaznoj poruci
  • Ograničenje broja zahteva100 zahteva u sekundi po ključu
  • Veličina grupeDo 100 poruka po zahtevu
  • Ponovni pokušaji webhooka8, sa razmakom od 30 sekundi do 24 sata
  • Period idempotentnosti24 sata
  • Testni režimBesplatan, kanal nije potreban
  • Neuspele porukeAutomatski se refundiraju
  • Dolazne porukeBesplatne

Kako funkcioniše

Od registracije do isporučene poruke u četiri koraka

Nema razgovora sa prodajom ni minimalne obaveze. Prvi API poziv u testnom režimu možete da uputite minut nakon otvaranja naloga.

  1. Korak 01

    Otvorite nalog

    Registrujte se, potvrdite imejl adresu i napravite API ključ u konzoli. Testni ključevi rade odmah, pre nego što povežete ijedan kanal.

  2. Korak 02

    Povežite kanal

    Prijavite se preko Facebooka ili TikToka u konzoli da biste povezali WhatsApp broj, Stranicu ili poslovni nalog. Telegram bota ili Twilio broj dodajte pomoću akreditiva, u konzoli ili pozivom POST /v1/channels.

  3. Korak 03

    Šaljite preko jednog endpointa

    POST /v1/messages prima ID kanala, primaoca i tipizirani objekat sadržaja. Oblik zahteva je isti na svakom kanalu.

  4. Korak 04

    Pratite svaku isporuku

    Potpisani webhookovi javljaju statuse poslata, isporučena, pročitana i neuspela. Ista istorija je dostupna u konzoli i na GET /v1/messages.

Tipovi poruka

Ono što pošaljete, to primalac i vidi

Svaka poruka ima tip i objekat sadržaja pod ključem tog tipa. Izaberite jedan da biste videli telo zahteva pored poruke koju proizvodi.

POST /v1/messages
{
  "channel": "ch_7Hq2mN5vB8cX1zL0pK3j",
  "to": "+971501234567",
  "type": "text",
  "text": {
    "body": "Vaša porudžbina #1042 je poslata. Pratite je na https://example.com/t/1042",
    "preview_url": true
  },
  "reference": "order-1042"
}

Običan tekst, prihvata ga svaki tip kanala. Podesite preview_url da bi kanal prikazao pregled linka.

KanaliWhatsApp Business, SMS, SMS OTP, Telegram, Messenger, Instagram i TikTok

Konzola

Konzola za sve ono što nije kôd

Pravite ključeve, povezujte kanale, pretražujte evidenciju poruka, ponavljajte isporuke webhookova i upravljajte naplatom. Sve što konzola prikazuje dostupno je i preko API-ja.

Pregled. Stanje novčanika, preostali krediti iz paketa i obim odlaznih poruka u poslednjih 30 dana, po nalogu i po režimu. Prikazi na ovoj stranici napravljeni su sa primerima podataka.
Evidencija poruka. Filtrirajte po kanalu, statusu, primaocu ili sopstvenoj referenci i otvorite bilo koju poruku da biste videli istoriju statusa i koliko je naplaćena.
Naplata. Dopunite novčanik, kupite pakete, podesite automatsku dopunu i preuzmite potvrde o uplati. Krediti iz paketa pokazuju koliko je preostalo i kada ističu.

Cene

Plaćajte po poruci ili kupite poruke unapred

Dopunite pripejd novčanik već od 10 $ i plaćajte cenu po poruci za svaki kanal ili kupite paket kredita za poruke za veći obim na svojim najskupljim kanalima.

10 hilj. poruka

8 $

0,0008 $ po poruci

  • Odlaznih poruka: 10.000
  • Važi 3 meseca od kupovine
  • Važi na svakom tipu kanala
Počnite sa paketom 10 hilj.

100 hilj. poruka

Izdvajamo

60 $

0,0006 $ po poruci

  • Odlaznih poruka: 100.000
  • Važi 6 meseci od kupovine
  • Važi na svakom tipu kanala
Počnite sa paketom 100 hilj.

1 mil. poruka

400 $

0,0004 $ po poruci

  • Odlaznih poruka: 1.000.000
  • Važi 12 meseci od kupovine
  • Važi na svakom tipu kanala
Počnite sa paketom 1 mil.

Plaćanje po potrošnji

Cena po potrošnji za odlaznu poruku po tipu kanala, u američkim dolarima
KanalPo poruci
WhatsApp Business0,001 $
SMS0,0005 $
SMS OTP0,0005 $
Telegram0,0003 $
Messenger0,0005 $
Instagram0,0005 $
TikTok0,0005 $

Šta cena pokriva

  • Naplaćuje seOdlazne poruke koje API prihvati, u trenutku prihvatanja.
  • BesplatnoDolazne poruke, poruke u testnom režimu, webhookovi i konzola.
  • Refundira seSvaka poruka koja završi kao neuspela, nazad u paket ili novčanik iz kog je naplaćena.
  • ZasebnoNaknade koje Meta, operatori ili drugi provajderi naplaćuju za sam kanal.

Iskustvo za programere

Napravljeno da se integriše jednom i više ne dira

Potpisani webhookovi, bezbedni ponovni pokušaji, sandbox koji se ponaša kao produkcija i greške po kojima možete da granate kôd.

Webhookovi koje možete da proverite

Svaka isporuka je potpisana algoritmom HMAC-SHA256 nad vremenskom oznakom i sirovim telom, u zaglavlju OmniMessage-Signature. Odgovorite bilo kojim statusom 2xx u roku od 10 sekundi. Neuspele isporuke se ponavljaju osam puta sa sve dužim razmakom, od 30 sekundi do 24 sata.

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;
}
Događaj 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"
    }
  }
}

Testni režim koji ne košta ništa

Testni ključevi koriste ugrađene sandbox kanale, pa nema šta da se povezuje. Poslednje cifre primaoca određuju simulirani ishod, a vaši webhookovi se okidaju kao u produkciji.

Sandbox zahtev, završava kao pročitan
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" }
  }'

Greške sa tipom i kodom

Svaki odgovor koji nije 2xx ima isto telo: type za klasu greške, stabilan code po kome granate kôd, sporni param tamo gde postoji i request_id za podršku.

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"
  }
}
  • Idempotentni POST zahtevi

    Pošaljite zaglavlje Idempotency-Key i ponovljeni zahtev u roku od 24 sata vraća sačuvani odgovor uz Idempotent-Replayed: true, bez dvostrukog slanja i dvostruke naplate.

  • Predvidljiva ograničenja

    100 zahteva u sekundi po ključu na POST /v1/messages, 20 na ostalim endpointima. Svaki odgovor sadrži RateLimit-Remaining, a odgovor 429 sadrži Retry-After.

  • Grupno slanje

    POST /v1/messages/batch prihvata do 100 poruka. Svaka stavka se zasebno prihvata, odbija i naplaćuje, a odgovor 207 ih navodi po indeksu.

  • Ključevi sa opsezima

    Svakom ključu dajte samo opsege koji su mu potrebni, na primer messages:write ili billing:read, i ograničite ga listom dozvoljenih IP adresa.

Pitanja

Pre nego što počnete integraciju

Kratki odgovori. Duži su u dokumentaciji.

Da li mi je potreban sopstveni WhatsApp broj, bot ili SMS broj?

Da. OmniMessage je gateway na koji povezujete sopstvene kanale: svoj WhatsApp Cloud API broj, Telegram bota, Twilio broj ili nalog na društvenoj mreži, i zadržavate vlasništvo nad njima. Na stranici o kanalima navedeno je šta je potrebno za svaki tip.

Šta mi se tačno naplaćuje?

Jedna naplata po odlaznoj poruci koju API prihvati: kredit iz paketa ako ga imate, a u suprotnom cena po poruci za taj tip kanala iz vašeg novčanika. Dolazne poruke i poruke u testnom režimu su besplatne, a poruka koja završi kao neuspela automatski se refundira.

Da li su uključene naknade kompanije Meta, operatora ili provajdera?

Ne. Naknada za gateway pokriva API, praćenje isporuke, webhookove i konzolu. Naknade koje Meta, Twilio ili drugi provajder naplaćuju za sam kanal ostaju između vas i tog provajdera.

Kako da testiram bez slanja stvarnih poruka?

Koristite ključ koji počinje sa om_test_. Svaki nalog ima po jedan sandbox kanal za svaki tip, na primer ch_test_whatsapp. Ništa se ne isporučuje niti naplaćuje, a statusi su simulirani: slanje primaocu čiji se broj završava na 0000 ne uspeva, na 0001 poruka ostaje poslata, na 0002 biva i pročitana, a u svim ostalim slučajevima isporučuje se za oko dve sekunde.

Šta se dešava kada potrošim stanje?

API odgovara sa 402 insufficient_balance i ništa ne ulazi u red čekanja, tako da nikada ne ostajete dužni naknadno. Možete da se pretplatite na događaj balance.low ili da uključite automatsku dopunu, koja dopunjuje novčanik kada padne ispod praga koji sami izaberete.

Da li mi je potreban SDK?

Ne. API je JSON preko HTTPS-a sa bearer autentifikacijom, pa radi sa svakim HTTP klijentom. U dokumentaciji su primeri za cURL, Node, Python i PHP.

Pošaljite prvu poruku u testnom režimu još danas

Otvorite nalog, kopirajte testni ključ i pozovite API pre nego što povežete ijedan kanal. Svaki novi nalog na početku dobija 100 besplatnih poruka.