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"
}'{
"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
}Kanali
Sedam tipova kanala, jedan oblik zahteva
Povežite pošiljaoce koje već imate. Svaki postaje ID kanala koji prosleđujete istom endpointu i svaki vraća iste statuse.
- 0,001 $WhatsApp BusinessŠabloni, interaktivne poruke i mediji na vašem Cloud API broju.Tekst · Prilozi · Šablon · Dugmad za odgovor · Lista · URL dugme · Lokacija · Kontakti
- 0,0005 $SMSTekstualne i multimedijalne poruke sa vašeg Twilio broja.Tekst · Prilozi
- 0,0005 $SMS OTPIsključivo tekstualna ruta za jednokratne kodove.Tekst
- 0,0003 $TelegramPoruke bota sa dugmadima, anketama, lokacijama i medijima.Tekst · Prilozi · Dugmad za odgovor · Lokacija · Kontakti · Anketa
- 0,0005 $MessengerRazgovori sa osobama koje pišu vašoj Facebook Stranici.Tekst · Prilozi · Dugmad za odgovor
- 0,0005 $InstagramDirektne poruke za profesionalni Instagram nalog.Tekst · Prilozi · Dugmad za odgovor
- 0,0005 $TikTokDirektne poruke za poslovni TikTok nalog.Tekst · Prilozi · Dugmad za odgovor
- Koristite sopstveni kanalVaši brojevi i botovi ostaju vašiPogledajte šta je potrebno za svaki kanal
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.
- 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.
- 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. - Korak 03
Šaljite preko jednog endpointa
POST /v1/messagesprima ID kanala, primaoca i tipizirani objekat sadržaja. Oblik zahteva je isti na svakom kanalu. - 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.
{
"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.
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
100 hilj. poruka
Izdvajamo60 $
0,0006 $ po poruci
- Odlaznih poruka: 100.000
- Važi 6 meseci od kupovine
- Važi na svakom tipu kanala
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
Plaćanje po potrošnji
| Kanal | Po poruci |
|---|---|
| WhatsApp Business | 0,001 $ |
| SMS | 0,0005 $ |
| SMS OTP | 0,0005 $ |
| Telegram | 0,0003 $ |
| Messenger | 0,0005 $ |
| 0,0005 $ | |
| TikTok | 0,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.
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"
}
}
}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.
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.
{
"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-Keyi ponovljeni zahtev u roku od 24 sata vraća sačuvani odgovor uzIdempotent-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žiRateLimit-Remaining, a odgovor 429 sadržiRetry-After.Grupno slanje
POST /v1/messages/batchprihvata 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:writeilibilling: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.