تخطَّ إلى المحتوى

الأخطاء

الأخطاء تستخدم رموز HTTP القياسية وترجّع دائمًا نفس الشكل:

{
"error": {
"type": "invalid_request_error",
"code": "missing_template_parameter",
"message": "Template \"order_shipped\" is missing the parameter(s): tracking.",
"param": "parameters",
"doc_url": "https://developers.k-message.kerneltics.com/errors#missing-template-parameter"
}
}

اعتمد على code في كودك. هو جزء من العقد وما يتغيّر اسمه أبدًا؛ الرموز تنضاف فقط. أما message فمكتوبة لإنسان يقرأ السجل وممكن تتغيّر صياغتها. وparam يسمّي الحقل الخاطئ إذا كان فيه واحد.

typeالمعنىإعادة المحاولة؟
authentication_errorالمفتاح ناقص أو غلط أو منتهي أو ملغيلا، صلّح المفتاح
permission_errorالمفتاح صحيح لكن ناقصه صلاحية، أو الاشتراك منتهيلا
invalid_request_errorفيه شيء غلط في الطلبلا، صلّح الطلب
rate_limit_errorطلبات كثيرةنعم، بعد Retry-After
api_errorالخطأ من عندنانعم
الرمزمتى
400المحتوى مو JSON صحيح، أو فيه حقل ما تقبله النقطة
401فشل التوثيق
403صلاحية ناقصة، أو عنوان IP غير مسموح، أو اشتراك متوقف
404ما فيه مورد بهذا المعرّف في منشأتك
409تعارض في منع التكرار، أو جهة اتصال مكررة
422الطلب صحيح شكلاً لكن حقل ناقص أو غلط
429تجاوزت حد الطلبات
500خطأ من عندنا، آمن تعيد المحاولة
503خدمة معتمَد عليها غير متاحة، آمن تعيد المحاولة

الرمز 404 معناه “مو في منشأتك”، وهذا يغطي المورد اللي ما هو موجود والمورد اللي يخص عميل ثاني. الاثنين ما ينفرقون بقصد: لو رجّعنا 403 على سجل يخص غيرك كان أكّدنا إن المعرّف حقيقي، وهذا يسمح لأي أحد يستكشف بيانات بقية العملاء بالتخمين.

ما أُرسل مفتاح. أرسل Authorization: Bearer km_live_....

المفتاح شكله غلط أو ما أُنشئ أصلاً. السبب المعتاد نسخ ناقص.

المفتاح تجاوز تاريخ انتهائه، والرسالة تذكر التاريخ. أنشئ غيره.

المفتاح أُلغي نهائيًا. أنشئ غيره.

المفتاح معطّل. أحد يقدر يفعّله من لوحة التحكم.

استُخدم مفتاح whm_ قديم مع /v1. تلك المفاتيح ما تحمل صلاحيات وغير مقبولة في الواجهة العامة.

المفتاح مقيّد بعناوين محددة والطلب ما جاء من واحد منها. الرسالة تذكر العنوان اللي شفناه، ويستاهل تتأكد منه: خلف NAT أو مزوّد سحابي غالبًا ما يكون اللي تتوقعه.

المفتاح صحيح لكن ناقصه الصلاحية اللي تحتاجها هذي النقطة. الرسالة تسمّيها.

اشتراك المنشأة متوقف. الواجهة تتوقف مع لوحة التحكم؛ كلّم اللي يدير حسابك.

المحتوى مو JSON صحيح، أو فيه حقل ما تقبله هذي النقطة. الحقول غير المعروفة تُرفض بدل ما تُتجاهل: كتابة phone بدل to المفروض تقول لك إن اسم الحقل غلط، مو إن to ناقص من محتوى فيه رقم واضح.

حقل مطلوب ناقص، أو موجود لكن قيمته غلط. param يسمّيه.

قيمة type مو وحدة من text أو template أو image أو video أو audio أو document.

ميتا ما اعتمدت القالب بعد. الرسالة تذكر اسم القالب وحالته. PENDING معناها انتظر، وREJECTED معناها صلّحه وأعد إرساله من لوحة التحكم.

القالب فيه متغيرات ما أرسلتها. الرسالة تعدّد الناقص واللي يتوقعه القالب.

هذا الفحص موجود لأن واتساب ما يسويه: يستبدل المتغيّر الناقص بفراغ، يوصّل الرسالة ناقصة، ويقول إنها نجحت. هذا المكان الوحيد اللي ينمسك فيه.

قيمة from ما تطابق أي رقم في منشأتك، أو ما فيه رقم موصول أصلاً. نادِ GET /v1/accounts تشوف الأسماء المتاحة.

جهة الاتصال ألغت الاشتراك في الرسائل التسويقية وفئة القالب MARKETING. مرفوض لأسباب نظامية، مو تفضيل. قوالب الخدمة والتحقق لا تزال توصلها.

فيه جهة اتصال بنفس الرقم، والرسالة تتضمن معرّفها. ما ندمج تلقائيًا، لأن تكامل ينشئ نفس العميل مرتين عنده خلل يستاهل يظهر.

نفس Idempotency-Key استُخدم مع محتوى مختلف، أو الطلب الأول لا يزال شغّال.

campaign_not_startable / campaign_has_no_recipients / campaign_not_editable

Section titled “campaign_not_startable / campaign_has_no_recipients / campaign_not_editable”

الحملة في حالة ما تسمح بهذي العملية. الرسالة تذكر الحالة الحالية. المستقبلون ما ينضافون إلا والحملة مسودة أو متوقفة مؤقتًا.

خفّف. Retry-After يقول لك كم ثانية تنتظر.

ما قدرنا نتحقق من استهلاكك، فرفضنا الطلب بدل ما نمرّره بدون قياس، لأن النقطة اللي يحميها تصرف من رصيدك في واتساب. أعد المحاولة بعد قليل.

واتساب رفض شيء، عادةً ملف وسائط بصيغة أو حجم ما يقبله.

الخطأ من عندنا. آمن تعيد المحاولة، وأأمن مع Idempotency-Key.