Preskoči na sadržaj

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"
  }'
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
}
  • Vrste kanala7 iza jedne krajnje točke
  • Vrste poruka9, od teksta do interaktivnih popisa
  • Cijena od0,0003 $ po odlaznoj poruci
  • Ograničenje broja zahtjeva100 zahtjeva u sekundi po ključu
  • Veličina skupineDo 100 poruka po zahtjevu
  • Ponovni pokušaji webhooka8, uz rastući razmak od 30 sekundi do 24 sata
  • Razdoblje idempotentnosti24 sata
  • Testni načinBesplatan, bez povezanog kanala
  • Neuspjele porukeAutomatski povrat
  • Dolazne porukeBesplatno

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.

  1. 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.

  2. 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.

  3. 03. korak

    Šaljite kroz jednu krajnju točku

    POST /v1/messages prima ID kanala, primatelja i tipizirani objekt sadržaja. Oblik zahtjeva isti je na svakom kanalu.

  4. 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.

POST /v1/messages
{
  "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.

Pregled. Stanje novčanika, preostali krediti iz paketa i odlazni promet u zadnjih 30 dana, po računu i po načinu rada. Prikazi na ovoj stranici izrađeni su s oglednim podacima.
Dnevnik poruka. Filtrirajte po kanalu, statusu, primatelju ili vlastitoj referenci i otvorite bilo koju poruku da biste vidjeli povijest njezinih statusa i koliko je naplaćena.
Naplata. Nadoplatite novčanik, kupujte pakete, postavite automatsku nadoplatu i preuzimajte potvrde o plaćanju. Krediti iz paketa pokazuju koliko je preostalo i kada istječu.

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
Započnite s paketom 10 tis.

100 tis. poruka

Preporučeno

60 $

0,0006 $ po poruci

  • 100.000 odlaznih poruka
  • Vrijedi 6 mjeseci od kupnje
  • Vrijedi za svaku vrstu kanala
Započnite s paketom 100 tis.

1 mil. poruka

400 $

0,0004 $ po poruci

  • 1.000.000 odlaznih poruka
  • Vrijedi 12 mjeseci od kupnje
  • Vrijedi za svaku vrstu kanala
Započnite s paketom 1 mil.

Plaćanje po potrošnji

Cijena plaćanja po potrošnji po odlaznoj poruci prema vrsti kanala, u američkim dolarima
KanalPo poruci
WhatsApp Business0,001 $
Telegram0,0003 $
SMS0,0005 $
SMS OTP0,0005 $
Messenger0,0005 $
Instagram0,0005 $
TikTok0,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.

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 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.

Sandbox zahtjev, 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" }
  }'

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.

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 zahtjevi

    Pošaljite zaglavlje Idempotency-Key i ponovljeni zahtjev unutar 24 sata vratit će spremljeni odgovor uz Idempotent-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ži RateLimit-Remaining, a odgovor 429 sadrži Retry-After.

  • Skupno slanje

    POST /v1/messages/batch prihvać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:write ili billing: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.