API for meldingsgateway
Ett API for alle meldingskanaler
Send meldinger via WhatsApp Business, SMS, Telegram, Messenger, Instagram og TikTok gjennom ett enkelt REST-endepunkt. Forhåndsbetalt, belastes per utgående melding, med leveringswebhooker og en testmodus.
- Fra
- 0,0003 $
- per utgående melding
- Ved registrering
- 100
- gratis meldinger
- Bindingstid
- Ingen
- forhåndsbetalt, uten avtale
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
}Kanaler
Sju kanaltyper, ett forespørselsformat
Koble til avsenderne du allerede eier. Hver av dem blir en kanal-ID som du sender til det samme endepunktet, og alle rapporterer de samme statusene tilbake.
- 0,001 $WhatsApp BusinessMaler, interaktive meldinger og medier på ditt eget Cloud API-nummer.Tekst · Vedlegg · Mal · Svarknapper · Liste · URL-knapp · Posisjon · Kontakter
- 0,0005 $SMSTekst- og mediemeldinger fra ditt eget Twilio-nummer.Tekst · Vedlegg
- 0,0005 $SMS OTPEn rute med bare tekst for engangskoder.Tekst
- 0,0003 $TelegramBotmeldinger med knapper, avstemninger, posisjoner og medier.Tekst · Vedlegg · Svarknapper · Posisjon · Kontakter · Avstemning
- 0,0005 $MessengerSamtaler med dem som skriver til Facebook-siden din.Tekst · Vedlegg · Svarknapper
- 0,0005 $InstagramDirektemeldinger for en profesjonell Instagram-konto.Tekst · Vedlegg · Svarknapper
- 0,0005 $TikTokDirektemeldinger for en TikTok-bedriftskonto.Tekst · Vedlegg · Svarknapper
- Ta med din egen kanalNumrene og botene dine forblir dineSe hva hver kanal krever
Slik fungerer det
Fra registrering til levert melding i fire steg
Ingen salgssamtale og ingen minsteforpliktelse. Du kan gjøre ditt første API-kall i testmodus ett minutt etter at du har opprettet en konto.
- Steg 01
Opprett en konto
Registrer deg, bekreft e-postadressen din og opprett en API-nøkkel i konsollen. Testnøkler fungerer umiddelbart, før noen kanal er koblet til.
- Steg 02
Koble til en kanal
Logg inn med Facebook eller TikTok i konsollen for å koble til et WhatsApp-nummer, en side eller en bedriftskonto. Legg til en Telegram-bot eller et Twilio-nummer med påloggingsopplysningene, i konsollen eller med
POST /v1/channels. - Steg 03
Send gjennom ett endepunkt
POST /v1/messagestar imot en kanal-ID, en mottaker og et typet innholdsobjekt. Forespørselsformatet er det samme for alle kanaler. - Steg 04
Følg hver levering
Signerte webhooker rapporterer sendt, levert, lest og mislykket. Den samme historikken finnes i konsollen og via
GET /v1/messages.
Meldingstyper
Det du sender, er det mottakeren ser
Hver melding har en type og et innholdsobjekt under en nøkkel med typens navn. Velg en type for å se forespørselens innhold ved siden av meldingen den gir.
{
"channel": "ch_7Hq2mN5vB8cX1zL0pK3j",
"to": "+971501234567",
"type": "text",
"text": {
"body": "Bestillingen din #1042 er sendt. Følg den på https://example.com/t/1042",
"preview_url": true
},
"reference": "order-1042"
}Ren tekst, som alle kanaltyper godtar. Angi preview_url hvis kanalen skal vise en forhåndsvisning av lenken.
KanalerWhatsApp Business, SMS, SMS OTP, Telegram, Messenger, Instagram og TikTok
Konsoll
En konsoll for alt som ikke er kode
Opprett nøkler, koble til kanaler, søk i meldingsloggen, send webhookleveringer på nytt og administrer faktureringen. Alt konsollen viser, er også tilgjengelig via API-et.
Priser
Betal per melding, eller kjøp meldinger i pakker
Fyll på en forhåndsbetalt lommebok fra 10 $ og betal prisen per melding for hver kanal, eller kjøp en pakke med meldingskreditter for volum på de dyreste kanalene dine.
10k meldinger
8 $
0,0008 $ per melding
- 10 000 utgående meldinger
- Gyldig i 3 måneder fra kjøpet
- Gyldig for alle kanaltyper
100k meldinger
Anbefalt60 $
0,0006 $ per melding
- 100 000 utgående meldinger
- Gyldig i 6 måneder fra kjøpet
- Gyldig for alle kanaltyper
1 mill. meldinger
400 $
0,0004 $ per melding
- 1 000 000 utgående meldinger
- Gyldig i 12 måneder fra kjøpet
- Gyldig for alle kanaltyper
Betal etter forbruk
| Kanal | Per melding |
|---|---|
| WhatsApp Business | 0,001 $ |
| SMS | 0,0005 $ |
| SMS OTP | 0,0005 $ |
| Telegram | 0,0003 $ |
| Messenger | 0,0005 $ |
| 0,0005 $ | |
| TikTok | 0,0005 $ |
Hva prisen dekker
- BelastesUtgående meldinger som API-et godtar, i det øyeblikket de godtas.
- GratisInnkommende meldinger, meldinger i testmodus, webhooker og konsollen.
- RefunderesEnhver melding som ender som mislykket, tilbake til pakken eller lommeboken den ble trukket fra.
- SeparatAvgifter som Meta, operatører eller andre leverandører krever for selve kanalen.
Utvikleropplevelse
Bygget for å integreres én gang og så passe seg selv
Signerte webhooker, trygge nye forsøk, en sandkasse som oppfører seg som produksjon, og feil du kan forgrene koden på.
Webhooker du kan verifisere
Hver levering signeres med HMAC-SHA256 over tidsstempelet og den rå meldingskroppen, i headeren OmniMessage-Signature. Svar med en hvilken som helst 2xx-kode innen 10 sekunder. Mislykkede leveringer forsøkes på nytt åtte ganger med økende ventetid, fra 30 sekunder opptil 24 timer.
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"
}
}
}En testmodus som ikke koster noe
Testnøkler bruker innebygde sandkassekanaler, så det er ingenting å koble til. De siste sifrene i mottakeren avgjør det simulerte utfallet, og webhookene dine kalles akkurat som i produksjon.
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" }
}'Feil med en type og en kode
Alle svar som ikke er 2xx, har det samme innholdet: en type for feilklassen, en stabil code å forgrene på, den aktuelle param der det finnes en, og en request_id til kundestøtte.
{
"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"
}
}Idempotente POST-kall
Send headeren
Idempotency-Key, så returnerer et nytt forsøk innen 24 timer det lagrede svaret medIdempotent-Replayed: true, uten at noe sendes eller belastes to ganger.Forutsigbare grenser
100 forespørsler per sekund per nøkkel på
POST /v1/messages, 20 ellers. Hvert svar inneholderRateLimit-Remaining, og et 429-svar inneholderRetry-After.Batchsending
POST /v1/messages/batchtar imot opptil 100 meldinger. Hvert element godtas, avvises og belastes for seg, og 207-svaret rapporterer dem etter indeks.Nøkler med avgrenset tilgang
Gi hver nøkkel bare de omfangene den trenger, for eksempel
messages:writeellerbilling:read, og begrens den til en liste over tillatte IP-adresser.
Spørsmål
Før du integrerer
De korte svarene. De lange finner du i dokumentasjonen.
Trenger jeg mitt eget WhatsApp-nummer, min egen bot eller mitt eget SMS-nummer?
Ja. OmniMessage er en gateway der du tar med din egen kanal: du kobler til ditt eget WhatsApp Cloud API-nummer, din Telegram-bot, ditt Twilio-nummer eller din konto i sosiale medier, og du beholder eierskapet til den. Kanalsiden viser hva hver type krever.
Hva nøyaktig blir jeg belastet for?
Én belastning per utgående melding som API-et godtar: en pakkekreditt hvis du har en, ellers kanaltypens pris per melding fra lommeboken din. Innkommende meldinger og meldinger i testmodus er gratis, og en melding som ender som mislykket, refunderes automatisk.
Er avgifter til Meta, operatører eller leverandører inkludert?
Nei. Gatewayavgiften dekker API-et, leveringssporingen, webhookene og konsollen. Avgifter som Meta, Twilio eller en annen leverandør krever for selve kanalen, er en sak mellom deg og den leverandøren.
Hvordan tester jeg uten å sende ekte meldinger?
Bruk en nøkkel som begynner med om_test_. Hver konto har en sandkassekanal per type, for eksempel ch_test_whatsapp. Ingenting leveres eller belastes, og statusene simuleres: en mottaker som slutter på 0000, mislykkes, 0001 blir stående som sendt, 0002 blir i tillegg lest, og alt annet leveres innen omtrent to sekunder.
Hva skjer når saldoen min er brukt opp?
API-et svarer 402 insufficient_balance, og ingenting legges i kø, så du blir aldri skyldig penger i etterkant. Du kan abonnere på hendelsen balance.low eller slå på automatisk påfylling, slik at lommeboken fylles på når saldoen faller under en terskel du selv velger.
Trenger jeg en SDK?
Nei. API-et er JSON over HTTPS med bearer-autentisering, så enhver HTTP-klient fungerer. Dokumentasjonen har eksempler i cURL, Node, Python og PHP.
Send din første melding i testmodus allerede i dag
Opprett en konto, kopier en testnøkkel og kall API-et før du har koblet til en eneste kanal. Alle nye kontoer starter med 100 gratis meldinger.