عنوان URL الأساسي
https://api.flowella.io/v1/messages. استخدمه حتى عندما يعرض التطبيق عنوانًا ينتهي بـ /api/v1، مثل API base URL في Developer hub.
الطلبات المرسلة إلى مضيف التطبيق،
https://app.flowella.io/api/v1/...، يُعاد توجيهها بشكل دائم (308) إلى https://api.flowella.io/v1/.... تُسقط كثير من عملاء HTTP رأس Authorization عند اتباع إعادة توجيه إلى مضيف آخر، لذا قد يفشل الطلب المعاد توجيهه برمز 401. استدعِ https://api.flowella.io/v1 مباشرة.المصادقة
أرسل رمز Bearer في رأسAuthorization لكل طلب:
استخدم مفتاح API لنصوصك البرمجية وتكاملاتك الخاصة. واستخدم تطبيق OAuth عندما تثبّت مؤسسات Flowella أخرى تكاملك.
التحقق من بيانات الاعتماد
استدعِ نقطة النهاية ping للتأكد من أن المفتاح أو الرمز يعمل:200 OK أنك مصادَق عليك. organizationId هو المعرّف الرقمي لمؤسستك:
401 الرمز UNAUTHORIZED وإحدى هذه الرسائل: Missing bearer token أو Invalid or expired API key أو Invalid or expired access token أو Unsupported bearer token.
النطاقات
تحتاج كل نقطة نهاية إلى نطاق. تملك مفاتيح API المنشأة في التطبيق كل النطاقات. أما رموز وصول OAuth فلا تملك إلا النطاقات الممنوحة عند التفويض.
لا تحتاج
GET /v1/ping وGET /v1/rate-limits إلى أي نطاق. وتسرد GET /v1/capabilities (النطاق account:read) النطاقات التي يملكها رمزك.
يُرجع الطلب الذي يفتقر إلى النطاق المطلوب 403 مع الرمز INSUFFICIENT_SCOPE. ويسرد details.required النطاقات الناقصة:
الأخطاء
تستخدم الأخطاء الغلاف نفسه. يحددrequestId الطلب عند التواصل مع الدعم، ويحتوي details على معلومات إضافية، مثل مشكلات التحقق، عند وجودها:
قيمة
error.code ثابتة، لذا يمكن لكودك الاعتماد عليها. أما نص error.message فموجّه للأشخاص وقد يتغير.
حدود المعدل
لكل مفتاح API ولكل رمز وصول OAuth حد خاص به لعدد الطلبات في الدقيقة. يحتسب Flowella الطلبات في نوافذ ثابتة مدتها دقيقة واحدة تبدأ مع بداية الدقيقة (UTC). تتضمن الاستجابات للطلبات التي تجتاز فحوص المصادقة والنطاق هذه الرؤوس:
عند تجاوز الحد، يُرجع Flowella
429 مع الرمز RATE_LIMITED ورأس Retry-After يحمل عدد الثواني التي يجب انتظارها. وتُرجع GET /v1/rate-limits قيم limit وremaining وreset الخاصة بك بتنسيق JSON.
لعمليات الإرسال الكبيرة، استخدم POST /v1/templates/send، التي تقبل ما يصل إلى 50,000 مستلم في طلب واحد. يقبل الطلب أيضًا حقلًا اختياريًا throttlePerHour، وهو عدد صحيح من 1 إلى 100,000، لكنه لا ينظّم وتيرة الإرسال حاليًا، لذا لا تعتمد عليه. لتوزيع عملية إرسال كبيرة على مدى زمني، قسّم قائمة المستلمين إلى دفعات أصغر وأرسل كل دفعة على حدة.
معرّفات الطلبات
تتضمن الاستجابات رأسX-Request-Id، وتكرره أجسام الأخطاء في error.requestId. الاستثناء هو POST /v1/templates/send: راجع الإرسال الجماعي للقوالب. لاستخدام معرّفك الخاص، أرسل رأس X-Request-Id بطول يصل إلى 128 حرفًا وسيعيد Flowella استخدامه.
اذكر معرّف الطلب عند التواصل مع الدعم. للبحث عن طلب بنفسك، استدعِ GET /v1/requests/{requestId} (النطاق account:read): تُرجع الطلب المسجّل مع الأحداث والمهام وعمليات تسليم Webhooks المرتبطة به. يسرد Developer hub طلباتك الأخيرة ومعرّفاتها.
منع التكرار
تتيح لك مفاتيح منع التكرار (idempotency keys) إعادة محاولة طلب كتابة بعد انتهاء المهلة أو حدوث خطأ في الشبكة دون تنفيذ العمل مرتين. تتبعPOST /v1/templates/send قواعدها الخاصة، الموضحة أدناه.
معظم طلبات الكتابة
تقبل طلباتPOST وPATCH وPUT وDELETE رأسًا اختياريًا Idempotency-Key:
- يجب أن يتكون المفتاح من 8 إلى 255 حرفًا. تُرجع الأطوال الأخرى
400. - يتذكر Flowella كل مفتاح لمؤسستك لمدة 24 ساعة.
- يُرجع التكرار بالمفتاح والأسلوب والمسار والجسم نفسها الاستجابةَ المخزنة دون تنفيذ الطلب مجددًا.
- يُرجع التكرار بالمفتاح نفسه مع أسلوب أو مسار أو جسم مختلف
409 IDEMPOTENCY_KEY_CONFLICT. - يُرجع التكرار المرسل بينما لا يزال الطلب الأول قيد التنفيذ
409 IDEMPOTENCY_KEY_IN_FLIGHT. انتظر ثم أعد المحاولة. - تعيد الاستجابات المفتاح في رأس
Idempotency-Key.
الإرسال الجماعي للقوالب
الإرسال الجماعي للقوالب غير متزامن. تتحققPOST /v1/templates/send من الطلب، وتضعه في قائمة انتظار دائمة، وتُرجع 202 Accepted فورًا:
Idempotency-Key يحدد كل دفعة:
- يمكن أن يصل طول المفتاح إلى 200 حرف. يُرجع المفتاح الأطول
400. - يُرجع التكرار بالمفتاح نفسه خلال 7 أيام قيمة
idالأصلية ولا يرسل شيئًا، حتى لو تغيّر الجسم. - في غياب الرأس، يستخدم Flowella تجزئة (hash) لجسم الطلب كمفتاح. إذا أرسلت جسمًا مطابقًا بايتًا ببايت مرة أخرى خلال 7 أيام، تحصل على
idالأصلي ولا يُرسل شيء. استخدم مفتاحًا جديدًا لكل دفعة تنوي إرسالها.
- استدعها باستخدام مفتاح API. تُرفض رموز وصول OAuth برمز
401. - لا تتضمن استجاباتها الرؤوس
X-Request-IdأوAPI-VersionأوX-RateLimit-*. ومع ذلك تُحتسب طلباتها ضمن حد المعدل الخاص بالمفتاح.
إدارة الإصدارات
يمكنك تثبيت إصدار API باستخدام رأسAPI-Version:
2026-08-11 هو الإصدار الوحيد المدعوم والإصدار الافتراضي عند حذف الرأس. أي قيمة أخرى، أو قيمة ليست تاريخًا بتنسيق YYYY-MM-DD، تُرجع 400 مع الرسالة Unsupported API-Version. تعيد الاستجابات الإصدار في الرأسين API-Version وX-Flowella-Api-Version.
بيئة الاختبار
تتيح لك بيئة الاختبار (sandbox) اختبار تكامل دون إرسال أي شيء إلى WhatsApp. وهي تعمل على مؤسستك الحقيقية: لا يوجد حساب اختبار منفصل. يمكنك استخدامها بطريقتين:- مفتاح بيئة اختبار، لا يؤثر إلا على الطلبات المرسلة بذلك المفتاح. راجع مفاتيح بيئة الاختبار.
- API sandbox على مستوى المؤسسة في Developer hub، والتي يمكن لمالك أو مسؤول تفعيلها. راجع API sandbox.
POST /v1/messages الرسالة وتُرجع "sandbox": true دون التواصل مع Meta، ويُرجع تقديم القالب قرارًا وهميًا فوريًا. تحتاج أدوات اختبار بيئة الاختبار تحت /v1/test/ و/v1/sandbox إلى النطاق sandbox:manage.
الترقيم
تستخدم نقاط نهاية القوائم، مثل/v1/conversations و/v1/contacts و/v1/templates، الترقيم بالمؤشر (cursor):
- مرّر
limit(من 1 إلى 100، والافتراضي 25) وcursorاختياريًا. - تحتوي الاستجابة على
items، وعلىnextCursorعند وجود مزيد من النتائج. - مرّر
nextCursorمرة أخرى كمعاملcursorلجلب الصفحة التالية. - عندما يكون
nextCursorمفقودًا أوnull، تكون قد وصلت إلى النهاية.
التاريخ والوقت
كل الطوابع الزمنية سلاسل ISO 8601 بتوقيت UTC، مثل2025-01-15T14:30:00.000Z. وحيث تقبل API التواريخ، تعمل كل من القيم التي تحتوي على التاريخ فقط (2025-01-15) وقيم ISO 8601 الكاملة.
أرقام الهاتف
مرّر أرقام الهاتف بتنسيق E.164 (+15551234567) متى أمكن. يوحّد Flowella الصيغ الشائعة، لكن E.164 هو الخيار الأكثر أمانًا.
القنوات
تقبل كثير من نقاط النهايةwhatsappChannelId. إذا كانت لمؤسستك قناة واحدة وحذفته، يستخدم Flowella قناتك الافتراضية. وإذا كانت لديك عدة قنوات، فمرّر المعرّف صراحةً حتى لا ترسل من الرقم الخطأ.
للاطلاع على نمط URL الكامل والتبديل بين القنوات، راجع القنوات المتعددة.
مواصفة OpenAPI
المواصفة المباشرة القابلة للقراءة آليًا متاحة للعامة:موارد المطورين
يتضمن التطبيق مزيدًا من المواد للمطورين. هذه الصفحات عامة، لذا يمكنك فتحها دون تسجيل الدخول:
يجمع Developer hub في Settings هذه الروابط مع طلبات API الأخيرة ومفتاح تبديل API sandbox.

