واجهة API لبوابة المراسلة
واجهة API واحدة لكل قنوات المراسلة
أرسل رسائل WhatsApp Business و SMS و Telegram و Messenger و Instagram و TikTok عبر نقطة REST واحدة. دفع مسبق، وفوترة لكل رسالة صادرة، مع إشعارات Webhook بحالة التسليم ووضع للاختبار.
- يبدأ من
- $0.0003
- لكل رسالة صادرة
- عند التسجيل
- 100
- رسالة مجانية
- الالتزام
- لا يوجد
- دفع مسبق، بلا عقد
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
}القنوات
سبعة أنواع من القنوات بصيغة طلب واحدة
اربط جهات الإرسال التي تملكها أصلًا. تصبح كل واحدة منها معرّف قناة تمرّره إلى نقطة النهاية نفسها، وتعيد إليك الحالات نفسها.
- $0.001WhatsApp Businessقوالب ورسائل تفاعلية ووسائط على رقمك الخاص في Cloud API.نص · مرفقات · قالب · أزرار الرد · قائمة · زر رابط · موقع · جهات اتصال
- $0.0005SMSرسائل نصية ووسائط من رقمك الخاص على Twilio.نص · مرفقات
- $0.0005SMS OTPمسار نصي فقط لرموز التحقق لمرة واحدة.نص
- $0.0003Telegramرسائل الروبوتات مع الأزرار والاستطلاعات والمواقع والوسائط.نص · مرفقات · أزرار الرد · موقع · جهات اتصال · استطلاع
- $0.0005Messengerمحادثات مع من يراسلون صفحتك على Facebook.نص · مرفقات · أزرار الرد
- $0.0005Instagramالرسائل المباشرة لحساب Instagram احترافي.نص · مرفقات · أزرار الرد
- $0.0005TikTokالرسائل المباشرة لحساب أعمال على TikTok.نص · مرفقات · أزرار الرد
- استخدم قنواتك الخاصةأرقامك وروبوتاتك تبقى ملككتعرّف على متطلبات كل قناة
كيف يعمل
من التسجيل إلى رسالة مُسلَّمة في أربع خطوات
لا مكالمات مبيعات ولا حد أدنى للالتزام. يمكنك تنفيذ أول استدعاء للـ API في وضع الاختبار بعد دقيقة من إنشاء الحساب.
- الخطوة 01
أنشئ حسابًا
سجّل، وأكّد بريدك الإلكتروني، وأنشئ مفتاح API من لوحة التحكم. مفاتيح الاختبار تعمل فورًا، قبل ربط أي قناة.
- الخطوة 02
اربط قناة
سجّل الدخول عبر Facebook أو TikTok من لوحة التحكم لربط رقم WhatsApp أو صفحة أو حساب أعمال. وأضف روبوت Telegram أو رقم Twilio ببيانات اعتماده، من لوحة التحكم أو عبر
POST /v1/channels. - الخطوة 03
أرسل عبر نقطة نهاية واحدة
يستقبل
POST /v1/messagesمعرّف القناة والمستلم وكائن محتوى بحسب النوع. صيغة الطلب واحدة في كل القنوات. - الخطوة 04
تتبّع كل عملية تسليم
تُبلغك إشعارات Webhook الموقّعة بحالات الإرسال والتسليم والقراءة والفشل. والسجل نفسه متاح في لوحة التحكم وعبر
GET /v1/messages.
أنواع الرسائل
ما ترسله هو ما يراه المستلم
لكل رسالة نوع وكائن محتوى تحت مفتاح يحمل اسم ذلك النوع. اختر نوعًا لترى نص الطلب بجانب الرسالة التي ينتجها.
{
"channel": "ch_7Hq2mN5vB8cX1zL0pK3j",
"to": "+971501234567",
"type": "text",
"text": {
"body": "تم شحن طلبك رقم #1042. تتبّعه عبر https://example.com/t/1042",
"preview_url": true
},
"reference": "order-1042"
}نص عادي تقبله كل أنواع القنوات. فعّل preview_url لتعرض القناة معاينة للرابط.
القنواتWhatsApp Business وSMS وSMS OTP وTelegram وMessenger وInstagram وTikTok
لوحة التحكم
لوحة تحكم لكل ما لا يُكتب بالكود
أنشئ المفاتيح، واربط القنوات، وابحث في سجل الرسائل، وأعد إرسال إشعارات Webhook، وأدِر الفوترة. كل ما تعرضه لوحة التحكم متاح أيضًا عبر الـ API.
الأسعار
ادفع بالرسالة، أو اشترِ الرسائل بالجملة
اشحن محفظة مسبقة الدفع بمبلغ يبدأ من $10 وادفع سعر الرسالة في كل قناة، أو اشترِ باقة من أرصدة الرسائل للأحجام الكبيرة على قنواتك الأعلى سعرًا.
10 ألف رسالة
$8
$0.0008 للرسالة
- 10,000 رسالة صادرة
- صالحة لمدة 3 أشهر من تاريخ الشراء
- صالحة لكل أنواع القنوات
100 ألف رسالة
مميّزة$60
$0.0006 للرسالة
- 100,000 رسالة صادرة
- صالحة لمدة 6 أشهر من تاريخ الشراء
- صالحة لكل أنواع القنوات
1 مليون رسالة
$400
$0.0004 للرسالة
- 1,000,000 رسالة صادرة
- صالحة لمدة 12 شهرًا من تاريخ الشراء
- صالحة لكل أنواع القنوات
الدفع حسب الاستخدام
| القناة | للرسالة |
|---|---|
| WhatsApp Business | $0.001 |
| Telegram | $0.0003 |
| SMS | $0.0005 |
| SMS OTP | $0.0005 |
| Messenger | $0.0005 |
| $0.0005 | |
| TikTok | $0.0005 |
ما الذي يغطيه السعر
- يُحتسبالرسائل الصادرة التي يقبلها الـ API، لحظة قبولها.
- مجانيالرسائل الواردة، ورسائل وضع الاختبار، وإشعارات Webhook، ولوحة التحكم.
- يُستردّأي رسالة تنتهي بالفشل، إلى الباقة أو المحفظة التي خُصمت منها.
- منفصلالرسوم التي تفرضها Meta أو شركات الاتصالات أو المزوّدون الآخرون على القناة نفسها.
تجربة المطوّر
صُمّم ليُدمج مرة واحدة ثم يعمل دون متابعة
إشعارات Webhook موقّعة، وإعادة محاولة آمنة، وبيئة اختبار تتصرف كبيئة الإنتاج، وأخطاء يمكنك بناء منطقك عليها.
إشعارات Webhook يمكنك التحقق منها
كل إشعار موقّع بخوارزمية HMAC-SHA256 على الطابع الزمني ونص الطلب الخام، في الترويسة OmniMessage-Signature. أجب بأي رمز 2xx خلال 10 ثوانٍ. تُعاد محاولة الإشعارات الفاشلة ثماني مرات بفواصل متزايدة، من 30 ثانية حتى 24 ساعة.
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"
}
}
}وضع اختبار لا يكلّف شيئًا
تستخدم مفاتيح الاختبار قنوات تجريبية جاهزة، فلا حاجة لربط أي شيء. تحدد الأرقام الأخيرة من رقم المستلم النتيجة المُحاكاة، وتُطلق إشعارات Webhook كما في بيئة الإنتاج.
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" }
}'أخطاء لها نوع ورمز
لكل استجابة غير 2xx البنية نفسها: type لفئة الخطأ، وcode ثابت تبني عليه منطقك، وparam للمعامل المسبّب إن وُجد، وrequest_id لفريق الدعم.
{
"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"
}
}طلبات POST آمنة التكرار
أرسل الترويسة
Idempotency-Key، وأي إعادة محاولة خلال 24 ساعة تعيد الاستجابة المحفوظة معIdempotent-Replayed: true، دون إرسال أو خصم مرتين.حدود يمكن توقّعها
100 طلب في الثانية لكل مفتاح على
POST /v1/messages، و20 على ما سواه. تحمل كل استجابةRateLimit-Remaining، وتحمل الاستجابة 429 الترويسةRetry-After.الإرسال على دفعات
يقبل
POST /v1/messages/batchحتى 100 رسالة. كل عنصر يُقبل أو يُرفض ويُحتسب مستقلًا، وتُبلغك الاستجابة 207 بالنتائج حسب الترتيب.مفاتيح محدّدة النطاق
امنح كل مفتاح النطاقات التي يحتاجها فقط، مثل
messages:writeأوbilling:read، واحصره في قائمة عناوين IP مسموح بها.
أسئلة
قبل أن تبدأ الدمج
الإجابات المختصرة هنا. والمفصّلة في المستندات.
هل أحتاج إلى رقم WhatsApp أو روبوت أو رقم SMS خاص بي؟
نعم. OmniMessage بوابة تعمل بقنواتك أنت: تربط رقمك على WhatsApp Cloud API أو روبوت Telegram أو رقم Twilio أو حسابك على منصات التواصل، وتحتفظ بملكيته. تعرض صفحة القنوات متطلبات كل نوع.
على ماذا أُحاسَب تحديدًا؟
خصم واحد لكل رسالة صادرة يقبلها الـ API: رصيد من الباقة إن كانت لديك باقة، وإلا فسعر الرسالة لنوع القناة من محفظتك. الرسائل الواردة ورسائل وضع الاختبار مجانية، والرسالة التي تنتهي بالفشل تُستردّ قيمتها تلقائيًا.
هل تشمل الأسعار رسوم Meta أو شركات الاتصالات أو المزوّدين؟
لا. رسوم البوابة تغطي الـ API وتتبّع التسليم وإشعارات Webhook ولوحة التحكم. أما الرسوم التي تفرضها Meta أو Twilio أو أي مزوّد آخر على القناة نفسها فتبقى بينك وبين ذلك المزوّد.
كيف أختبر دون إرسال رسائل حقيقية؟
استخدم مفتاحًا يبدأ بـ om_test_. لكل حساب قناة تجريبية لكل نوع، مثل ch_test_whatsapp. لا يُسلَّم شيء ولا يُحتسب شيء، والحالات مُحاكاة: المستلم الذي ينتهي رقمه بـ 0000 تفشل رسالته، و0001 تبقى في حالة «أُرسلت»، و0002 تُقرأ أيضًا، وما عدا ذلك يُسلَّم خلال ثانيتين تقريبًا.
ماذا يحدث عند نفاد رصيدي؟
يجيب الـ API بـ 402 insufficient_balance ولا يُدرج شيء في قائمة الانتظار، فلا تترتب عليك مبالغ لاحقًا. يمكنك الاشتراك في الحدث balance.low أو تفعيل الشحن التلقائي لشحن المحفظة عند نزولها عن حد تختاره.
هل أحتاج إلى SDK؟
لا. الـ API يعتمد JSON عبر HTTPS مع مصادقة Bearer، فأي عميل HTTP يفي بالغرض. تتضمن المستندات أمثلة بـ cURL و Node و Python و PHP.
أرسل رسالتك الأولى في وضع الاختبار اليوم
أنشئ حسابًا، وانسخ مفتاح اختبار، واستدعِ الـ API قبل أن تربط أي قناة. يبدأ كل حساب جديد بـ100 رسالة مجانية.