واتس ديف
العودة للرئيسية English

سجلّ التغييرات

كل تغيير يراه العميل في الواجهة البرمجية أو في لوحة التحكّم، والأحدث أولاً.

سياسة الإصدارات وإيقاف الميزات

الواجهة البرمجية مُرقَّمة داخل الرابط نفسه: كل نقطة نهاية تحت /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 حرفاً على الأكثر، وvcard 65,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 للرسائل المجدولة، وعلى webhook message.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 (في الرسالة نفسها وفي webhook message.status) إحدى هذه القيم الثابتة:

    • media_url_blocked
    • media_too_large
    • media_type_not_allowed
    • media_unavailable

    يُعاد تجريب الخطأ المؤقت في الشبكة أو الخادم قبل أن تفشل الرسالة. أمّا الصورة التي لا تصلح فتُرفض فوراً بالرمز 422 validation_failed.

  • لا تقبل preview وbuttons وlist إلا مفاتيحها الموثّقة. ويُرفض أي مفتاح آخر بالرمز 422 validation_failed.

  • حدّ التأخير بين الرسائل في إعدادات الجلسة 10 ثوانٍ.

Webhooks

  • رابط الـwebhook الذي لا يشير مضيفه إلى عنوان عام يُرفض عند الحفظ بالرمز 422 validation_failed بدل أن يُحفَظ.
  • لا يُرسَل أي تسليم إلا إلى العنوان الذي فُحص، ولم تعد إعادة التوجيه تُتبَع. ويُعَدّ الردّ 3xx محاولة فاشلة.
  • صار سجلّ التسليم يحمل حقل error. يُملأ للتسليم الذي لم تُجرَّب محاولته أصلاً، بإحدى هذه القيم:
    • blocked_address
    • unresolvable_host
    • invalid_host
    • invalid_url
    • scheme_not_allowed
    • userinfo_not_allowed
    • endpoint_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.

لوحة التحكّم

  • تُخفي قائمة الرسائل رسائل بيئة الاختبار افتراضياً، وتوفّر عامل تصفية لإظهارها، حتى لا تزحم رسائل التجربة صندوق الرسائل الحقيقي.
شروط الخدمة سياسة الخصوصية سياسة الاستخدام المقبول