API عامة (v1)
للمدارس والمنصات التعليمية ومطوّري المحتوى. مفاتيح بصلاحيات، OAuth للمؤسسات، بيانات الأطفال مستعارة (pseudonymous) دائماً.
| 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.changed | API 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 }