API pristupnika za poruke
Jedan API za sve kanale za razmjenu poruka
Šaljite poruke putem WhatsApp Businessa, SMS-a, Telegrama, Messengera, Instagrama i TikToka kroz jednu REST krajnju točku. Unaprijed plaćeno, uz naplatu po odlaznoj poruci, webhookove o isporuci i testni način.
- Od
- 0,0003 $
- po odlaznoj poruci
- Pri registraciji
- 100
- besplatnih poruka
- Obveza
- Nema
- unaprijed plaćeno, 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 vrsta kanala, jedan oblik zahtjeva
Povežite pošiljatelje koje već posjedujete. Svaki postaje ID kanala koji prosljeđujete istoj krajnjoj točki i svaki vraća iste statuse.
- 0,001 $WhatsApp BusinessPredlošci, interaktivne poruke i mediji na vašem vlastitom Cloud API broju.Tekst · Privici · Predložak · Gumbi za odgovor · Popis · URL gumb · Lokacija · Kontakti
- 0,0005 $SMSTekstualne i medijske poruke s vašeg vlastitog Twilio broja.Tekst · Privici
- 0,0005 $SMS OTPIsključivo tekstualna ruta za jednokratne lozinke.Tekst
- 0,0003 $TelegramPoruke bota s gumbima, anketama, lokacijama i medijima.Tekst · Privici · Gumbi za odgovor · Lokacija · Kontakti · Anketa
- 0,0005 $MessengerRazgovori s osobama koje pišu vašoj Facebook stranici.Tekst · Privici · Gumbi za odgovor
- 0,0005 $InstagramIzravne poruke za profesionalni Instagram račun.Tekst · Privici · Gumbi za odgovor
- 0,0005 $TikTokIzravne poruke za poslovni TikTok račun.Tekst · Privici · Gumbi za odgovor
- Vlastiti kanalVaši brojevi i botovi ostaju vašiPogledajte što je potrebno za svaki kanal
Kako funkcionira
Od registracije do isporučene poruke u četiri koraka
Nema prodajnog razgovora ni minimalne obveze. Prvi API poziv u testnom načinu možete uputiti minutu nakon izrade računa.
- 01. korak
Izradite račun
Registrirajte se, potvrdite e-adresu i u konzoli izradite API ključ. Testni ključevi rade odmah, prije nego što je povezan ijedan kanal.
- 02. korak
Povežite kanal
Prijavite se u konzoli putem Facebooka ili TikToka da biste povezali WhatsApp broj, stranicu ili poslovni račun. Telegram bot ili Twilio broj dodajte pomoću njihovih vjerodajnica, u konzoli ili pozivom
POST /v1/channels. - 03. korak
Šaljite kroz jednu krajnju točku
POST /v1/messagesprima ID kanala, primatelja i tipizirani objekt sadržaja. Oblik zahtjeva isti je na svakom kanalu. - 04. korak
Pratite svaku isporuku
Potpisani webhookovi javljaju kada je poruka poslana, isporučena, pročitana ili neuspjela. Ista je povijest dostupna u konzoli i putem
GET /v1/messages.
Vrste poruka
Ono što pošaljete, to i vide
Svaka poruka ima vrstu i objekt sadržaja pod ključem te vrste. Odaberite jednu da biste vidjeli tijelo zahtjeva uz poruku koju stvara.
{
"channel": "ch_7Hq2mN5vB8cX1zL0pK3j",
"to": "+971501234567",
"type": "text",
"text": {
"body": "Vaša narudžba #1042 je poslana. Pratite je na https://example.com/t/1042",
"preview_url": true
},
"reference": "order-1042"
}Običan tekst koji prihvaća svaka vrsta kanala. Postavite preview_url kako bi kanal prikazao pregled poveznice.
KanaliWhatsApp Business, SMS, SMS OTP, Telegram, Messenger, Instagram i TikTok
Konzola
Konzola za sve ono što nije kôd
Izrađujte ključeve, povezujte kanale, pretražujte dnevnik poruka, ponavljajte isporuke webhookova i upravljajte naplatom. Sve što konzola prikazuje dostupno je i putem API-ja.
Cijene
Plaćajte po poruci ili kupite poruke na veliko
Nadoplatite unaprijed plaćeni novčanik već od 10 $ i plaćajte cijenu po poruci za svaki kanal ili kupite paket kredita za poruke za veće količine na svojim najskupljim kanalima.
10 tis. poruka
8 $
0,0008 $ po poruci
- 10.000 odlaznih poruka
- Vrijedi 3 mjeseca od kupnje
- Vrijedi za svaku vrstu kanala
100 tis. poruka
Preporučeno60 $
0,0006 $ po poruci
- 100.000 odlaznih poruka
- Vrijedi 6 mjeseci od kupnje
- Vrijedi za svaku vrstu kanala
1 mil. poruka
400 $
0,0004 $ po poruci
- 1.000.000 odlaznih poruka
- Vrijedi 12 mjeseci od kupnje
- Vrijedi za svaku vrstu kanala
Plaćanje po potrošnji
| Kanal | Po poruci |
|---|---|
| WhatsApp Business | 0,001 $ |
| Telegram | 0,0003 $ |
| SMS | 0,0005 $ |
| SMS OTP | 0,0005 $ |
| Messenger | 0,0005 $ |
| 0,0005 $ | |
| TikTok | 0,0005 $ |
Što cijena pokriva
- Naplaćuje seOdlazne poruke koje API prihvati, u trenutku kada ih prihvati.
- BesplatnoDolazne poruke, poruke u testnom načinu, webhookovi i konzola.
- Vraća seSvaka poruka koja završi kao neuspjela, natrag u paket ili novčanik iz kojeg je naplaćena.
- ZasebnoNaknade koje Meta, operateri ili drugi pružatelji usluga naplaćuju za sam kanal.
Iskustvo razvojnih inženjera
Izrađeno da ga integrirate jednom i ostavite na miru
Potpisani webhookovi, sigurni ponovni pokušaji, sandbox koji se ponaša kao produkcija i pogreške prema kojima možete granati kôd.
Webhookovi koje možete provjeriti
Svaka je isporuka potpisana algoritmom HMAC-SHA256 nad vremenskom oznakom i neobrađenim tijelom, u zaglavlju OmniMessage-Signature. Odgovorite bilo kojim statusom 2xx u roku od 10 sekundi. Neuspjele isporuke ponavljaju se osam puta uz rastući razmak, 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 način koji ne košta ništa
Testni ključevi koriste ugrađene sandbox kanale, pa nema što povezivati. Posljednje znamenke primatelja određuju simulirani ishod, a vaši se webhookovi 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" }
}'Pogreške s vrstom i kodom
Svaki odgovor koji nije 2xx ima isto tijelo: type za klasu pogreške, stabilan code prema kojem možete granati kôd, sporni param ako 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 zahtjevi
Pošaljite zaglavlje
Idempotency-Keyi ponovljeni zahtjev unutar 24 sata vratit će spremljeni odgovor uzIdempotent-Replayed: true, bez dvostrukog slanja ili naplate.Predvidljiva ograničenja
100 zahtjeva u sekundi po ključu na
POST /v1/messages, 20 na ostalim krajnjim točkama. Svaki odgovor sadržiRateLimit-Remaining, a odgovor 429 sadržiRetry-After.Skupno slanje
POST /v1/messages/batchprihvaća do 100 poruka. Svaka se stavka zasebno prihvaća, odbija i naplaćuje, a odgovor 207 izvješćuje o njima po indeksu.Ključevi s opsezima
Svakom ključu dodijelite samo opsege koji su mu potrebni, primjerice
messages:writeilibilling:read, i ograničite ga na popis dopuštenih IP adresa.
Pitanja
Prije integracije
Kratki odgovori. Dugi su u dokumentaciji.
Trebam li vlastiti WhatsApp broj, bot ili SMS broj?
Da. OmniMessage je pristupnik na koji donosite vlastiti kanal: povezujete vlastiti WhatsApp Cloud API broj, Telegram bot, Twilio broj ili račun na društvenoj mreži i zadržavate vlasništvo nad njim. Na stranici o kanalima navedeno je što je potrebno za svaku vrstu.
Što mi se točno naplaćuje?
Jedna naplata po odlaznoj poruci koju API prihvati: kredit iz paketa ako ga imate, a u suprotnom cijena po poruci za tu vrstu kanala iz vašeg novčanika. Dolazne poruke i poruke u testnom načinu besplatne su, a za poruku koja završi kao neuspjela automatski se vraća naplaćeni iznos.
Jesu li uključene naknade Mete, operatera ili pružatelja usluga?
Ne. Naknada pristupnika pokriva API, praćenje isporuke, webhookove i konzolu. Naknade koje Meta, Twilio ili neki drugi pružatelj usluga naplaćuje za sam kanal ostaju između vas i tog pružatelja.
Kako mogu testirati bez slanja stvarnih poruka?
Upotrijebite ključ koji počinje s om_test_. Svaki račun ima po jedan sandbox kanal za svaku vrstu, primjerice ch_test_whatsapp. Ništa se ne isporučuje i ništa se ne naplaćuje, a statusi se simuliraju: poruka primatelju čiji broj završava na 0000 ne uspijeva, na 0001 ostaje poslana, na 0002 je i pročitana, a sve ostale isporučuju se za otprilike dvije sekunde.
Što se događa kada mi ponestane sredstava?
API odgovara s 402 insufficient_balance i ništa se ne stavlja u red čekanja, pa nikada ne dugujete novac naknadno. Možete se pretplatiti na događaj balance.low ili uključiti automatsku nadoplatu, koja nadoplaćuje novčanik kada stanje padne ispod praga koji sami odaberete.
Treba li mi SDK?
Ne. API je JSON preko HTTPS-a s autentifikacijom bearer tokenom, pa radi s bilo kojim HTTP klijentom. Dokumentacija sadrži primjere za cURL, Node, Python i PHP.
Pošaljite prvu poruku u testnom načinu još danas
Izradite račun, kopirajte testni ključ i pozovite API prije nego što povežete ijedan kanal. Svaki novi račun na početku dobiva 100 besplatnih poruka.