توثيق واجهة البرمجة
Edu4 Whatsapp Business API واجهة REST للشركات والمطورين لإرسال قوالب WhatsApp Business وإدارة حالة الحملات.
https://whatsapp.alnwabgh.com/api/v1/
هذه الصفحة عامة ولا تتطلب تسجيل دخول. لا تضع أسرارًا في الأمثلة، واستخدم مفتاحًا حقيقيًا فقط من بيئتك الخاصة.
كيف تبدأ
- اطلب من مسؤول المنصة إنشاء عميل واجهة وإصدار
API Key. - ضع المفتاح في رأس
Authorizationفقط. - استدعِ
GET /whatsapp/templatesلمعرفة القوالب المسموحة لحسابك. - أرسل أول حملة عبر
POST /whatsapp/bulk-sendمعIdempotency-Key. - تابع الحالة عبر
GET /whatsapp/bulk-status. - عالج الأخطاء وحدود الاستخدام، واستقبل Webhooks إن لزم.
المصادقة
تتم المصادقة حصريًا عبر رأس HTTP:
Authorization: Bearer {API_KEY}
مثال:
Authorization: Bearer edu4_live_xxxxxxxxx
- ضع المفتاح في رأس
Authorizationفقط. - لا تضعه في عنوان URL أو في Query.
- لا تضعه في جسم الطلب (Request Body).
- لا تشاركه في البريد أو المستودعات أو لقطات الشاشة.
- المفتاح الكامل يظهر مرة واحدة عند إنشائه أو تدويره من لوحة التحكم حسب سياسة المنصة. بعد ذلك لا يمكن استرجاع القيمة الكاملة.
- بادئة المفاتيح الحية:
edu4_live_
إرسال حملة رسائل
POST /api/v1/whatsapp/bulk-send
ينشئ حملة من نوع المصدر api ويضع الرسائل في الطابور ثم يعيد 202. لا يُستدعى Meta داخل نفس طلب HTTP.
المصادقة
مطلوبة: Authorization: Bearer.
الرؤوس
Content-Type: application/json(إلزامي)Authorization: Bearer {API_KEY}(إلزامي)Idempotency-Key(موصى به بشدة)X-Request-Id(اختياري)
جسم الطلب
template_name: اسم القالب.language: لغة القالب مثلar_EG.messages: قائمة مستلمين. كل عنصر يحتويphoneوparametersلـ BODY.- اختياري لكل رسالة:
headerوbuttonsإذا كان تعريف القالب يتطلبهما.
الحد الأقصى للرسائل في الطلب الواحد حاليًا: 1000 (قابل للتخصيص لكل عميل، وبحد إعدادات المنصة).
الحد الأقصى لحجم JSON: 2 MiB.
مثال طلب
{
"template_name": "student_absence_today",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"2026-08-17"
]
}
]
}
مثال استجابة 202
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
bulk_id هو المعرّف العام للحملة ويبدأ بـ cmp_ ثم 32 محرفًا سداسيًا. لا يُستخدم الرقم الداخلي لقاعدة البيانات.
رموز الحالة الشائعة
202 نجاح الطابور. 400 JSON أو نوع المحتوى. 401 مصادقة. 403 قالب غير مسموح. 409 تعارض المفتاح. 413 حجم كبير. 422 تحقق. 429 حد المعدل. 503 المزوّد غير جاهز.
حالة الحملة
GET /api/v1/whatsapp/bulk-status?bulk_id={bulk_id}
bulk_id هو المعرّف الذي أُرجع عند الإرسال. الحملة يجب أن تخص نفس العميل المصادق. خلاف ذلك تكون الاستجابة 404 CAMPAIGN_NOT_FOUND.
الحقول المعادة:
bulk_idstatusحالة الحملةtotal_messagesعدد الرسائلqueued/processing/sent/delivered/read/failedcreated_at/started_at/completed_at
هذا المسار لا يعيد أرقام الهواتف.
مثال استجابة
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "processing",
"total_messages": 3,
"queued": 1,
"processing": 0,
"sent": 1,
"delivered": 1,
"read": 0,
"failed": 0,
"created_at": "2026-08-17 08:00:00",
"started_at": "2026-08-17 08:00:02",
"completed_at": null
}
}
حالات الحملة
| الحالة | المعنى |
|---|---|
queued |
في الانتظار — الحملة أُنشئت والرسائل في الطابور ولم يبدأ الإرسال بعد. |
processing |
قيد المعالجة — بدأ العامل معالجة رسائل الحملة. |
completed |
مكتملة — انتهت كل الرسائل بنجاح دون فشل. |
partially_completed |
مكتملة جزئيًا — انتهت الحملة مع نجاح لبعض الرسائل وفشل لبعضها. |
failed |
فشلَت — انتهت الحملة وكل النتائج فشل أو لا يوجد نجاح. |
cancelled |
ملغاة — أُلغيت الحملة قبل اكتمال الإرسال. |
عدادات الرسائل
| الحقل | المعنى |
|---|---|
queued |
في الانتظار — رسائل لم تُرسل بعد. |
processing |
قيد الإرسال — رسائل سحبها العامل وما زالت قيد المعالجة. |
sent |
أُرسلت — قبلها المزوّد ولم تُحدَّث بعد إلى تسليم أو قراءة. |
delivered |
وُصلت — تأكيد التسليم من المزوّد. |
read |
قُرئت — تأكيد القراءة من المزوّد إن توفر. |
failed |
فشلَت — تعذر الإرسال أو رُفضت. |
قائمة القوالب
GET /api/v1/whatsapp/templates
يعيد القوالب المعيَّنة للعميل المصادق فقط. لا يعيد قوالب عملاء آخرين، ولا معرّفات داخلية، ولا أسرار المزوّد، ولا JSON المكوّنات الكامل.
الحقول: name، language، status، category، parameter_counts لـ body/header/buttons.
لمعرفة القوالب المسموح لك استخدامها: استدعِ هذا المسار. إن لم يظهر القالب في القائمة فستحصل عند الإرسال على TEMPLATE_NOT_ALLOWED.
مثال استجابة
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"templates": [
{
"name": "student_absence_today",
"language": "ar_EG",
"status": "APPROVED",
"category": "UTILITY",
"parameter_counts": {
"body": 2,
"header": 0,
"buttons": 0
}
}
]
}
}
القوالب بالتفصيل
التعريفات التالية مأخوذة من النسخة المخزّنة في النظام للغة ar_EG. عدد القوالب الموثّقة من التعريف الكامل: 13 من 13.
-
student_payment_received -
student_absence_today -
parent_student_payment_received -
parent_student_payment_due -
parent_student_exam_result -
parent_student_absence_two -
parent_student_absence_multiple -
employee_tasks -
employee_salary_details -
employee_salary_deduction -
employee_bonus -
employee_absence_one_day -
employee_absence_multiple_days
student_payment_received
اسم القالب
student_payment_received
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: مرحبًا …، تم تأكيد سداد مصروفات الشهر … بنجاح. نتمنى لك التوفيق في دراستك.
المكوّنات
مرحبًا {{1}}، تم تأكيد سداد مصروفات الشهر {{2}} بنجاح. نتمنى لك التوفيق في دراستك.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | الاسم الذي يظهر بعد الترحيب | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: الاسم الذي يظهر بعد الترحيب. | محمد علي |
| 2 | الشهر المذكور في جملة المصروفات | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: الشهر المذكور في جملة المصروفات. | يناير |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "student_payment_received",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"يناير"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (2).
student_absence_today
اسم القالب
student_absence_today
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: مرحبًا …، لاحظنا غيابك عن حصة اليوم بتاريخ …. نرجو متابعة الدروس بانتظام.
المكوّنات
مرحبًا {{1}}، لاحظنا غيابك عن حصة اليوم بتاريخ {{2}}. نرجو متابعة الدروس بانتظام.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | الاسم الذي يظهر بعد الترحيب | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: الاسم الذي يظهر بعد الترحيب. | محمد علي |
| 2 | التاريخ المذكور بعد «بتاريخ» | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: التاريخ المذكور بعد «بتاريخ». | 2026-08-17 |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "student_absence_today",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"2026-08-17"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (2).
parent_student_payment_received
اسم القالب
parent_student_payment_received
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة ولي الأمر، تم استلام مصروفات الشهر … الخاصة بالطالب … بنجاح. شكرًا لتعاونكم.
المكوّنات
السيد/السيدة ولي الأمر، تم استلام مصروفات الشهر {{1}} الخاصة بالطالب {{2}} بنجاح. شكرًا لتعاونكم.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | الشهر المذكور في جملة المصروفات | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: الشهر المذكور في جملة المصروفات. | يناير |
| 2 | اسم الطالب كما يظهر بعد كلمة الطالب | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: اسم الطالب كما يظهر بعد كلمة الطالب. | محمد علي |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "parent_student_payment_received",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"يناير",
"محمد علي"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (2).
parent_student_payment_due
اسم القالب
parent_student_payment_due
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة ولي الأمر، نذكركم أن مصروفات الشهر … الخاصة بالطالب … لم يتم سدادها حتى الآن. يرجى السداد في أقرب وقت.
المكوّنات
السيد/السيدة ولي الأمر، نذكركم أن مصروفات الشهر {{1}} الخاصة بالطالب {{2}} لم يتم سدادها حتى الآن. يرجى السداد في أقرب وقت.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | الشهر المذكور في جملة المصروفات | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: الشهر المذكور في جملة المصروفات. | يناير |
| 2 | اسم الطالب كما يظهر بعد كلمة الطالب | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: اسم الطالب كما يظهر بعد كلمة الطالب. | محمد علي |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "parent_student_payment_due",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"يناير",
"محمد علي"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (2).
parent_student_exam_result
اسم القالب
parent_student_exam_result
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة ولي الأمر، نود إبلاغكم بأن الطالب … حصل على درجة … في اختبار … بتاريخ … شكراً لكم
المكوّنات
السيد/السيدة ولي الأمر، نود إبلاغكم بأن الطالب {{1}} حصل على درجة {{2}} في اختبار {{3}} بتاريخ {{4}} شكراً لكم
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | اسم الطالب كما يظهر بعد كلمة الطالب | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: اسم الطالب كما يظهر بعد كلمة الطالب. | محمد علي |
| 2 | الدرجة | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: الدرجة. | 18/20 |
| 3 | اسم الاختبار | نص | يُدرج في موضع {{3}} في نص القالب المعتمد، ويمثّل: اسم الاختبار. | الرياضيات |
| 4 | التاريخ المذكور بعد «بتاريخ» | نص | يُدرج في موضع {{4}} في نص القالب المعتمد، ويمثّل: التاريخ المذكور بعد «بتاريخ». | 2026-08-17 |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "parent_student_exam_result",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"18/20",
"الرياضيات",
"2026-08-17"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (4).
parent_student_absence_two
اسم القالب
parent_student_absence_two
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة ولي الأمر، نود إعلامكم أن الطالب … قد تغيب بتاريخ … عن حصتين متتاليتين برجاء المتابعة.
المكوّنات
السيد/السيدة ولي الأمر، نود إعلامكم أن الطالب {{1}} قد تغيب بتاريخ {{2}} عن حصتين متتاليتين برجاء المتابعة.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | اسم الطالب كما يظهر بعد كلمة الطالب | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: اسم الطالب كما يظهر بعد كلمة الطالب. | محمد علي |
| 2 | التاريخ المذكور بعد «بتاريخ» | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: التاريخ المذكور بعد «بتاريخ». | 2026-08-17 |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "parent_student_absence_two",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"2026-08-17"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (2).
parent_student_absence_multiple
اسم القالب
parent_student_absence_multiple
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة ولي الأمر، الطالب … قد تغيب عن … حصص حتى تاريخ …. نرجو التعاون لتفادي تكرار الغياب.
المكوّنات
السيد/السيدة ولي الأمر، الطالب {{1}} قد تغيب عن {{2}} حصص حتى تاريخ {{3}}. نرجو التعاون لتفادي تكرار الغياب.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | اسم الطالب كما يظهر بعد كلمة الطالب | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: اسم الطالب كما يظهر بعد كلمة الطالب. | محمد علي |
| 2 | عدد الحصص | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: عدد الحصص. | 3 |
| 3 | التاريخ المذكور بعد «حتى تاريخ» | نص | يُدرج في موضع {{3}} في نص القالب المعتمد، ويمثّل: التاريخ المذكور بعد «حتى تاريخ». | 2026-08-17 |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "parent_student_absence_multiple",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"3",
"2026-08-17"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (3).
employee_tasks
اسم القالب
employee_tasks
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة …، هذه هي مهام عملكم ليوم … هي … شكرا لكم علي مجهودكم
المكوّنات
السيد/السيدة {{1}}، هذه هي مهام عملكم ليوم {{2}} هي {{3}} شكرا لكم علي مجهودكم
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | اسم المخاطَب بعد السيد/السيدة | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: اسم المخاطَب بعد السيد/السيدة. | محمد علي |
| 2 | يوم المهام | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: يوم المهام. | 2026-08-17 |
| 3 | نص المهام | نص | يُدرج في موضع {{3}} في نص القالب المعتمد، ويمثّل: نص المهام. | مراجعة ملفات اليوم |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "employee_tasks",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"2026-08-17",
"مراجعة ملفات اليوم"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (3).
employee_salary_details
اسم القالب
employee_salary_details
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة …، تفاصيل راتبكم لشهر … كالتالي: *الراتب*: … *الحوافز*: … *التأمينيات*: … *إجمالي خصم الغياب*: … *جزاءات*: … *تأخيرات*: … *سلف*: … *إضافات*: … *الراتب النهائي: …* شكرا لكم علي مجهودكم و نتمني لكم دوام التفوق.
المكوّنات
السيد/السيدة {{1}}، تفاصيل راتبكم لشهر {{2}} كالتالي:
*الراتب*: {{3}}
*الحوافز*: {{4}}
*التأمينيات*: {{5}}
*إجمالي خصم الغياب*: {{6}}
*جزاءات*: {{7}}
*تأخيرات*: {{8}}
*سلف*: {{9}}
*إضافات*: {{10}}
*الراتب النهائي: {{11}}*
شكرا لكم علي مجهودكم و نتمني لكم دوام التفوق.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | اسم المخاطَب بعد السيد/السيدة | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: اسم المخاطَب بعد السيد/السيدة. | محمد علي |
| 2 | شهر تفاصيل الراتب | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: شهر تفاصيل الراتب. | يناير |
| 3 | الراتب | نص | يُدرج في موضع {{3}} في نص القالب المعتمد، ويمثّل: الراتب. | 5000 |
| 4 | الحوافز | نص | يُدرج في موضع {{4}} في نص القالب المعتمد، ويمثّل: الحوافز. | 200 |
| 5 | التأمينيات | نص | يُدرج في موضع {{5}} في نص القالب المعتمد، ويمثّل: التأمينيات. | 100 |
| 6 | إجمالي خصم الغياب | نص | يُدرج في موضع {{6}} في نص القالب المعتمد، ويمثّل: إجمالي خصم الغياب. | 50 |
| 7 | جزاءات | نص | يُدرج في موضع {{7}} في نص القالب المعتمد، ويمثّل: جزاءات. | 0 |
| 8 | تأخيرات | نص | يُدرج في موضع {{8}} في نص القالب المعتمد، ويمثّل: تأخيرات. | 25 |
| 9 | سلف | نص | يُدرج في موضع {{9}} في نص القالب المعتمد، ويمثّل: سلف. | 100 |
| 10 | إضافات | نص | يُدرج في موضع {{10}} في نص القالب المعتمد، ويمثّل: إضافات. | 150 |
| 11 | الراتب النهائي | نص | يُدرج في موضع {{11}} في نص القالب المعتمد، ويمثّل: الراتب النهائي. | 5175 |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "employee_salary_details",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"يناير",
"5000",
"200",
"100",
"50",
"0",
"25",
"100",
"150",
"5175"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (11).
employee_salary_deduction
اسم القالب
employee_salary_deduction
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة …، تم تطبيق خصم قدره … على راتب شهر … بسبب … إذا كنت تعتقد بأنه هناك مشكله تواصل مع الإدارة.
المكوّنات
السيد/السيدة {{1}}، تم تطبيق خصم قدره {{2}} على راتب شهر {{3}} بسبب {{4}} إذا كنت تعتقد بأنه هناك مشكله تواصل مع الإدارة.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | اسم المخاطَب بعد السيد/السيدة | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: اسم المخاطَب بعد السيد/السيدة. | محمد علي |
| 2 | قيمة الخصم | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: قيمة الخصم. | 1500 |
| 3 | شهر الراتب | نص | يُدرج في موضع {{3}} في نص القالب المعتمد، ويمثّل: شهر الراتب. | يناير |
| 4 | سبب الخصم كما يظهر في النص | نص | يُدرج في موضع {{4}} في نص القالب المعتمد، ويمثّل: سبب الخصم كما يظهر في النص. | 1500 |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "employee_salary_deduction",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"1500",
"يناير",
"1500"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (4).
employee_bonus
اسم القالب
employee_bonus
اللغة
ar_EG
الحالة
APPROVED
التصنيف
MARKETING
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة …، تمت إضافة مكافأة قدرها … إلى راتب شهر … تقديرًا لجهودكم.
المكوّنات
السيد/السيدة {{1}}، تمت إضافة مكافأة قدرها {{2}} إلى راتب شهر {{3}} تقديرًا لجهودكم.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | اسم المخاطَب بعد السيد/السيدة | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: اسم المخاطَب بعد السيد/السيدة. | محمد علي |
| 2 | قيمة المكافأة | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: قيمة المكافأة. | 1500 |
| 3 | شهر الراتب | نص | يُدرج في موضع {{3}} في نص القالب المعتمد، ويمثّل: شهر الراتب. | يناير |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "employee_bonus",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"1500",
"يناير"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (3).
employee_absence_one_day
اسم القالب
employee_absence_one_day
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة …، تم تسجيل غيابكم عن العمل بتاريخ …. برجاء التواصل مع الإدارة إذا كان هناك عذر رسمي.
المكوّنات
السيد/السيدة {{1}}، تم تسجيل غيابكم عن العمل بتاريخ {{2}}. برجاء التواصل مع الإدارة إذا كان هناك عذر رسمي.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | اسم المخاطَب بعد السيد/السيدة | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: اسم المخاطَب بعد السيد/السيدة. | محمد علي |
| 2 | التاريخ المذكور بعد «بتاريخ» | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: التاريخ المذكور بعد «بتاريخ». | 2026-08-17 |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "employee_absence_one_day",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"2026-08-17"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (2).
employee_absence_multiple_days
اسم القالب
employee_absence_multiple_days
اللغة
ar_EG
الحالة
APPROVED
التصنيف
UTILITY
توجد نسخ بلغات أخرى في النظام: en_US. الأمثلة أدناه للغة التوثيق ar_EG.
الاستخدام
يُستخدم هذا القالب لإرسال النص المعتمد التالي بعد تعبئة المعاملات: السيد/السيدة …، تم تسجيل غيابكم لعدد … أيام متتالية حتى تاريخ …. يرجى التواصل مع الإدارة بشكل عاجل.
المكوّنات
السيد/السيدة {{1}}، تم تسجيل غيابكم لعدد {{2}} أيام متتالية حتى تاريخ {{3}}. يرجى التواصل مع الإدارة بشكل عاجل.
المعاملات
| الترتيب | اسم الحقل | النوع | الوصف | مثال |
|---|---|---|---|---|
| 1 | اسم المخاطَب بعد السيد/السيدة | نص | يُدرج في موضع {{1}} في نص القالب المعتمد، ويمثّل: اسم المخاطَب بعد السيد/السيدة. | محمد علي |
| 2 | عدد الأيام المتتالية | نص | يُدرج في موضع {{2}} في نص القالب المعتمد، ويمثّل: عدد الأيام المتتالية. | 3 |
| 3 | التاريخ المذكور بعد «حتى تاريخ» | نص | يُدرج في موضع {{3}} في نص القالب المعتمد، ويمثّل: التاريخ المذكور بعد «حتى تاريخ». | 2026-08-17 |
مثال استخدام
إرسال رسالة واحدة بهذا القالب إلى رقم تجريبي وهمي.
Request
POST /api/v1/whatsapp/bulk-send
{
"template_name": "employee_absence_multiple_days",
"language": "ar_EG",
"messages": [
{
"phone": "201001234567",
"parameters": [
"محمد علي",
"3",
"2026-08-17"
]
}
]
}
Response
{
"success": true,
"request_id": "req_0123456789abcdef0123456789abcdef",
"data": {
"bulk_id": "cmp_0123456789abcdef0123456789abcdef",
"status": "queued",
"total_messages": 1
}
}
ملاحظات
- لا يوجد Header في التعريف الحالي.
- لا يوجد Footer في التعريف الحالي.
- لا توجد Buttons في التعريف الحالي.
- مصفوفة parameters في طلب الإرسال تمثّل معاملات BODY حسب الترتيب، وليست Header أو Buttons.
- يجب أن يساوي عدد العناصر في parameters عدد مواضع BODY في القالب (3).
حدود الاستخدام
القيم التالية هي الإعدادات الحالية للمنصة. يمكن تخصيص حدود العميل من لوحة التحكم، وتُطبَّق الحدود الفعلية للعميل المصادق عند كل طلب.
| الحد | القيمة الحالية |
|---|---|
| أقصى عدد رسائل في الطلب الواحد | 1000 |
| أقصى عدد طلبات في الساعة (افتراضي للعميل) | 1000 |
| أقصى عدد رسائل في الساعة (افتراضي للعميل) | 10000 |
| نافذة الاحتساب | ساعة UTC الحالية |
عند التجاوز: 429 RATE_LIMIT_EXCEEDED.
Retry-After: ثوانٍ حتى نهاية الساعة الحالية.X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-Reset: ختم Unix لنهاية النافذة.
Idempotency
الرأس: Idempotency-Key
- يمنع إنشاء حملتين لنفس الطلب عند إعادة الإرسال بسبب انقطاع الشبكة أو مهلة العميل.
- نفس العميل + نفس المفتاح + نفس جسم الطلب يعيد الاستجابة الأصلية للحملة، مع رأس
Idempotent-Replay: trueعند إعادة التشغيل. - نفس المفتاح مع جسم مختلف يعيد
409 IDEMPOTENCY_CONFLICT. - طول المفتاح حتى 191 محرفًا. المفتاح الفارغ أو الأطول غير صالح.
- مدة صلاحية المفتاح الحالية: 24 ساعة (قابلة للإعداد في المنصة، بحد أقصى 168 ساعة).
معرّف الطلب
كل استجابة JSON تتضمن request_id، ويُعاد أيضًا في رأس X-Request-Id.
- يمكنك إرسال
X-Request-Idمن طرفك إن طابق النمط المسموح؛ وإلا تُنشئ المنصة معرّفًا يبدأ بـreq_. - استخدمه لتتبع الطلب عند التواصل مع الدعم الفني.
- لا يحتوي على أسرار.
Webhooks
تدعم المنصة إرسال أحداث إلى خادم شركتك عند تغيّر حالة الرسائل والحملات.
إعداد العنوان
عنوان الاستقبال والسر يُضبطان من لوحة التحكم بواسطة المسؤول في الإصدار الحالي. يمكنك قراءة الإعداد (دون السر) عبر:
GET /api/v1/whatsapp/webhook
التوقيع
الطلبات تُوقَّع بـ HMAC-SHA256:
signed_payload = timestamp + "." + raw_body
X-Webhook-Signature: sha256={hex}
X-Webhook-Timestamp: وقت Unix للتوقيع. ارفض الطلب خارج نافذة إعادة التشغيل الحالية (300 ثانية افتراضيًا).X-Webhook-Event-Id: معرّف الحدث. عالج كلidمرة واحدة.- السر لا يُعاد عبر الواجهة.
إعادة المحاولة
عدد المحاولات الافتراضي 5. مهلة الطلب 8 ثوانٍ. التراجع بالثواني: 1,1,1,1,1. استجب بـ 2xx بسرعة. الترتيب غير مضمون.
الأحداث
message.sent— قَبِل المزوّد الرسالةmessage.delivered— تم التسليمmessage.read— تمّت القراءةmessage.failed— فشلَت الرسالةcampaign.queued— أُنشئت حملة عبر الواجهةcampaign.processing— بدأت معالجة الحملةcampaign.completed— اكتملت الحملة بنجاحcampaign.partially_completed— اكتملت الحملة جزئيًاcampaign.failed— فشلَت الحملةcampaign.cancelled— أُلغيت الحملةwebhook.test— حدث اختبار يرسله المسؤول فقط
تفاصيل التشغيل للمسؤول موجودة في توثيق المنصة الداخلي للويب هوك، وهذه الصفحة تغطي ما يحتاجه المطوّر الخارجي للتحقق والمعالجة.
أخطاء API
شكل الخطأ الموحّد:
{
"success": false,
"request_id": "req_0123456789abcdef0123456789abcdef",
"error": {
"code": "INVALID_PHONE",
"message": "One or more phone numbers are invalid.",
"details": [
{
"index": 0,
"phone": "invalid"
}
]
}
}
| الرمز | HTTP | الشرح |
|---|---|---|
AUTHENTICATION_REQUIRED |
401 | مطلوب مصادقة — لم يُرسل رأس Authorization أو صيغته ليست Bearer. |
INVALID_API_KEY |
401 | مفتاح غير صالح — المفتاح غير موجود أو غير مكتمل أو لا يطابق أي مفتاح نشط. |
API_KEY_REVOKED |
401 | مفتاح ملغى — المفتاح أُلغي ولم يعد قابلاً للاستخدام. |
CLIENT_SUSPENDED |
401 | حساب معلّق — عميل الواجهة معلّق ولا يمكنه استدعاء النقاط المحمية. |
RATE_LIMIT_EXCEEDED |
429 | تجاوز حد المعدل — تجاوز عدد الطلبات أو الرسائل المسموح بها خلال الساعة الحالية. راجع رأس Retry-After. |
MAX_MESSAGES_EXCEEDED |
422 | عدد الرسائل أكبر من الحد — عدد العناصر في messages أكبر من حد الطلب الواحد للعميل أو الإعداد العام. |
INVALID_TEMPLATE |
422 | قالب غير صالح — اسم القالب غير موجود، أو حالته لا تسمح بالإرسال. |
TEMPLATE_NOT_ALLOWED |
403 | القالب غير مسموح — القالب موجود لكنه غير معيَّن لهذا العميل. |
INVALID_LANGUAGE |
422 | لغة غير صالحة — حقل language فارغ أو لا يطابق لغة القالب المخزّنة. |
INVALID_PHONE |
422 | رقم غير صالح — رقم واحد أو أكثر لا يطابق صيغة الهاتف المعتمدة في المنصة. |
INVALID_PARAMETERS |
422 | معاملات غير مطابقة — عدد أو نوع parameters لا يطابق تعريف القالب، أو Idempotency-Key غير صالح، أو عنصر messages تالف. |
EMPTY_MESSAGES |
422 | قائمة الرسائل فارغة — يجب أن تحتوي messages على مستلم واحد على الأقل. |
DUPLICATE_PHONE |
422 | رقم مكرر — لا يُسمح بتكرار نفس الرقم داخل الطلب الواحد. |
IDEMPOTENCY_CONFLICT |
409 | تعارض Idempotency — أُعيد استخدام نفس Idempotency-Key مع محتوى مختلف، أو الطلب السابق لم يكتمل بعد. |
CAMPAIGN_NOT_FOUND |
404 | الحملة غير موجودة — قيمة bulk_id غير صالحة أو لا تخص هذا العميل. لا يُكشف إن كانت الحملة تخص عميلًا آخر. |
PROVIDER_UNAVAILABLE |
503 | المزوّد غير جاهز — إعدادات WhatsApp غير مكتملة على المنصة عند إنشاء الحملة. |
PAYLOAD_TOO_LARGE |
413 | جسم الطلب كبير — حجم JSON أكبر من الحد الأقصى المعتمد. |
INVALID_JSON |
400 | JSON غير صالح — جسم الطلب ليس JSON صحيحًا أو ليس كائنًا. |
INVALID_CONTENT_TYPE |
400 | نوع المحتوى غير صحيح — يجب أن يحتوي Content-Type على application/json. |
INTERNAL_ERROR |
500 | خطأ داخلي — فشل غير متوقع. أرفق request_id عند التواصل مع الدعم. لا تُعاد أسرار أو تتبعات. |
رموز HTTP
| الرمز | الاستخدام في هذه الواجهة |
|---|---|
| 200 | نجاح — استجابة ناجحة لـ bulk-status و templates و webhook و health. |
| 202 | قُبل الطلب للمعالجة — bulk-send أنشأ الحملة وأضاف الرسائل للطابور. لا يرسل إلى Meta داخل نفس طلب HTTP. |
| 400 | طلب غير صالح — INVALID_JSON أو INVALID_CONTENT_TYPE أو Idempotency-Key غير صالح. |
| 401 | غير مصرّح — مصادقة مفقودة أو مفتاح غير صالح أو ملغى أو عميل معلّق. |
| 403 | ممنوع — TEMPLATE_NOT_ALLOWED عندما القالب غير معيَّن للعميل. |
| 404 | غير موجود — CAMPAIGN_NOT_FOUND أو مسار API غير معروف. |
| 409 | تعارض — IDEMPOTENCY_CONFLICT. |
| 413 | الحجم كبير — PAYLOAD_TOO_LARGE. |
| 422 | تعذر المعالجة — أخطاء التحقق: القالب، اللغة، الهاتف، المعاملات، القائمة الفارغة، التكرار، تجاوز حد الرسائل. |
| 429 | حد المعدل — RATE_LIMIT_EXCEEDED مع Retry-After و X-RateLimit-*. |
| 500 | خطأ خادم — INTERNAL_ERROR. |
| 502 | بوابة غير صالحة — غير مستخدم في استجابات Public API الحالية (bulk-send/status/templates). فشل المزوّد يظهر لاحقًا في حالة الرسالة أو الحملة وليس كرد فوري على طلب الإرسال. غير مستخدم حاليًا في Public API |
| 503 | الخدمة غير متاحة — PROVIDER_UNAVAILABLE عندما إعدادات WhatsApp غير مكتملة. |
أمثلة cURL
استبدل المفتاح الوهمي بمفتاحك. لا تضع مفتاحًا حقيقيًا في التوثيق أو المستودعات.
إرسال حملة
curl -sS -X POST 'https://whatsapp.alnwabgh.com/api/v1/whatsapp/bulk-send' \
-H 'Authorization: Bearer edu4_live_xxxxxxxxx' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: bulk-send-example-001' \
-d '{
"template_name": "student_absence_today",
"language": "ar_EG",
"messages": [
{"phone": "201001234567", "parameters": ["محمد علي", "2026-08-17"]}
]
}'
حالة الحملة
curl -sS 'https://whatsapp.alnwabgh.com/api/v1/whatsapp/bulk-status?bulk_id=cmp_0123456789abcdef0123456789abcdef' \ -H 'Authorization: Bearer edu4_live_xxxxxxxxx'
القوالب
curl -sS 'https://whatsapp.alnwabgh.com/api/v1/whatsapp/templates' \ -H 'Authorization: Bearer edu4_live_xxxxxxxxx'