Žinučių šliuzo API
Viena API visiems žinučių kanalams
Siųskite „WhatsApp Business“, SMS, „Telegram“, „Messenger“, „Instagram“ ir „TikTok“ žinutes per vieną REST galinį tašką. Išankstinis apmokėjimas, mokama už kiekvieną siunčiamąją žinutę, su pristatymo webhook’ais ir bandomuoju režimu.
- Nuo
- 0,0003 $
- už siunčiamąją žinutę
- Užsiregistravus
- 100
- nemokamų žinučių
- Įsipareigojimas
- Nėra
- iš anksto apmokama, be sutarties
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
}Kanalai
Septyni kanalų tipai, viena užklausos forma
Prijunkite jums jau priklausančius siuntėjus. Kiekvienas jų tampa kanalo ID, kurį perduodate tam pačiam galiniam taškui, ir kiekvienas praneša tas pačias būsenas.
- 0,001 $WhatsApp BusinessŠablonai, interaktyvios žinutės ir medija jūsų pačių „Cloud API“ numeriu.Tekstas · Priedai · Šablonas · Atsakymo mygtukai · Sąrašas · URL mygtukas · Vieta · Kontaktai
- 0,0005 $SMSTekstinės ir medijos žinutės iš jūsų pačių „Twilio“ numerio.Tekstas · Priedai
- 0,0005 $SMS OTPTik tekstui skirtas maršrutas vienkartiniams kodams.Tekstas
- 0,0003 $TelegramBoto žinutės su mygtukais, apklausomis, vietomis ir medija.Tekstas · Priedai · Atsakymo mygtukai · Vieta · Kontaktai · Apklausa
- 0,0005 $MessengerPokalbiai su žmonėmis, rašančiais į jūsų „Facebook“ puslapį.Tekstas · Priedai · Atsakymo mygtukai
- 0,0005 $InstagramTiesioginės žinutės „Instagram“ profesionaliai paskyrai.Tekstas · Priedai · Atsakymo mygtukai
- 0,0005 $TikTokTiesioginės žinutės „TikTok“ verslo paskyrai.Tekstas · Priedai · Atsakymo mygtukai
- Jūsų pačių kanalaiJūsų numeriai ir botai lieka jūsųŽiūrėkite, ko reikia kiekvienam kanalui
Kaip tai veikia
Nuo registracijos iki pristatytos žinutės keturiais žingsniais
Jokių pokalbių su pardavėjais ir jokių minimalių įsipareigojimų. Pirmąjį API iškvietimą bandomuoju režimu galite atlikti praėjus minutei nuo paskyros sukūrimo.
- 01 žingsnis
Susikurkite paskyrą
Užsiregistruokite, patvirtinkite el. paštą ir konsolėje sukurkite API raktą. Bandomieji raktai veikia iš karto, dar neprijungus nė vieno kanalo.
- 02 žingsnis
Prijunkite kanalą
Norėdami prijungti „WhatsApp“ numerį, puslapį ar verslo paskyrą, konsolėje prisijunkite per „Facebook“ arba „TikTok“. „Telegram“ botą ar „Twilio“ numerį pridėkite pateikdami jo prisijungimo duomenis – konsolėje arba užklausa
POST /v1/channels. - 03 žingsnis
Siųskite per vieną galinį tašką
POST /v1/messagespriima kanalo ID, gavėją ir tipizuotą turinio objektą. Užklausos forma visuose kanaluose vienoda. - 04 žingsnis
Sekite kiekvieną pristatymą
Pasirašyti webhook’ai praneša būsenas: išsiųsta, pristatyta, perskaityta ir nepavyko. Ta pati istorija pateikiama konsolėje ir per
GET /v1/messages.
Žinučių tipai
Ką išsiunčiate, tą gavėjas ir mato
Kiekviena žinutė turi tipą ir turinio objektą po to tipo raktu. Pasirinkite vieną ir pamatysite užklausos turinį šalia žinutės, kurią jis sukuria.
{
"channel": "ch_7Hq2mN5vB8cX1zL0pK3j",
"to": "+971501234567",
"type": "text",
"text": {
"body": "Jūsų užsakymas #1042 išsiųstas. Sekite jį čia: https://example.com/t/1042",
"preview_url": true
},
"reference": "order-1042"
}Paprastas tekstas, kurį priima visi kanalų tipai. Nustatykite preview_url, kad kanalas atvaizduotų nuorodos peržiūrą.
KanalaiWhatsApp Business, SMS, SMS OTP, Telegram, Messenger, Instagram ir TikTok
Konsolė
Konsolė viskam, kas nėra kodas
Kurkite raktus, prijunkite kanalus, ieškokite žinučių žurnale, kartokite webhook’ų pristatymus ir tvarkykite atsiskaitymą. Viskas, ką rodo konsolė, pasiekiama ir per API.
Kainos
Mokėkite už žinutę arba pirkite žinutes urmu
Papildykite išankstinio apmokėjimo piniginę nuo 10 $ ir mokėkite kiekvieno kanalo žinutės kainą arba pirkite žinučių kreditų paketą dideliam srautui brangiausiuose savo kanaluose.
10 tūkst. žinučių
8 $
0,0008 $ už žinutę
- Siunčiamosios žinutės: 10 000
- Galioja 3 mėnesius nuo pirkimo
- Galioja visų tipų kanaluose
100 tūkst. žinučių
Rekomenduojamas60 $
0,0006 $ už žinutę
- Siunčiamosios žinutės: 100 000
- Galioja 6 mėnesius nuo pirkimo
- Galioja visų tipų kanaluose
1 mln. žinučių
400 $
0,0004 $ už žinutę
- Siunčiamosios žinutės: 1 000 000
- Galioja 12 mėnesių nuo pirkimo
- Galioja visų tipų kanaluose
Mokėjimas pagal sunaudojimą
| Kanalas | Už žinutę |
|---|---|
| WhatsApp Business | 0,001 $ |
| SMS | 0,0005 $ |
| SMS OTP | 0,0005 $ |
| Telegram | 0,0003 $ |
| Messenger | 0,0005 $ |
| 0,0005 $ | |
| TikTok | 0,0005 $ |
Kas įskaičiuota į kainą
- ApmokestinamaAPI priimtos siunčiamosios žinutės – tuo metu, kai jos priimamos.
- NemokamaiGaunamosios žinutės, bandomojo režimo žinutės, webhook’ai ir konsolė.
- GrąžinamaBet kuri žinutė, kurios galutinė būsena yra „nepavyko“, – atgal į paketą arba piniginę, iš kurių už ją sumokėta.
- AtskiraiMokesčiai, kuriuos už patį kanalą ima „Meta“, operatoriai ar kiti teikėjai.
Kūrėjų patirtis
Sukurta taip, kad integruotumėte kartą ir pamirštumėte
Pasirašyti webhook’ai, saugūs pakartotiniai bandymai, smėliadėžė, veikianti kaip gamybinė aplinka, ir klaidos, pagal kurias galima šakoti kodą.
Webhook’ai, kuriuos galite patikrinti
Kiekvienas pristatymas pasirašomas HMAC-SHA256 pagal laiko žymą ir neapdorotą turinį; parašas pateikiamas antraštėje OmniMessage-Signature. Atsakykite bet kuriuo 2xx kodu per 10 sekundžių. Nepavykę pristatymai kartojami aštuonis kartus didėjančiu intervalu – nuo 30 sekundžių iki 24 valandų.
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"
}
}
}Bandomasis režimas, kuris nieko nekainuoja
Bandomieji raktai naudoja integruotus smėliadėžės kanalus, todėl nieko prijungti nereikia. Paskutiniai gavėjo skaitmenys lemia imituojamą rezultatą, o jūsų webhook’ai iškviečiami taip pat, kaip gamybinėje aplinkoje.
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" }
}'Klaidos su tipu ir kodu
Kiekvieno ne 2xx atsakymo turinys vienodas: type – gedimo klasė, stabilus code, pagal kurį galima šakoti kodą, klaidingas param, jei toks yra, ir request_id pagalbos tarnybai.
{
"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"
}
}Idempotentinės POST užklausos
Siųskite antraštę
Idempotency-Key, ir per 24 valandas pakartota užklausa grąžins išsaugotą atsakymą suIdempotent-Replayed: true– žinutė nebus nei išsiųsta, nei apmokestinta antrą kartą.Nuspėjami limitai
100 užklausų per sekundę vienam raktui galiniame taške
POST /v1/messages, 20 – kituose. Kiekviename atsakyme pateikiamaRateLimit-Remaining, o atsakyme su kodu 429 –Retry-After.Paketinis siuntimas
POST /v1/messages/batchpriima iki 100 žinučių. Kiekvienas elementas priimamas, atmetamas ir apmokestinamas atskirai, o atsakymas su kodu 207 apie juos praneša pagal indeksą.Raktai su leidimais
Kiekvienam raktui suteikite tik jam reikalingus leidimus, pavyzdžiui,
messages:writearbabilling:read, ir apribokite jį leidžiamų IP adresų sąrašu.
Klausimai
Prieš integruojant
Trumpi atsakymai. Ilgieji – dokumentacijoje.
Ar man reikia savo „WhatsApp“ numerio, boto arba SMS numerio?
Taip. „OmniMessage“ yra šliuzas, kuriame naudojate savo pačių kanalus: prijungiate savo „WhatsApp Cloud API“ numerį, „Telegram“ botą, „Twilio“ numerį ar socialinio tinklo paskyrą, ir jie toliau priklauso jums. Kanalų puslapyje nurodyta, ko reikia kiekvienam tipui.
Už ką tiksliai moku?
Vienas mokestis už kiekvieną API priimtą siunčiamąją žinutę: paketo kreditas, jei jį turite, o jei ne – kanalo tipo žinutės kaina iš jūsų piniginės. Gaunamosios ir bandomojo režimo žinutės nemokamos, o mokestis už žinutę, kurios galutinė būsena yra „nepavyko“, grąžinamas automatiškai.
Ar „Meta“, operatorių ar teikėjų mokesčiai įskaičiuoti?
Ne. Šliuzo mokestis apima API, pristatymo sekimą, webhook’us ir konsolę. Mokesčiai, kuriuos už patį kanalą ima „Meta“, „Twilio“ ar kitas teikėjas, lieka tarp jūsų ir to teikėjo.
Kaip testuoti nesiunčiant tikrų žinučių?
Naudokite raktą, prasidedantį om_test_. Kiekviena paskyra turi po vieną kiekvieno tipo smėliadėžės kanalą, pavyzdžiui, ch_test_whatsapp. Niekas nepristatoma, už nieką neimamas mokestis, o būsenos imituojamos: žinutė gavėjui, kurio numeris baigiasi 0000, nepavyksta, 0001 – lieka būsenos „išsiųsta“, 0002 – dar ir perskaitoma, o visos kitos pristatomos maždaug per dvi sekundes.
Kas nutinka, kai mano likutis baigiasi?
API atsako 402 insufficient_balance ir niekas neįtraukiama į eilę, todėl niekada neliekate skolingi. Galite prenumeruoti įvykį balance.low arba įjungti automatinį papildymą, kad piniginė būtų papildoma, kai likutis nukrenta žemiau jūsų pasirinktos ribos.
Ar man reikia SDK?
Ne. API – tai JSON per HTTPS su „bearer“ autentifikavimu, todėl tinka bet kuris HTTP klientas. Dokumentacijoje rasite „cURL“, „Node“, „Python“ ir PHP pavyzdžių.
Išsiųskite pirmąją žinutę bandomuoju režimu jau šiandien
Susikurkite paskyrą, nusikopijuokite bandomąjį raktą ir iškvieskite API dar neprijungę nė vieno kanalo. Kiekviena nauja paskyra pradžioje gauna 100 nemokamų žinučių.