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"
}'{
"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
Sedem vrst kanalov, ena oblika zahteve
Povežite pošiljatelje, ki jih že imate. Vsak postane ID kanala, ki ga posredujete isti končni točki, in vsak vrača enake statuse.
- 0,001 $WhatsApp BusinessPredloge, interaktivna sporočila in mediji na vaši lastni številki Cloud API.Besedilo · Priloge · Predloga · Gumbi za odgovor · Seznam · Gumb URL · Lokacija · Stiki
- 0,0005 $SMSBesedilna in medijska sporočila z vaše lastne številke Twilio.Besedilo · Priloge
- 0,0005 $SMS OTPIzključno besedilna pot za enkratna gesla.Besedilo
- 0,0003 $TelegramSporočila bota z gumbi, anketami, lokacijami in mediji.Besedilo · Priloge · Gumbi za odgovor · Lokacija · Stiki · Anketa
- 0,0005 $MessengerPogovori z ljudmi, ki pišejo vaši Facebookovi strani.Besedilo · Priloge · Gumbi za odgovor
- 0,0005 $InstagramNeposredna sporočila za profesionalni račun Instagram.Besedilo · Priloge · Gumbi za odgovor
- 0,0005 $TikTokNeposredna sporočila za poslovni račun TikTok.Besedilo · Priloge · Gumbi za odgovor
- Lasten kanalVaše številke in boti ostanejo vašiOglejte si, kaj potrebuje posamezen kanal
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.
- 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.
- 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. - 03. korak
Pošiljajte skozi eno končno točko
POST /v1/messagessprejme ID kanala, prejemnika in tipiziran objekt vsebine. Oblika zahteve je na vseh kanalih enaka. - 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.
{
"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.
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
100 tis. sporočil
Priporočeno60 $
0,0006 $ na sporočilo
- 100.000 odhodnih sporočil
- Velja 6 mesecev od nakupa
- Velja za vse vrste kanalov
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
Plačilo po porabi
| Kanal | Na sporočilo |
|---|---|
| WhatsApp Business | 0,001 $ |
| SMS | 0,0005 $ |
| SMS OTP | 0,0005 $ |
| Telegram | 0,0003 $ |
| Messenger | 0,0005 $ |
| 0,0005 $ | |
| TikTok | 0,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.
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, 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.
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.
{
"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-Keyin ponovljena zahteva v 24 urah vrne shranjeni odgovor zIdempotent-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 vsebujeRateLimit-Remaining, odgovor 429 pa tudiRetry-After.Skupinsko pošiljanje
POST /v1/messages/batchsprejme 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:writealibilling: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.