Roadmaps
GET /api/v1/roadmaps
GET /api/v1/roadmaps/{id}
Levels
GET /api/v1/levels?roadmap_id={id}
GET /api/v1/levels/{id}
Modules
GET /api/v1/modules?level_id={id}
GET /api/v1/modules/{id}
Lessons
GET /api/v1/lessons?module_id={id}
GET /api/v1/lessons/{id}
{
"id": 42,
"title": "Building a RAG Pipeline",
"slug": "building-a-rag-pipeline",
"lesson_type": "reading_and_lab",
"difficulty": "intermediate",
"estimated_minutes": 45,
"content": "...",
"is_published": true,
"skill_slugs": ["rag", "vector-search", "embeddings"]
}
Labs
GET /api/v1/labs/{id}
POST /api/v1/labs/{id}/submit
curl -X POST https://safua.ai/api/v1/labs/12/submit \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"code": "def build_rag_pipeline():\n ..."}'
{
"data": {
"submission_id": "sub_abc123",
"score": 82,
"correctness": 90,
"style": 78,
"efficiency": 74,
"inline_comments": [
{
"line": 14,
"type": "hint",
"comment": "What happens if the retrieved context exceeds your context window?"
}
],
"xp_awarded": 100
}
}
Progress
GET /api/v1/progress/dashboard
POST /api/v1/progress/lessons/{id}/complete