سجلّ التغييرات
كل تغيير يراه العميل في الواجهة البرمجية أو في لوحة التحكّم، والأحدث أولاً.
سياسة الإصدارات وإيقاف الميزات
الواجهة البرمجية مُرقَّمة داخل الرابط نفسه: كل نقطة نهاية تحت /v1.
التغييرات الإضافية تُنشر دون إشعار مسبق. قد تظهر في أي وقت نقاط نهاية جديدة، أو معاملات طلب اختيارية جديدة، أو حقول جديدة داخل الاستجابات القائمة، أو قيم جديدة ضمن القوائم القائمة، أو رموز أخطاء جديدة لحالات فشل جديدة. لذلك يجب أن يتجاهل تكاملك أي حقل لا يعرفه في الاستجابة بدل أن يتوقف بسببه.
لا يُحذف أي عنصر ولا يتغيّر معناه دون إشعار مدّته 90 يوماً. لن يُحذف أي حقل في الاستجابة، ولا
معامل طلب، ولا نقطة نهاية، ولا رمز خطأ داخل /v1، ولن يُعاد تسميته أو يُعطى معنى جديداً، إلا بعد
نشر إعلان إيقاف مؤرَّخ في هذه الصفحة قبل 90 يوماً على الأقل. ولن يتغيّر معنى أي رمز خطأ قائم.
التغييرات الكاسرة تصدر تحت بادئة إصدار جديدة. إذا تعذّر إجراء التغيير بشكل إضافي فسيصدر تحت
بادئة جديدة، ويبقى /v1 يعمل طوال مدّة الإشعار المعلنة هنا.
2026-09-29 — إعادة تشغيل تستعيد الرقم المفقود، وشهر جديد بعد إعادة التشغيل
الأرقام (الجلسات)
- صار
POST /v1/sessions/{id}/restartعلى رقم لم يعد محرّك واتساب يحتفظ به ينشئه من جديد بالمعرّف نفسه بدل أن يفشل. ويعود بانتظار المسح، والجوال غير مرتبط. - التجديد يعيد تشغيل الرقم الموقوف لعدم وجود اشتراك حتى لو كان المحرّك قد فقده. وإن فشلت إعادة التشغيل رغم ذلك تخبرك لوحة التحكّم بأن تعيد تشغيل الرقم أو تعيد ربطه بنفسك.
- صار الفحص اليومي يعيد أيضاً تشغيل كل رقم موقوف لعدم وجود اشتراك عاد حسابه مشتركاً، فلا يبقى رقم موقوفاً بعد التجديد.
- الرقم الذي أُعيد تشغيله يحصل على 30 يوماً جديدة ليُربط قبل أن يمكن إيقافه لبقائه دون ربط.
- صارت إعادة تفعيل رقم محذوف تذكر عدد الرسائل التي يستطيع إرسالها في يومه الأول من فترة الإحماء.
2026-09-28 — الأرقام الموقوفة لعدم وجود اشتراك تعود عند التجديد
الأرقام (الجلسات)
- الرقم الموقوف لأن الحساب بلا اشتراك لا يمكن إعادة تشغيله أو إعادة ربطه أو طلب رمز QR أو رمز ربط له
حتى يعود الاشتراك فعّالاً: تجيب
restartوlogoutوqrوpairing-codeبـ403 subscription_required، وتوضّح لوحة التحكّم السبب. أما الرقم الموقوف لبقائه دون ربط فيمكن إعادة تشغيله ليُربط. - تجديد الاشتراك يعيد تشغيل تلك الأرقام تلقائياً، وتخبرك لوحة التحكّم بكل رقم أُعيد تشغيله.
- لم يعد الرقم الموقوف لخموله يعرض سبب الإيقاف بعد اتصاله من جديد بأي طريق.
مرجع الواجهة البرمجية
- صار
GET /v1/media/{message}وGET /v1/scheduled-messages/{id}يوثّقان ردّهما الناجح الفعلي بدل مثال خطأ.
2026-09-28 — كتابات الأرقام، والرقم بعد إعادة الربط، والأرقام الخاملة
الإرسال
- كل حقل مستلم (
to، وrecipientsفي الحملات، وparticipantsفي القروبات، وphoneفي قائمة إلغاء الاشتراك) يقبل أي كتابة للرقم:+و00والمسافات والشرطات والنقاط والأقواس، والأرقام العربية أو الفارسية أو عريضة العرض، وعلامات الاتجاه الخفية، والخوادم بأحرف كبيرة مثل@C.USأو@S.WhatsApp.Net، ولواحق الجهاز:N. وكلها تُطوى إلى كتابة واحدة، فيطابق إلغاء الاشتراك الرقم أيّاً كانت طريقة كتابته. ويُخزَّنtoفي الرسالة المجدولة وphoneفي مستلم الحملة بهذه الكتابة ويُعادان بها. - صار يُرفض (
422 invalid_recipientللإرسال والجدولة؛ وskippedبسببinvalid_formatفي الحملة؛ و422 validation_failedلأعضاء القروب): الرقم المحلي دون رمز الدولة (يبدأ بـ0)، والنص حول الرقم، والأرقام من خطوط أخرى، والخوادم غيرc.usوs.whatsapp.netوlidوg.usوnewsletterوbroadcast. ولم تكن هذه الأرقام تصل إلى أحد من قبل.
الأرقام (الجلسات)
- عندما يرى
GET /v1/sessions/{id}أو الفحص الدوري الرقم متصلاً قبل وصول حدث واتساب نفسه، يملأphoneفوراً. ويُرسل حدثsession.statusبحالةconnectedمرة واحدة لكل اتصال، أيّاً كان من رآه أولاً. - الرقم الذي مضى على حسابه 30 يوماً دون اشتراك، أو بقي 30 يوماً ينتظر المسح أو في حالة فشل، صار يُوقَف. ولا يُحذف أبداً: يبقى معرّفه وإعداداته وسجلّه، وتعيده إعادة التشغيل أو إعادة الربط. وتعرض لوحة التحكّم سبب الإيقاف.
البوت
- لم تعد رسائل الترحيب والغياب في واتساب بزنس توقف البوت، فيحصل العميل الجديد على رد. والرد المكتوب من الجوال خلال 10 ثوانٍ من رسالة العميل لا يبدأ إيقافاً، لكنه يمدّد إيقافاً قائماً.
2026-09-27 — إشعارات الاستلام المتأخّرة، وحدود المدخلات، وتدخّل الموظف
التسليم
- لم يعد يضيع إشعار الاستلام الذي يرسله واتساب قبل وصول ردّ الإرسال نفسه، أو بكتابة أخرى
للمحادثة (مثل محادثة
@lid)، فصار يصل إلىmessage.status. - الرسالة التي فشلت بـ
delivery_unconfirmedتصبحsentثمdeliveredأوreadإذا أكّدها واتساب لاحقاً. ويصبحerrorفيهاnull، ويحسبها الاستهلاك مرسلة لا فاشلة، وتحسبها الحملة مرسلة. - حالة
message.statusتتقدّم فقط: لا تعود منreadإلىdelivered، ولا يأتي إشعار فشل بعدdeliveredأوread. والإرسال الذي يرفضه واتساب قبل وصول ردّه يفشل بـsend_failed.
البوت
- صار تدخّل الموظف يعمل: الرد المكتوب من الجوال أو من واتساب ويب يوقف البوت في تلك المحادثة
للمدّة المضبوطة، وكان لا يعمل من قبل. والرسائل المرسلة عبر الواجهة البرمجية أو من البوت لا
توقفه أبداً، والرسائل المرسلة من الجوال لا تُمرَّر بوصفها
message.received.
الأرقام (الجلسات)
- نقطة نهاية جديدة:
POST /v1/sessions/{id}/reactivateتعيد رقماً محذوفاً بمعرّفه نفسه، بانتظار المسح. وتأخذ خانة من الباقة مثل إنشاء رقم، وتحتاجsessions:writeواشتراكاً فعّالاً. - صار
409 session_state_conflictيحملdetails.reasonبجانبdetails.status:linkedأوnot_readyأوstoppedأوdeletedأوnot_deleted. GET /v1/sessions/{id}يتحقّق من الحالة لدى محرّك واتساب لحظة القراءة، ويعود إلى آخر حالة معروفة بعد نحو 3 ثوانٍ. وما زالت القائمة تعرض الحالة المخزّنة.- صار كائن الجلسة يحمل
deleted_at. - صارت الأرقام المحذوفة لا ترسل أحداث حالة فعلاً: رغم ما ورد في مدخل 2026-09-26، كان الفحص الدوري
ما زال يرسل حدثاً بعد الحذف. وأحداث
session.statusالتي يرسلها ذلك الفحص صارت تحملphone.
الإرسال
- حدّ
textوcaptionونص الرسالة المعدّلة 65,536 حرفاً. - إرسال جهات الاتصال يقبل من 1 إلى 50 بطاقة (
fullNameوphoneNumberوorganizationوwhatsappId، أوvcardخام). وكل حقل 1,024 حرفاً على الأكثر، وvcard65,536؛ وتُرفض المفاتيح غير المعروفة. - عنوان القروب 100 حرف على الأكثر، ووصفه 2,048.
- تجاوز الحدّ يعطي
422 validation_failedمع اسم الحقل. - المستلم بصيغة
…@s.whatsapp.net، مع لاحقة جهاز:Nأو بدونها، يُقبل ويُخزَّن بصيغة…@c.us. وصارت طلبات إلغاء الاشتراك تطابق هذه الكتابة في الحملات والرسائل المجدولة، ويطويها مرشّحchat_idبالطريقة نفسها. وأعضاء القروب ذوو لاحقة الجهاز يُعاملون كالرقم نفسه. - حملة واحدة فقط تعمل على الرقم في الوقت نفسه، وصار ذلك مضموناً بقفل. والحملة التي تبدأ أو تُستأنف
بينما تعمل أخرى على الرقم نفسه تنتظر بحالة
pending؛ واستئناف حملة تعمل أصلاً يعطي409 invalid_bulk_state.
الـWebhooks
POST /v1/webhooks/{id}/deliveries/{delivery}/retryيجيب409 webhook_delivery_not_retryableما لم تكن حالة التسليمfailed.
الحساب ومفاتيح الواجهة البرمجية
- يضيف
GET /v1/usageالحقلsubscription_active. ودون اشتراك فعّال يكونremainingصفراً للفترتين بدلnull. - المفاتيح الجديدة والمُدوَّرة شكلها
<id>|wd_live_…(حيّة) أو<id>|wd_test_…(اختبار). والمفاتيح الحالية لم تتغيّر وتبقى تعمل. تعامل مع المفتاح كقيمة مبهمة.
لوحة التحكّم وتسجيل الدخول
- لم يعد سيل من التسجيلات الجديدة قادراً على منع رموز التحقّق عن العملاء الحاليين: الرموز المرسلة إلى أرقامهم الموثّقة لها رصيد مستقل.
2026-09-26 — دورة حياة الرقم وقوائم عناوين IP لمفاتيح الواجهة البرمجية
الأرقام (الجلسات)
- نقطة نهاية جديدة:
POST /v1/sessions/{id}/logoutتفصل الجوال وتُبقي الجلسة: المعرّف نفسه وخانة الرقم نفسها. ثم تنتظر الجلسة مسح رمز QR جديد أو رمز ربط. والرقم الذي يُربط بعدها يبدأ فترة الإحماء من جديد. - تفحص
qrوpairing-codeوrestartوlogoutحالة الجلسة أولاً. وإذا لم يكن للإجراء معنى في تلك الحالة تجيب409 session_state_conflictمعdetails.statusبدل سؤال واتساب. - صلاحية جديدة
sessions:connectتغطّيqrوpairing-codeوrestartوlogout. وما زالتsessions:writeتشملها، فتبقى المفاتيح الحالية تعمل. - يجب أن يكون رقم رمز الربط رقماً دولياً؛ وما عدا ذلك
422 validation_failed. - صار الرقم الفاشل يُحسب من حدّ الأرقام في باقتك إلى أن يُحذف أو يُعاد ربطه. والرقم الذي فشل إنشاؤه يعيد خانته.
- لم يعد حدثُ
session.statusالمتأخّر قادراً على إرجاع حالة الجلسة إلى الوراء، ولم تعد الأرقام المحذوفة ترسل أحداث حالة. - يُعاد فحص البروكسي الخارجي للجلسة بانتظام. وإذا وُجد يشير إلى عنوان خاص أو داخلي في فحصين متتاليين تُوقَف جلسته ويُزال البروكسي.
مفاتيح الواجهة البرمجية
- تقبل قائمة عناوين IP المسموح بها للمفتاح عناوين مفردة ونطاقات CIDR، لـIPv4 وIPv6. ويمكن ضبطها وتعديلها من لوحة التحكّم.
- صارت رسالة رفض الطلب تذكر عنوان IP الذي جاء منه.
لوحة التحكّم
- إعادة الربط تربط جوالاً برقم موجود بالمعرّف نفسه، برمز QR أو برمز ربط.
- تسجيل خروج الرقم يفصل الجوال ويُبقي المعرّف.
- إعادة التفعيل تعيد رقماً محذوفاً بمعرّفه نفسه إذا كانت في باقتك خانة متاحة.
- حذف الرقم يوضّح صراحةً أن المعرّف، وكل تكامل بُني عليه، يتوقفان عن العمل.
2026-09-25 — تأكيد التسليم، وحصّة دقيقة، وحماية الحساب
التسليم
- صار لكل رسالة معرّف خاص بها. إذا استلم محرّك واتساب الرسالة وضاع ردّه، تبقى الرسالة بحالة
queuedإلى أن يُتأكَّد من تسليمها، لمدة تصل إلى نحو 30 دقيقة. ثم تصبحsent، أو تفشل بالرمزdelivery_unconfirmed، ولا تُرسَل مرّتين أبداً. والرسالة التي تُؤكَّد بهذه الطريقة تُطلقsentثمdeliveredأوread. - صار حقل
errorعند الفشل رمزاً ثابتاً، لا نصّ خطأ خاماً. يسري ذلك على الرسائل، وعلىerrorلمستلمي الحملات، وlast_errorللرسائل المجدولة، وعلى webhookmessage.status. أمثلة:upstream_timeoutوupstream_unreachableوdelivery_unconfirmedوmedia_too_largeوsuppressedوaccount_suspended؛ والقائمة الكاملة في «List messages». وقد أُعيدت كتابة القيم المخزَّنة بهذه الرموز.
الحصّة والحدود والمفاتيح
- صارت
quota_exceededوdaily_cap_reachedوquota_insufficientتحسب الرسائل التي ما زالت في الطابور، والمستلمين الذين لم يُرسَل إليهم بعد في الحملات المفتوحة، فلا تتجاوز دفعةٌ من الطلبات حدَّ الباقة. والحملة الموقوفة مؤقتاً تبقى محتفظة بحصّة مستلميها حتى تنتهي أو تُلغى. - يضيف
GET /v1/usageالحقلينtoday.reservedوmonth.reserved. وقيمةremainingورؤوسX-Quota-*تُحسب بعد خصمهما. - يسري حدّ معدّل الطلبات على الحساب كلّه، منفصلاً بين مفاتيح التشغيل ومفاتيح الاختبار، ولم يعد لكل مفتاح على حدة.
- الحدّ الأقصى 10 مفاتيح نشطة لكل حساب. ولم يعد ممكناً تدوير مفتاح منتهٍ أو ملغى؛ أنشئ مفتاحاً جديداً. ويُرفض تاريخ انتهاء في الماضي.
مفاتيح منع التكرار (Idempotency)
- صار مفتاح
Idempotency-Keyمرتبطاً أيضاً بالجلسة التي استُخدم فيها أول مرة. استخدامه على جلسة أخرى، أو بين مفتاح اختبار ومفتاح تشغيل، يعيد409 idempotency_key_reused. - وصارت الرسائل المجدولة تقارن جسم الطلب أيضاً.
التحقّق من المدخلات
- تُرفض الرسالة المجدولة ذات المستلم غير الصالح بالرمز
422 invalid_recipientعند جدولتها. - يرفض
PUTوDELETE /v1/messages/{id}الرسالة الواردة بالرمز422 validation_failed، والرسالة الصادرة التي لم تُرسَل بالرمز409 message_not_sent. - يحتاج الاستطلاع إلى اسم لا يزيد على 255 محرفاً، ومن خيارين إلى 12 خياراً فريداً لا يزيد كلٌّ
منها على 100 محرف؛ وما عدا ذلك
422 validation_failed.
المجموعات
- تقبل إضافة المشاركين، وإنشاء مجموعة، 20 شخصاً على الأكثر في الطلب الواحد. ويقبل الحذف والترقية والتنزيل 1,024 على الأكثر. ويُتحقَّق من كل معرّف.
- تُتخطّى الأرقام المحظورة وتُذكر في
skipped(وفيmeta.skippedعند الإنشاء). - لكل رقم ميزانية يومية لإضافة المشاركين. بعد تجاوزها يكون الرد
429 daily_cap_reachedمعdetails.scope: group_adds. - تعيد تغييرات المشاركين ردَّ واتساب لكل شخص:
{ok, participants, skipped}. وتكونokصحيحة فقط إذا نجحت العملية للجميع. - صارت قائمة المجموعات وعرض المجموعة يعيدان
idوsubjectوownerوparticipants_countعلى المحرّك الذي تعمل به الخدمة؛ وكانت فارغة من قبل.
الرسائل الواردة وطلبات إلغاء الاشتراك
- في
message.receivedوواجهة الرسائل، صارfromهو معرّف محادثة هاتف المرسل كلما كشفه واتساب. وحقل جديدfrom_lidيحمل معرّف @lidللمرسل إذا وصلت الرسالة بهذه الصيغة. ويضيف تصدير الرسائل العمود نفسه. - قد تحتوي قائمة الحظر على معرّفات
…@lid. يقبلهاPOST /v1/suppressions، ويرفض بالرمز422معرّفات المجموعات والقنوات والبث. وDELETEيحذف كل صيغ الشخص نفسه. - إضافة رقم إلى الحظر تتخطّاه في الحملات المعلَّقة، والحملات تعيد فحص كل مستلم قبيل الإرسال (يُتخطّى
بالرمز
suppressed). والرسالة المجدولة إلى رقم محظور تفشل بالرمزsuppressed.
إيقاف الحساب
- الحساب الموقوف لا يُرسل شيئاً:
- يُرفض إرسال الواجهة البرمجية بالرمز
403 account_suspended؛ - تتوقف الحملات الجارية مؤقتاً بالسبب
account_suspended؛ - تفشل الرسائل المجدولة التي يحين موعدها بالرمز
account_suspended؛ - يصمت البوت.
- يُرفض إرسال الواجهة البرمجية بالرمز
- ويبقى بإمكان الحساب عرض حملاته ورسائله المجدولة وقراءتها وإلغاؤها عبر الواجهة البرمجية.
الجلسات
- لم يعد
session.statusيكرّرconnectedللاتصال نفسه. - صارت خطوات الربط الجديدة بمفتاح المرور (passkey) في واتساب تظهر بالحالة
scan_qr. - يعيد فحص الرقم معرّف محادثة الهاتف حتى عندما يجيب واتساب بمعرّف
@lid.
الفوترة
- تحتفظ الباقات المدفوعة بالخدمة كاملة طوال فترة السماح بعد تاريخ الانتهاء.
- ترسل لوحة التحكّم تذكيراً بالتجديد قبل انتهاء الاشتراك بـ7 أيام و3 أيام ويوم واحد، وإشعاراً عند بدء فترة السماح. وأثناء فترة السماح تُظهر بطاقة الاشتراك موعد توقّف الخدمة.
2026-09-25 — إرسال أكثر أماناً وتحقّق أدقّ من المدخلات
الروابط والوسائط
-
لم تعد الرسائل النصية العادية تحصل على معاينة تلقائية للرابط، ولا الرسالة بعد تعديلها. إن أردت بطاقة معاينة فأرسل
type: link_preview. -
الملف المُعطى برابط (
media.urlوpreview.image.urlوfile.urlفي صورة الملف الشخصي وصورة المجموعة) تنزّله المنصّة الآن بنفسها قبيل الإرسال، ثم تسلّمه إلى واتساب ملفاً لا رابطاً. في الرسائل المجدولة والحملات يحدث ذلك وقت الإرسال لا وقت طلبك. والحملة تنزّل ملفها مرّة واحدة لجميع المستلمين. -
يجب أن يكون الرابط
httpأوhttps، وأن يشير مضيفه إلى عنوان عام. يُرفض أي رابط آخر بالرمز422 validation_failed. تُتبَع ثلاث عمليات إعادة توجيه على الأكثر، وتُفحص كل واحدة منها بالطريقة نفسها. ويجب أن يكتمل التنزيل خلال 20 ثانية. -
حدود الحجم: 16 ميغابايت لوسائط الرسائل، و5 ميغابايت لصور الملف الشخصي والمجموعات وصور معاينة الروابط. وتسري هذه الحدود على الملف المُنزَّل وعلى
dataالمضمَّنة على حدّ سواء. -
يجب أن يناسب نوعُ الملف نوعَ الرسالة:
- الصورة: JPEG أو PNG أو WebP أو GIF؛
- الفيديو: أي نوع فيديو؛
- الرسالة الصوتية: أي نوع صوت؛
- المستند: أي نوع.
-
الرسالة التي لا يصلح ملفها تفشل، وتحمل في حقل
error(في الرسالة نفسها وفي webhookmessage.status) إحدى هذه القيم الثابتة:media_url_blockedmedia_too_largemedia_type_not_allowedmedia_unavailable
يُعاد تجريب الخطأ المؤقت في الشبكة أو الخادم قبل أن تفشل الرسالة. أمّا الصورة التي لا تصلح فتُرفض فوراً بالرمز
422 validation_failed. -
لا تقبل
previewوbuttonsوlistإلا مفاتيحها الموثّقة. ويُرفض أي مفتاح آخر بالرمز422 validation_failed. -
حدّ التأخير بين الرسائل في إعدادات الجلسة 10 ثوانٍ.
Webhooks
- رابط الـwebhook الذي لا يشير مضيفه إلى عنوان عام يُرفض عند الحفظ بالرمز
422 validation_failedبدل أن يُحفَظ. - لا يُرسَل أي تسليم إلا إلى العنوان الذي فُحص، ولم تعد إعادة التوجيه تُتبَع. ويُعَدّ الردّ
3xxمحاولة فاشلة. - صار سجلّ التسليم يحمل حقل
error. يُملأ للتسليم الذي لم تُجرَّب محاولته أصلاً، بإحدى هذه القيم:blocked_addressunresolvable_hostinvalid_hostinvalid_urlscheme_not_alloweduserinfo_not_allowedendpoint_inactive
الجلسات
- يجب أن يكون
proxy.serverبالصيغةhost:port، وأن يكون مضيفه عاماً. ولا يقبل بروتوكولاً ولا مساراً ولا بيانات دخول. - يُرسَل
proxy.usernameوproxy.passwordمعاً، وبالأحرف المذكورة في المرجع فقط. - يُرفض أي مفتاح آخر تحت
proxy.
الأخطاء والمدخلات
- رموز أخطاء جديدة:
invalid_cursor(422): قيمةcursorلم تُصدرها هذه القائمة؛invalid_encoding(400): قيمة ليست UTF-8 صالحة أو تحتوي على محرف NUL.
- يُرفض
to: "status@broadcast"بالرمزinvalid_recipient. - يُرفض مفتاح
Idempotency-Keyالذي يزيد على 255 محرفاً أو يحتوي على محارف تحكّم، بالرمز422 validation_failed. - المعرِّف غير الرقمي في المسار يعيد الآن
404 not_foundبدل خطأ في الخادم. - لم تعد تحديثات «الحالة» التي ينشرها جهات اتصالك في واتساب تُعامَل كرسائل. فهي لا تُخزَّن ولا تُرسَل إلى الـwebhooks، وقد حُذف ما كان مخزَّناً منها.
لوحة التحكّم
- محاولات تسجيل الدخول ورموز التحقّق محدودة لكل حساب ولكل رقم هاتف ولكل شبكة. وبعد رموز خاطئة كثيرة تخبرك لوحة التحكّم بذلك وبموعد المحاولة التالية، ولا تُرسل رمزاً جديداً قبله.
- تُحفَظ أرقام الهواتف بالصيغة الدولية، فلا يمكن تسجيل الرقم نفسه مرّتين بكتابتين مختلفتين.
2026-08-15 — عميلان رسميّان: PHP و Node
صدرت مكتبتان رسميّتان للتعامل مع الواجهة البرمجية:
composer require whatsdev/whatsdev-php
npm install @whatsdev/sdk
تغطّيان نقاط النهاية التي يستخدمها أي تكامل يومياً، وتصلان إلى البقية عبر دالة request() عامة.
وفي كلٍّ منهما استثناء مُصنَّف لكل رمز خطأ، وإرفاق تلقائي لمفتاح Idempotency-Key مع كل إرسال حتى
لا يُسلَّم انقطاعُ اتصالٍ رسالةً مرّتين، وتصفّح تلقائي للقوائم المُرقَّمة، وإتاحة رؤوس الحصّة
المتبقّية على نتيجة الإرسال، والتحقّق من توقيع الويب هوك بمقارنة ثابتة الزمن. ولا تعتمد أيٌّ منهما
على أي مكتبة تشغيل خارجية، وتُسجِّل حزمة PHP واجهة Laravel تلقائياً عند وجود Laravel.
لم يتغيّر شيء في الواجهة البرمجية نفسها — هاتان مكتبتان للسطح الموثَّق أصلاً.
2026-08 — بياناتك: التصدير والحذف ومدد الاحتفاظ
تصدير نسخة من بياناتك
- جديد في اللوحة. صارت صفحة ملفّك الشخصي تبني أرشيفاً مضغوطاً (zip) للحساب يضمّ: بيانات الحساب
والاشتراك، والمستخدمين، والرسائل، وجهات الاتصال وحقولها المخصّصة، والقوائم، والرسائل المجدولة،
والحملات، والقوالب، والأرقام الموقوفة، والجلسات، ووجهات الـwebhook، والمدفوعات، وبيانات مفاتيح
الـAPI الوصفية، بصيغة ملفّات CSV ومعها ملفّ
manifest.jsonيذكر كل فئة استُثنيت من الأرشيف وسبب استثنائها. - ولا يحمل الأرشيف أي بيانات اعتماد: مفتاح الـAPI لا يوجد إلا كبصمة غير قابلة للعكس، ولا تُصدَّر إطلاقاً أسرار توقيع الـwebhook ولا بيانات اعتماد وسيط الجلسة ولا بصمات كلمات المرور.
- أرشيف واحد كل 24 ساعة. نُشعرك حين يصبح جاهزاً، ولا يُنزّله إلا مستخدم مسجَّل الدخول في الحساب نفسه ولا يتاح عبر رابط عام، ويُحذف بعد 7 أيام من إنشائه.
حذف حسابك
- جديد في اللوحة. صار بإمكانك إغلاق الحساب بنفسك من الصفحة نفسها.
- وبمجرّد تأكيدك ينتهي الوصول: تُلغى كل مفاتيح الـAPI، وتُفصل كل أرقام واتساب وتُعاد، وتُلغى كل رسالة مجدولة قيد الانتظار وكل حملة جارية. ولا يعود شيء من ذلك إن عدلت عن رأيك.
- أمّا كل ما عدا ذلك ممّا يحمله الحساب، بما فيه الملفّات المخزّنة، فيُمحى نهائياً بعد 14 يوماً. ويمكنك حتى تلك اللحظة إلغاء الطلب من اللوحة فيعود الحساب للعمل.
- وتبقى السجلات المالية محفوظة بصورة مجهولة الهوية للأغراض المحاسبية: تُفصل عن الحساب وتُزال منها الحقول التي قد تدلّ عليه، فلا يمكن ردّها إليه بعد ذلك.
مدّة الاحتفاظ في بيئة الاختبار
- تُحذف جلسات الاختبار بعد تجاوزها مدّة الاحتفاظ الخاصة ببيئة الاختبار، وتُحذف معها الرسائل التابعة لها. فهو حدّ على عمر الجلسة لا حدّ عام على عمر بيانات بيئة الاختبار: الجلسة التجريبية التي تُبقيها حيّة تحتفظ برسائلها.
2026-08 — بيئة الاختبار (Sandbox) والترقيم بالمؤشّر
بيئة الاختبار (Sandbox)
- تُصدر للحسابات الجديدة مفتاح API تجريبي عند التسجيل. المفتاح التجريبي لا يحتاج اشتراكاً فعّالاً، وله حدّ معدّل طلبات خاص به مستقل عن حدّ باقتك.
- جلسات الاختبار تعمل مقابل واتساب محاكى: تتّصل من تلقاء نفسها، ولا تستهلك من عدد الجلسات المسموح به في باقتك، ولا ترتبط بحساب واتساب حقيقي إطلاقاً.
- الإرسال بمفتاح تجريبي يمرّ عبر نقطة نهاية الإرسال المعتادة ويعيد الاستجابة المعتادة، لكنه لا يصل إلى واتساب ولا يُحتسب من حصّة الرسائل في باقتك، ويخضع بدلاً من ذلك لحدّ يومي خاص ببيئة الاختبار.
- نقطة نهاية جديدة:
POST /v1/sandbox/inboundتحقن رسالة واردة محاكاة عبر المسار نفسه الذي تسلكه الرسالة الحقيقية، فتختبر مستقبِل الـwebhook لديك وتحقّق التوقيع والردود التلقائية من طرف إلى طرف دون أن تطلب من أحد مراسلتك. - الفصل بين التجريبي والحقيقي قائم في الاتجاهين: يُرفض المفتاح التجريبي على جلسة حقيقية، ويُرفض
المفتاح الحقيقي على جلسة اختبار، ولا يعيد
GET /v1/sessionsإلا الجلسات المطابقة لوضع المفتاح المستخدم. - طلب الإيقاف المحاكى («إيقاف») يُكتشف ويُردّ عليه برسالة التأكيد نفسها، وتمرّ عبر النقل المحاكى
فلا تصل إلى أحد. الفارق الوحيد أنّه لا يُكتب في قائمة الإيقاف الحقيقية: القائمة على مستوى
الحساب لا الجلسة، فلا يجوز لإيقاف محاكى أن يمنع رقماً حقيقياً من إرسالك الفعلي. وللسبب نفسه لا
يستطيع المفتاح التجريبي التعديل على القائمة (
POSTوDELETE /v1/suppressions)، مع بقاء قراءتها متاحة له. - الـwebhook المُنشأ بمفتاح تجريبي يجب أن يكون مقيّداً بجلسة اختبار، أي أنّ
whatsapp_session_idمطلوب معه: الـwebhook بلا جلسة يشمل الحساب كلّه ويستقبل أحداث جلساتك الحقيقية بنصوصها وأرقامها، وهذا ما لا يجوز أن يصل إليه مفتاح تجريبي. - تُحذف جلسات الاختبار — ومعها الرسائل التابعة لها — بعد تجاوزها مدّة الاحتفاظ الخاصة ببيئة الاختبار. ولا تمسّ هذه العملية أي شيء خارج بيئة الاختبار.
الترقيم بالمؤشّر (Cursor)
- صار
?cursor=مقبولاً في قوائم: رسائل الجلسة، والرسائل المجدولة، وجهات الاتصال، وعمليات الإرسال الجماعي، ومستلمي الإرسال الجماعي، وعمليات تسليم الـwebhook. - استخدامه اختياري وإضافي. إن لم تُرسل
cursorبقي الترقيم بالصفحات كما هو تماماً: الترتيب نفسه، وmetaنفسها، والروابط نفسها. - الغاية منه ثبات التصفّح لا السرعة: التنقّل بين الصفحات برقم الصفحة بينما تصل صفوف جديدة يكرّر بعض الصفوف ويتخطّى بعضها، أمّا التنقّل بالمؤشّر فلا.
- في وضع المؤشّر تحمل الاستجابة
meta.next_cursorوmeta.prev_cursorبدلmeta.totalوmeta.current_pageوmeta.last_pageوmeta.fromوmeta.to، ويكونlinks.firstوlinks.lastفارغَين. اتبعlinks.nextفهو يحافظ على ما أرسلته من عوامل تصفية وقيمةper_page.
لوحة التحكّم
- تُخفي قائمة الرسائل رسائل بيئة الاختبار افتراضياً، وتوفّر عامل تصفية لإظهارها، حتى لا تزحم رسائل التجربة صندوق الرسائل الحقيقي.