اربط نظامك بمحادثات عملائك
واجهة برمجية واحدة لإرسال رسائل واتساب، ومزامنة جهات الاتصال، وقراءة المحادثات — وويب هوك موقّعة تُشعر نظامك بما يحدث لحظياً بدل أن يستطلعنا.
ابدأ في خمس دقائق
ثلاث خطوات من الصفر إلى أول رسالة تصل عميلك.
- 1
ولّد مفتاحاً
الإعدادات ← مفاتيح API. يُعرض مرّة واحدة فقط — انسخه فوراً.
- 2
اختر قناة وقالباً
GET /channels و GET /templates يعطيانك ما هو جاهز للإرسال.
- 3
أرسل
نداء واحد. الرسالة تدخل طابورنا وتصل واتساب خلال ثوانٍ.
curl -X POST https://nawf-backend.onrender.com/api/v1/public/messages/template \
-H "X-API-Key: sk_..." \
-H "Content-Type: application/json" \
-d '{
"to": "9665xxxxxxxx",
"templateName": "order_confirmed",
"variables": ["أحمد", "1042"]
}'المصادقة والصلاحيات
أرسل مفتاحك في ترويسة X-API-Key، أو كـBearer إن كان عميلك يفرض ذلك — كلاهما مقبول.
X-API-Key: sk_live_...
# أو
Authorization: Bearer sk_live_...READ
قراءة فقط
التقارير ولوحات المتابعة
WRITE
كتابة لا تُخاطب عميلاً
مزامنة جهات الاتصال
SEND
إرسال فعلي
الأقوى — امنحه بحساب
امنح كل مفتاح أقلّ ما يحتاج. مفتاحُ لوحةِ تقاريرك لا يحتاج SEND — وتسريبُه عندئذٍ يكشف بيانات ولا يُرسل باسمك.
مرجع النقاط
مولَّد من التوثيق نفسه — فما تراه هنا هو ما يقبله الخادم فعلاً.
الرسائل
/conversations/{id}/messagesرسائل محادثة
ترقيم بالمؤشّر لا بالتخطّي — لا يبطؤ مع طول التاريخ
/messages/textإرسال رسالة نصّية
داخل نافذة الـ٢٤ ساعة فقط — خارجها استعمل قالباً
/messages/templateإرسال قالب
نقطة التكامل الأساسية: إشعارات الطلبات وتأكيد المواعيد
المحادثات
/conversationsالمحادثات
قائمة المحادثات مع حالتها والمسند إليه
/conversationsفتح محادثة
فتح محادثة مع رقم — آمن التكرار، يُعيد القائمة إن وُجدت
جهات الاتصال
/contactsجهات الاتصال
قائمة جهات الاتصال مع بحث اختياري بالاسم أو الرقم
/contactsإنشاء أو تحديث جهة اتصال
مزامنة قاعدة عملائك إلينا — آمن التكرار بالرقم
الحساب والقنوات والقوالب
/accountحسابك
بيانات مؤسستك وخطتك وحدودها
/channelsالقنوات
القنوات النشطة — منها تختار channelId للإرسال
/templatesالقوالب
القوالب المعتمدة من Meta فقط — الجاهزة للإرسال
الأساس: https://nawf-backend.onrender.com/api/v1/public — والتوثيق التفاعلي يجرّبها بمفتاحك مباشرةً.
حدّ المعدّل
١٢٠ طلباً في الدقيقة
الحدّ لكل مؤسسة لا لكل مفتاح — توليد مفاتيح إضافية لا يزيد نصيبك. كل ردّ يحمل X-RateLimit-Limit وX-RateLimit-Remaining، فاقرأهما بدل أن تعدّ بنفسك.
الويب هوك الصادرة
سجّل رابطك من الإعدادات، ونرسل إليه POST عند كل حدث تشترك به — بلا استطلاع.
message_receivedوصلتك رسالة من عميل
message_sentخرجت رسالتك إلى واتساب
message_deliveredسُلّمت لجهاز العميل
message_readقرأها العميل
message_failedتعذّر تسليمها
conversation_openedفُتحت محادثة جديدة
conversation_assignedأُسندت المحادثة لموظّف
conversation_closedأُغلقت المحادثة
contact_createdأُضيفت جهة اتصال
تحقّق من التوقيع دائماً
بلا تحقّق، أي جهة تعرف رابطك تستطيع أن تُلفّق أحداثاً لنظامك. الترويسة X-Nawaf-Signature بالشكل t=<ثوانٍ>,v1=<HMAC-SHA256>، والمُوقَّع هو `${t}.${النصّ الخام للجسم}` بسرّ نقطتك.
const [t, v1] = header.split(",").map((p) => p.split("=")[1]);
const expected = crypto.createHmac("sha256", secret)
.update(`${t}.${rawBody}`).digest("hex");
const ok =
crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1)) &&
Math.abs(Date.now() / 1000 - Number(t)) <= 300;وقارن الطابع الزمني: رفضُ ما تجاوز خمس دقائق يجعل إعادةَ بعثِ طلبٍ قديم بلا فائدة. استعمل timingSafeEqual لا === — المقارنة العادية تُسرّب التوقيع بقياس الزمن.
ردّ بـ2xx خلال عشر ثوانٍ. أي ردّ آخر يُعاد ست مرات بتراجع أسّي (٥ث ← ١٦٠ث)، ونقطةٌ تفشل عشرين مرة متتالية تُعطَّل تلقائياً ونُعلمك.
الأخطاء والإصدارات
200 / 201نجح
400حمولة غير صالحة — الرسالة تقول أي حقل
401مفتاح مفقود أو باطل
403المفتاح لا يملك الصلاحية المطلوبة
404المورد غير موجود — أو ليس لمؤسستك
429تجاوزت حدّ المعدّل — راجع X-RateLimit-Remaining
المسار يحمل إصداره (/api/v1/…). أي تغيير كاسر يصدر تحت v2، ويبقى v1 عاملاً حتى إشعار مسبق — فتكاملُك لا ينكسر بنشرةٍ منّا.
جاهز للبدء؟
ولّد مفتاحك من الإعدادات، وجرّب النقاط حيّاً في التوثيق التفاعلي.