İçeriğe geç

Mesajlaşma ağ geçidi API’si

Tüm mesajlaşma kanalları için tek API

WhatsApp Business, SMS, Telegram, Messenger, Instagram ve TikTok mesajlarını tek bir REST uç noktası üzerinden gönderin. Ön ödemeli, giden mesaj başına faturalandırılır; teslimat webhook’ları ve test modu dâhildir.

Başlangıç fiyatı
$0,0003
giden mesaj başına
Kayıt olunca
100
ücretsiz mesaj
Taahhüt
Yok
ön ödemeli, sözleşmesiz
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
}
  • Kanal türleriTek uç noktanın ardında 7 tür
  • Mesaj türleri9 tür; metinden etkileşimli listelere
  • Başlangıç fiyatıGiden mesaj başına $0,0003
  • Hız sınırıAnahtar başına saniyede 100 istek
  • Toplu gönderim boyutuİstek başına en fazla 100 mesaj
  • Webhook yeniden denemeleri8 kez; 30 saniyeden 24 saate artan aralıklarla
  • Idempotency penceresi24 saat
  • Test moduÜcretsiz, kanal gerekmez
  • Başarısız mesajlarÜcreti otomatik iade edilir
  • Gelen mesajlarÜcretsiz

Nasıl çalışır?

Kayıttan teslim edilmiş mesaja dört adımda

Satış görüşmesi de asgari taahhüt de yok. Hesap oluşturduktan bir dakika sonra test modunda ilk API çağrınızı yapabilirsiniz.

  1. Adım 01

    Hesap oluşturun

    Kaydolun, e-postanızı doğrulayın ve konsolda bir API anahtarı oluşturun. Test anahtarları, herhangi bir kanal bağlanmadan önce bile hemen çalışır.

  2. Adım 02

    Kanal bağlayın

    Bir WhatsApp numarası, bir Sayfa veya bir işletme hesabı bağlamak için konsolda Facebook veya TikTok ile giriş yapın. Telegram botunu veya Twilio numarasını kimlik bilgileriyle, konsoldan ya da POST /v1/channels ile ekleyin.

  3. Adım 03

    Tek uç noktadan gönderin

    POST /v1/messages bir kanal kimliği, bir alıcı ve türü belirtilmiş bir içerik nesnesi alır. İstek biçimi tüm kanallarda aynıdır.

  4. Adım 04

    Her teslimatı izleyin

    İmzalı webhook’lar gönderildi, teslim edildi, okundu ve başarısız durumlarını bildirir. Aynı geçmiş konsolda ve GET /v1/messages üzerinde de yer alır.

Mesaj türleri

Ne gönderirseniz alıcı onu görür

Her mesajın bir türü ve o türün adını taşıyan anahtarın altında bir içerik nesnesi vardır. Birini seçin; istek gövdesini, ürettiği mesajla yan yana görün.

POST /v1/messages
{
  "channel": "ch_7Hq2mN5vB8cX1zL0pK3j",
  "to": "+971501234567",
  "type": "text",
  "text": {
    "body": "#1042 numaralı siparişiniz kargoya verildi. Buradan takip edebilirsiniz: https://example.com/t/1042",
    "preview_url": true
  },
  "reference": "order-1042"
}

Tüm kanal türlerinin kabul ettiği düz metin. Kanalın bağlantı önizlemesi oluşturması için preview_url değerini ayarlayın.

KanallarWhatsApp Business, SMS, SMS OTP, Telegram, Messenger, Instagram ve TikTok

Konsol

Kod olmayan işler için bir konsol

Anahtar oluşturun, kanal bağlayın, mesaj günlüğünde arama yapın, webhook teslimatlarını yeniden oynatın ve faturalandırmayı yönetin. Konsolda gördüğünüz her şeye API üzerinden de erişebilirsiniz.

Genel bakış. Hesap ve mod bazında cüzdan bakiyesi, kalan paket kredileri ve son 30 günün giden mesaj hacmi. Bu sayfadaki ekranlar örnek verilerle çizilmiştir.
Mesaj günlüğü. Kanala, duruma, alıcıya veya kendi referansınıza göre filtreleyin; durum geçmişini ve ücretini görmek için herhangi bir mesajı açın.
Faturalandırma. Cüzdana bakiye yükleyin, paket satın alın, otomatik yüklemeyi ayarlayın ve makbuzları indirin. Paket kredileri, ne kadar kaldığını ve ne zaman sona ereceğini gösterir.

Fiyatlandırma

Mesaj başına ödeyin veya toplu mesaj satın alın

Ön ödemeli cüzdanınıza en az $10 yükleyip her kanalın mesaj başına fiyatını ödeyin ya da en yüksek fiyatlı kanallarınızdaki hacim için mesaj kredisi paketi satın alın.

10 B mesaj

$8

Mesaj başına $0,0008

  • 10.000 giden mesaj
  • Satın alma tarihinden itibaren 3 ay geçerli
  • Tüm kanal türlerinde geçerli
10 B ile başlayın

100 B mesaj

Öne çıkan

$60

Mesaj başına $0,0006

  • 100.000 giden mesaj
  • Satın alma tarihinden itibaren 6 ay geçerli
  • Tüm kanal türlerinde geçerli
100 B ile başlayın

1 Mn mesaj

$400

Mesaj başına $0,0004

  • 1.000.000 giden mesaj
  • Satın alma tarihinden itibaren 12 ay geçerli
  • Tüm kanal türlerinde geçerli
1 Mn ile başlayın

Kullandıkça öde

Kanal türüne göre giden mesaj başına kullandıkça öde fiyatı, ABD doları cinsinden
KanalMesaj başına
WhatsApp Business$0,001
Telegram$0,0003
SMS$0,0005
SMS OTP$0,0005
Messenger$0,0005
Instagram$0,0005
TikTok$0,0005

Fiyat neleri kapsar?

  • FaturalandırılırAPI’nin kabul ettiği giden mesajlar; kabul edildikleri anda.
  • ÜcretsizGelen mesajlar, test modu mesajları, webhook’lar ve konsol.
  • İade edilirBaşarısız olarak sonuçlanan her mesaj; alındığı pakete veya cüzdana geri döner.
  • AyrıdırMeta’nın, operatörlerin veya diğer sağlayıcıların kanalın kendisi için aldığı ücretler.

Geliştirici deneyimi

Bir kez entegre edip unutmanız için tasarlandı

İmzalı webhook’lar, güvenli yeniden denemeler, üretim ortamı gibi davranan bir sandbox ve kodunuzda ayrıştırabileceğiniz hatalar.

Doğrulayabileceğiniz webhook’lar

Her teslimat, zaman damgası ve ham gövde üzerinden HMAC-SHA256 ile imzalanır; imza OmniMessage-Signature üstbilgisinde yer alır. 10 saniye içinde herhangi bir 2xx koduyla yanıt verin. Başarısız teslimatlar, 30 saniyeden 24 saate kadar artan aralıklarla sekiz kez yeniden denenir.

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;
}
message.delivered olayı
{
  "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"
    }
  }
}

Hiçbir maliyeti olmayan bir test modu

Test anahtarları yerleşik sandbox kanallarını kullanır; bağlanacak bir şey yoktur. Alıcının son haneleri simüle edilen sonucu belirler ve webhook’larınız üretim ortamındaki gibi tetiklenir.

Sandbox isteği, okundu olarak sonuçlanır
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" }
  }'

Türü ve kodu olan hatalar

2xx dışındaki her yanıt aynı gövdeye sahiptir: hata sınıfını belirten bir type, koşul yazabileceğiniz kararlı bir code, varsa soruna yol açan param ve destek için bir request_id.

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"
  }
}
  • Idempotent POST istekleri

    Bir Idempotency-Key üstbilgisi gönderin; 24 saat içindeki yeniden deneme, iki kez gönderim veya tahsilat yapmadan, saklanan yanıtı Idempotent-Replayed: true ile döndürür.

  • Öngörülebilir sınırlar

    POST /v1/messages için anahtar başına saniyede 100 istek, diğer uç noktalarda 20. Her yanıt RateLimit-Remaining taşır; 429 yanıtı ise Retry-After içerir.

  • Toplu gönderim

    POST /v1/messages/batch en fazla 100 mesaj kabul eder. Her öğe ayrı ayrı kabul edilir, reddedilir ve faturalandırılır; 207 yanıtı bunları dizin numarasına göre bildirir.

  • Kapsamı sınırlı anahtarlar

    Her anahtara yalnızca ihtiyaç duyduğu kapsamları verin; örneğin messages:write veya billing:read. Ayrıca anahtarı bir IP izin listesiyle sınırlayın.

Sorular

Entegrasyona başlamadan önce

Kısa yanıtlar burada. Uzun yanıtlar dokümantasyonda.

Kendi WhatsApp numarama, botuma veya SMS numarama ihtiyacım var mı?

Evet. OmniMessage, kendi kanalınızı getirdiğiniz bir ağ geçididir: kendi WhatsApp Cloud API numaranızı, Telegram botunuzu, Twilio numaranızı veya sosyal medya hesabınızı bağlarsınız ve sahipliği sizde kalır. Kanallar sayfası, her tür için gerekenleri listeler.

Tam olarak ne için ücretlendiriliyorum?

API’nin kabul ettiği her giden mesaj için tek bir ücret: varsa bir paket kredisi, yoksa kanal türünün mesaj başına fiyatı cüzdanınızdan düşülür. Gelen mesajlar ve test modu mesajları ücretsizdir; başarısız olarak sonuçlanan mesajın ücreti otomatik olarak iade edilir.

Meta, operatör veya sağlayıcı ücretleri dâhil mi?

Hayır. Ağ geçidi ücreti API’yi, teslimat takibini, webhook’ları ve konsolu kapsar. Meta’nın, Twilio’nun veya başka bir sağlayıcının kanalın kendisi için aldığı ücretler, sizinle o sağlayıcı arasında kalır.

Gerçek mesaj göndermeden nasıl test ederim?

om_test_ ile başlayan bir anahtar kullanın. Her hesapta, her tür için ch_test_whatsapp gibi bir sandbox kanalı bulunur. Hiçbir şey teslim edilmez veya faturalandırılmaz ve durumlar simüle edilir: 0000 ile biten bir alıcı başarısız olur, 0001 gönderildi durumunda kalır, 0002 ayrıca okunur; diğer tüm alıcılara yaklaşık iki saniye içinde teslim edilir.

Bakiyem bittiğinde ne olur?

API 402 insufficient_balance yanıtını verir ve hiçbir şey kuyruğa alınmaz; dolayısıyla sonradan borçlu duruma düşmezsiniz. balance.low olayına abone olabilir veya cüzdan, seçtiğiniz bir eşiğin altına düştüğünde bakiye yüklenmesi için otomatik yüklemeyi açabilirsiniz.

Bir SDK’ya ihtiyacım var mı?

Hayır. API, bearer kimlik doğrulamasıyla HTTPS üzerinden JSON kullanır; bu nedenle herhangi bir HTTP istemcisi iş görür. Dokümantasyonda cURL, Node, Python ve PHP örnekleri bulunur.

İlk mesajınızı bugün test modunda gönderin

Bir hesap oluşturun, bir test anahtarı kopyalayın ve tek bir kanal bile bağlamadan API’yi çağırın. Her yeni hesap 100 ücretsiz mesaj ile başlar.