حأليفلاي

API عامة (v1)

للمدارس والمنصات التعليمية ومطوّري المحتوى. مفاتيح بصلاحيات، OAuth للمؤسسات، بيانات الأطفال مستعارة (pseudonymous) دائماً.

وثائق OpenAPI التفاعلية
RLS + مفاتيح بصلاحيات
Rate limit 600/دقيقة
Webhooks موقّعة
Endpointالاستعمالالمصادقة
POST/v1/orgs/{id}/learnersإنشاء طالب (اسم مستعار، صف، لغات)API key
GET/v1/learners/{id}/progressإتقان كل مهارة، الخلط، الطلاقة، آخر نشاطAPI key
POST/v1/learners/{id}/assignmentsتعيين مسار/وحدة (يتجاوز التكيّف مؤقتاً)API key
POST/v1/wordlistsقائمة كلمات مخصصة → بطاقات (بعد المراجعة)API key
GET/v1/children/{id}/report.pdfتقرير PDF للولي/الأخصائيParent JWT
POST/v1/webhooksأحداث: unit.completed, mastery.reached, inactivity.7d, subscription.changedAPI key
POST/v1/speech/assessتقييم نطق كلمة معروفة (للمنصات الشريكة)API key
GET/v1/content/packs?language=arقائمة الوحدات المنشورةPublic
GET/v1/content/units/{id}وحدة كاملة مع البطاقاتPublic
GET/v1/children/{id}/stats/weeklyإحصائيات الأسبوع للوليParent JWT
POST/v1/children/{id}/syncمزامنة المحاولات والإتقان (offline-first)Parent JWT
GET/healthحالة الخدمةPublic
curl https://api.alifly.app/v1/learners/lrn_8f2/progress \
  -H "Authorization: Bearer sk_live_..."

{
  "learner": "lrn_8f2",
  "language": "ar",
  "tracks": {
    "letters": { "mastery": 0.78, "current_unit": "JHK" },
    "sounds":  { "mastery": 0.61 },
    "vowels":  { "locked": true }
  },
  "confusions": [["ح","خ",0.31],["ت","ث",0.18]],
  "fluency_ms": 1300
}

المصادقة

مفاتيح API بصلاحيات read / write / assess للمؤسسات. OAuth 2.0 لمنصات المدارس. أرسل المفتاح في ترويسة Authorization: Bearer.

الحدود

600 طلب/دقيقة لكل مفتاح · webhooks موقّعة HMAC · سجل وصول كامل · تصدير وحذف البيانات عند الطلب (GDPR).

POST/v1/orgs/{id}/learners

إنشاء طالب (اسم مستعار، صف، لغات)

الطلب

{ "pseudonym": "Y. B.", "childId": "ch_…" }

الاستجابة

{ "id": "lrn_8f2", "pseudonym": "Y. B.", "consentByParentAt": null }

GET/v1/learners/{id}/progress

إتقان كل مهارة، الخلط، الطلاقة، آخر نشاط

الاستجابة

{
  "learner": "lrn_8f2",
  "language": "ar",
  "tracks": {
    "letters": { "mastery": 0.78, "current_unit": "JHK" },
    "sounds":  { "mastery": 0.61 },
    "vowels":  { "locked": true }
  },
  "confusions": [["ح","خ",0.31],["ت","ث",0.18]],
  "fluency_ms": 1300
}

POST/v1/learners/{id}/assignments

تعيين مسار/وحدة (يتجاوز التكيّف مؤقتاً)

الطلب

{ "track": "T1", "unitId": "ar-T1-u2" }

الاستجابة

{ "id": "asg_…", "track": "T1", "unitId": "ar-T1-u2", "createdAt": "2026-09-13T10:00:00Z" }

POST/v1/wordlists

قائمة كلمات مخصصة → بطاقات (بعد المراجعة)

الطلب

{ "language": "ar", "learnerId": "lrn_8f2", "words": ["بَيْت", "قَمَر"] }

الاستجابة

{ "id": "wl_…", "status": "review", "words": 2 }

GET/v1/children/{id}/report.pdf

تقرير PDF للولي/الأخصائي

الاستجابة

application/pdf

POST/v1/webhooks

أحداث: unit.completed, mastery.reached, inactivity.7d, subscription.changed

الطلب

{ "url": "https://school.example/hooks/alifly", "events": ["unit.completed", "mastery.reached"] }

الاستجابة

{ "id": "wh_…", "secret": "whsec_…" }

POST/v1/speech/assess

تقييم نطق كلمة معروفة (للمنصات الشريكة)

الطلب

{ "target": "بَيْت", "language": "ar", "audioBase64": "…", "mimeType": "audio/m4a" }

الاستجابة

{ "transcript": "بيت", "score": 0.92, "match": "correct" }

GET/v1/content/packs?language=ar

قائمة الوحدات المنشورة

الاستجابة

[{ "id": "ar-T1-u1", "track": "T1", "level": 1, "title": { "ar": "ب ت ث" }, "version": 3 }]

GET/v1/content/units/{id}

وحدة كاملة مع البطاقات

GET/v1/children/{id}/stats/weekly

إحصائيات الأسبوع للولي

الاستجابة

{ "minutes": 38, "cards": 142, "accuracy": 0.81, "streak": 5, "perTrack": [...], "confusions": [...], "fluency": [...], "firstGain": "ح/خ" }

POST/v1/children/{id}/sync

مزامنة المحاولات والإتقان (offline-first)

GET/health

حالة الخدمة

الاستجابة

{ "ok": true }
API عامة (v1) · Alifly