Preskoči na vsebino

API prehoda za sporočila

En API za vse kanale za sporočanje

Pošiljajte sporočila prek kanalov WhatsApp Business, SMS, Telegram, Messenger, Instagram in TikTok skozi eno samo končno točko REST. Predplačniško, z obračunom po odhodnem sporočilu, webhooki o dostavi in testnim načinom.

Od
0,0003 $
na odhodno sporočilo
Ob registraciji
100
brezplačnih sporočil
Obveznost
Brez
predplačniško, brez pogodbe
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 kanalov7 prek ene končne točke
  • Vrste sporočil9, od besedila do interaktivnih seznamov
  • Cena od0,0003 $ na odhodno sporočilo
  • Omejitev števila zahtev100 zahtev na sekundo na ključ
  • Velikost skupineDo 100 sporočil na zahtevo
  • Ponovni poskusi webhookov8, z naraščajočim zamikom od 30 sekund do 24 ur
  • Okno idempotentnosti24 ur
  • Testni načinBrezplačen, brez povezanega kanala
  • Neuspešna sporočilaSamodejno vračilo
  • Dohodna sporočilaBrezplačno

Kako deluje

Od registracije do dostavljenega sporočila v štirih korakih

Brez prodajnega klica in brez minimalne obveznosti. Prvi klic API v testnem načinu lahko izvedete minuto po tem, ko ustvarite račun.

  1. 01. korak

    Ustvarite račun

    Registrirajte se, potrdite e-poštni naslov in v konzoli ustvarite ključ API. Testni ključi delujejo takoj, še preden je povezan kateri koli kanal.

  2. 02. korak

    Povežite kanal

    V konzoli se prijavite s Facebookom ali TikTokom in povežite številko WhatsApp, stran ali poslovni račun. Bota Telegram ali številko Twilio dodajte z njunimi poverilnicami, v konzoli ali s klicem POST /v1/channels.

  3. 03. korak

    Pošiljajte skozi eno končno točko

    POST /v1/messages sprejme ID kanala, prejemnika in tipiziran objekt vsebine. Oblika zahteve je na vseh kanalih enaka.

  4. 04. korak

    Spremljajte vsako dostavo

    Podpisani webhooki sporočajo, ali je sporočilo poslano, dostavljeno, prebrano ali neuspešno. Ista zgodovina je na voljo v konzoli in prek GET /v1/messages.

Vrste sporočil

Kar pošljete, to tudi vidijo

Vsako sporočilo ima vrsto in objekt vsebine pod ključem te vrste. Izberite eno in si oglejte telo zahteve ob sporočilu, ki ga ustvari.

POST /v1/messages
{
  "channel": "ch_7Hq2mN5vB8cX1zL0pK3j",
  "to": "+971501234567",
  "type": "text",
  "text": {
    "body": "Vaše naročilo #1042 je odposlano. Spremljajte ga na https://example.com/t/1042",
    "preview_url": true
  },
  "reference": "order-1042"
}

Navadno besedilo, ki ga sprejme vsaka vrsta kanala. Nastavite preview_url, da kanal prikaže predogled povezave.

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

Konzola

Konzola za vse, kar ni koda

Ustvarjajte ključe, povezujte kanale, iščite po dnevniku sporočil, ponavljajte dostave webhookov in upravljajte obračun. Vse, kar prikazuje konzola, je na voljo tudi prek API-ja.

Pregled. Stanje denarnice, preostali krediti iz paketov in odhodni promet zadnjih 30 dni, po računu in po načinu. Prikazi na tej strani so izrisani z vzorčnimi podatki.
Dnevnik sporočil. Filtrirajte po kanalu, statusu, prejemniku ali lastni referenci in odprite katero koli sporočilo, da vidite zgodovino njegovih statusov in koliko je bilo zanj zaračunano.
Obračun. Napolnite denarnico, kupujte pakete, nastavite samodejno polnitev in prenašajte potrdila o plačilu. Krediti iz paketov kažejo, koliko jih je še ostalo in kdaj potečejo.

Cenik

Plačujte po sporočilu ali kupite sporočila na zalogo

Napolnite predplačniško denarnico že od 10 $ in plačujte ceno na sporočilo za posamezen kanal ali pa kupite paket kreditov za sporočila za večje količine na svojih najdražjih kanalih.

10 tis. sporočil

8 $

0,0008 $ na sporočilo

  • 10.000 odhodnih sporočil
  • Velja 3 mesece od nakupa
  • Velja za vse vrste kanalov
Začnite s paketom 10 tis.

100 tis. sporočil

Priporočeno

60 $

0,0006 $ na sporočilo

  • 100.000 odhodnih sporočil
  • Velja 6 mesecev od nakupa
  • Velja za vse vrste kanalov
Začnite s paketom 100 tis.

1 mio. sporočil

400 $

0,0004 $ na sporočilo

  • 1.000.000 odhodnih sporočil
  • Velja 12 mesecev od nakupa
  • Velja za vse vrste kanalov
Začnite s paketom 1 mio.

Plačilo po porabi

Cena plačila po porabi na odhodno sporočilo po vrstah kanalov, v ameriških dolarjih
KanalNa sporočilo
WhatsApp Business0,001 $
SMS0,0005 $
SMS OTP0,0005 $
Telegram0,0003 $
Messenger0,0005 $
Instagram0,0005 $
TikTok0,0005 $

Kaj cena pokriva

  • ZaračunanoOdhodna sporočila, ki jih API sprejme, v trenutku, ko jih sprejme.
  • BrezplačnoDohodna sporočila, sporočila v testnem načinu, webhooki in konzola.
  • VrnjenoVsako sporočilo, ki se konča kot neuspešno, nazaj v paket ali denarnico, iz katere je bilo zaračunano.
  • LočenoPristojbine, ki jih Meta, operaterji ali drugi ponudniki zaračunavajo za sam kanal.

Izkušnja za razvijalce

Zasnovano tako, da ga integrirate enkrat in nanj pozabite

Podpisani webhooki, varni ponovni poskusi, peskovnik, ki se obnaša kot produkcija, in napake, po katerih lahko razvejate kodo.

Webhooki, ki jih lahko preverite

Vsaka dostava je podpisana z algoritmom HMAC-SHA256 nad časovnim žigom in neobdelanim telesom, v glavi OmniMessage-Signature. Odgovorite s katerim koli statusom 2xx v 10 sekundah. Neuspešne dostave se ponovijo osemkrat z naraščajočim zamikom, od 30 sekund do 24 ur.

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;
}
Dogodek 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, ki ne stane nič

Testni ključi uporabljajo vgrajene kanale peskovnika, zato ni treba ničesar povezovati. Zadnje števke prejemnika določijo simulirani izid, vaši webhooki pa se sprožijo tako kot v produkciji.

Zahteva v peskovniku, konča se kot prebrano
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" }
  }'

Napake z vrsto in kodo

Vsak odgovor, ki ni 2xx, ima enako telo: type za razred napake, stabilno vrednost code, po kateri lahko razvejate kodo, sporni param, kadar obstaja, in request_id za podporo.

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"
  }
}
  • Idempotentne zahteve POST

    Pošljite glavo Idempotency-Key in ponovljena zahteva v 24 urah vrne shranjeni odgovor z Idempotent-Replayed: true, brez dvojnega pošiljanja ali zaračunavanja.

  • Predvidljive omejitve

    100 zahtev na sekundo na ključ za POST /v1/messages, 20 za druge končne točke. Vsak odgovor vsebuje RateLimit-Remaining, odgovor 429 pa tudi Retry-After.

  • Skupinsko pošiljanje

    POST /v1/messages/batch sprejme do 100 sporočil. Vsak element je sprejet, zavrnjen in zaračunan posebej, odgovor 207 pa o njih poroča po indeksu.

  • Ključi z obsegi

    Vsakemu ključu dodelite samo obsege, ki jih potrebuje, na primer messages:write ali billing:read, in ga omejite na seznam dovoljenih naslovov IP.

Vprašanja

Pred integracijo

Kratki odgovori. Dolgi so v dokumentaciji.

Ali potrebujem lastno številko WhatsApp, bota ali številko SMS?

Da. OmniMessage je prehod, v katerega prinesete lasten kanal: povežete svojo številko WhatsApp Cloud API, bota Telegram, številko Twilio ali račun v družbenem omrežju in ohranite lastništvo nad njim. Na strani o kanalih je navedeno, kaj potrebuje posamezna vrsta.

Kaj natanko se mi zaračuna?

Ena bremenitev za vsako odhodno sporočilo, ki ga API sprejme: kredit iz paketa, če ga imate, sicer cena na sporočilo za to vrsto kanala iz vaše denarnice. Dohodna sporočila in sporočila v testnem načinu so brezplačna, za sporočilo, ki se konča kot neuspešno, pa se zaračunani znesek samodejno vrne.

Ali so vključene pristojbine družbe Meta, operaterjev ali ponudnikov?

Ne. Pristojbina prehoda pokriva API, sledenje dostavi, webhooke in konzolo. Pristojbine, ki jih Meta, Twilio ali drug ponudnik zaračunava za sam kanal, ostanejo med vami in tem ponudnikom.

Kako lahko testiram brez pošiljanja pravih sporočil?

Uporabite ključ, ki se začne z om_test_. Vsak račun ima za vsako vrsto po en kanal peskovnika, na primer ch_test_whatsapp. Nič se ne dostavi in nič se ne zaračuna, statusi pa so simulirani: sporočilo prejemniku, katerega številka se konča na 0000, ne uspe, pri 0001 ostane poslano, pri 0002 je tudi prebrano, vsa druga pa so dostavljena v približno dveh sekundah.

Kaj se zgodi, ko mi zmanjka sredstev?

API odgovori s 402 insufficient_balance in nič se ne uvrsti v čakalno vrsto, zato nikoli ne dolgujete denarja za nazaj. Naročite se lahko na dogodek balance.low ali vklopite samodejno polnitev, ki napolni denarnico, ko stanje pade pod prag, ki ga izberete sami.

Ali potrebujem SDK?

Ne. API je JSON prek HTTPS z avtentikacijo z žetonom bearer, zato deluje s katerim koli odjemalcem HTTP. V dokumentaciji so primeri za cURL, Node, Python in PHP.

Pošljite prvo sporočilo v testnem načinu še danes

Ustvarite račun, kopirajte testni ključ in pokličite API, še preden povežete en sam kanal. Vsak nov račun na začetku prejme 100 brezplačnih sporočil.