للمطورين

واجهة واحدة لكل الأنظمة

المصادقة بمفتاح خاص لكل نظام، وكل النداءات تحت /api/v1/ بنموذج استجابة وأخطاء موحد.

إرسال رسالةcURL
curl -X POST https://<your-hub-domain>/api/v1/messages \
  -H "Authorization: Bearer <key_id>.<secret>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-3391-confirm" \
  -d '{
    "recipient": "9665xxxxxxxx",
    "channel": "whatsapp",
    "type": "transactional",
    "template": "order_confirmed",
    "language": "ar",
    "variables": ["3391", "2026-01-14"]
  }'
إرسال رمز تحققcURL
curl -X POST https://<your-hub-domain>/api/v1/otp/send \
  -H "Authorization: Bearer <key_id>.<secret>" \
  -H "Content-Type: application/json" \
  -d '{ "recipient": "9665xxxxxxxx", "template": "login_code", "language": "ar" }'
متابعة حالة الرسالةTypeScript
const res = await fetch(`${HUB}/api/v1/messages/${messageRef}`, {
  headers: { Authorization: `Bearer ${process.env.COMHUB_API_KEY}` },
});
const { status, delivered_at } = await res.json();
نموذج الخطأ الموحدJSON
{
  "error": {
    "code": "PROVIDER_TIMEOUT",
    "message": "The provider did not respond in time",
    "request_id": "req_8f2c41ab"
  }
}

حالات الرسالة

  • queuedفي الطابور بانتظار الإرسال
  • sentسُلّمت إلى المزود
  • deliveredوصلت إلى جهاز المستفيد
  • readقرأها المستفيد
  • failedفشلت بعد استنفاد المحاولات
المفتاح يُصدر مرة واحدة عند تسجيل النظام في لوحة التحكم ولا يمكن عرضه مجددًا. عند فقده استخدم تدوير المفتاح.