مرجع API

ادمج enuchat في أنظمتك باستخدام Tenant API. إدارة المحادثات وإرسال الرسائل والوصول إلى بيانات الفوترة برمجياً.

المصادقة

جميع طلبات API مُصادَق عليها باستخدام مفتاح API مُرسَل في رأس X-Api-Key.

الحصول على مفتاح API الخاص بك

  1. اذهب إلى الإعدادات → مفاتيح API في لوحة التحكّم
  2. انقر إنشاء مفتاح API وأعطه اسماً
  3. انسخ المفتاح فوراً — يُعرض مرة واحدة فقط
  4. خزّنه بأمان (متغيّر بيئة، مدير أسرار)

إجراء الطلبات

أدرِج المفتاح في كل طلب:

curl -H "X-Api-Key: tak_your_key_here" \
     https://api.enuchat.com/api/v1/tenant-api/widgets

جميع الاستجابات هي JSON. الاستجابات الناجحة لها حقل data. الأخطاء لها حقل error مع code وmessage.

الأمان: مفاتيح API مُجزَّأة (SHA-256) في قاعدة بياناتنا. لا نُخزّن المفتاح الخام أبداً. عامل مفتاحك كما تعامل كلمة المرور — لا تُدرجه في الكود أو تشاركه علناً.

عنوان URL الأساسي

https://api.enuchat.com/api/v1/tenant-api

جميع نقاط النهاية أدناه نسبية لعنوان URL الأساسي هذا.

نقاط النهاية

GET /widgets

يسرد جميع الأدوات لحسابك.

الاستجابة

{'{'}
  "data": [
{'{'}
      "id": "019d19c6-7e0b-...",
      "name": "Main Website Chat",
      "isActive": true,
      "aiEnabled": true,
      "translationEnabled": true,
      "primaryColor": "#2563eb",
      "position": "bottom-right"
    }
  ]
}

GET /conversations

يسرد المحادثات، مرتّبة حسب الرسالة الأحدث.

معاملات الاستعلام

المَعلَمالنوعالوصف
statusstringتصفية حسب الحالة: open، pending، closed
widgetIdstringتصفية حسب UUID الأداة
limitintegerالحدّ الأقصى للنتائج (افتراضي 20، الحد الأقصى 100)
offsetintegerتخطّي N من النتائج

مثال

curl -H "X-Api-Key: tak_..." \
     "https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"

الاستجابة

{'{'}
  "data": [
{'{'}
      "id": "019d6724-000e-...",
      "widgetId": "019d19c6-7e0b-...",
      "visitorId": "v-abc123",
      "visitorName": "John",
      "visitorEmail": "john{'@'}example.com",
      "visitorLanguage": "en",
      "status": "open",
      "assignedTo": null,
      "lastMessageAt": "2026-04-11T14:30:00+00:00",
      "startedAt": "2026-04-11T14:25:00+00:00"
    }
  ]
}

GET /conversations/{'{'}id}

يحصل على محادثة مع جميع الرسائل.

معاملات الاستعلام

المَعلَمالنوعالوصف
limitintegerالحدّ الأقصى للرسائل (افتراضي 50، الحد الأقصى 200)

الاستجابة

{'{'}
  "data": {'{'}
    "id": "019d6724-000e-...",
    "visitorLanguage": "en",
    "status": "open",
    "messages": [
{'{'}
        "id": "019d6724-1234-...",
        "role": "visitor",
        "content": "Hello, how much does it cost?",
        "contentLanguage": "en",
        "translatedContent": "Cześć, ile to kosztuje?",
        "translatedLanguage": "pl",
        "isAutoReply": false,
        "createdAt": "2026-04-11T14:25:30+00:00"
      },
{'{'}
        "id": "019d6724-5678-...",
        "role": "ai",
        "content": "Our plans start at €19/month...",
        "isAutoReply": true,
        "createdAt": "2026-04-11T14:25:32+00:00"
      }
    ]
  }
}

POST /conversations/{'{'}id}/messages

يُرسل رسالة إلى محادثة. سيتم تسليم الرسالة إلى الزائر في الوقت الفعلي عبر أداة الدردشة.

نص الطلب

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
الحقلالنوعالوصف
contentstringمطلوب. نص الرسالة.
rolestringsystem (افتراضي) أو operator

الاستجابة (201 Created)

{'{'}
  "data": {'{'}
    "id": "019d6725-abcd-...",
    "role": "system",
    "content": "Thanks for reaching out!",
    "createdAt": "2026-04-11T14:35:00+00:00"
  }
}

PATCH /conversations/{'{'}id}

يُحدّث حالة محادثة أو إسنادها.

نص الطلب

{'{'}
  "status": "closed"
}
الحقلالنوعالوصف
statusstringopen، pending، أو closed
assignedTostring|nullUUID المشغّل للإسناد، أو null لإلغاء الإسناد

GET /billing/balance

يحصل على خطتك الحالية ورصيد الائتمان.

الاستجابة

{'{'}
  "data": {'{'}
    "plan": "pro",
    "creditBalance": 4500000,
    "totalCreditsAdded": 10000000
  }
}

معالجة الأخطاء

تُرجع الأخطاء رمز حالة غير 2xx مع نص JSON:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
حالة HTTPالمعنى
401مفتاح API غير صالح أو منتهي الصلاحية أو مفقود
400نص طلب أو معاملات غير صالحة
404المورد غير موجود (أو ينتمي إلى مستأجر مختلف)
500خطأ في الخادم

حالات الاستخدام الشائعة

تكامل CRM

استطلع المحادثات الجديدة وزامِن بيانات الزائر (الاسم والبريد الإلكتروني واللغة) إلى CRM الخاص بك. استخدم معرّف المحادثة كمرجع خارجي.

متابعات آلية

بعد إغلاق محادثة، أرسل رسالة متابعة عبر API: "شكراً لك على الدردشة! هل هناك أي شيء آخر يمكننا المساعدة به؟"

بديل Webhook

حتى تصبح webhooks الصادرة متاحة، استطلع نقطة نهاية المحادثات دورياً لاكتشاف الرسائل الجديدة أو تغييرات الحالة.

العمليات المجمّعة

أغلق جميع المحادثات الأقدم من 7 أيام، أسند المحادثات إلى المشغّلين بناءً على منطق خارجي، أو صدّر سجل المحادثات للتحليلات.

حدود المعدّل

يسمح API بما يصل إلى 60 طلباً في الدقيقة لكل مفتاح API. إذا تجاوزت هذا الحد، ستتلقّى استجابة 429 Too Many Requests. انتظر وأعد المحاولة مع تأخّر أُسّي.

هل أنت جاهز للتكامل؟

أنشئ حسابك المجاني وولّد مفتاح API في دقائق.

ابدأ مجاناً