Get Active Lesson
Authentication Required: Any authenticated user
GET /api/lessons/active
Learner ID to get active lesson for (defaults to authenticated user)
null if none exists.
Response
Response Example
Error Codes
- 401 - Unauthorized
- 500 - Failed to fetch active lesson
Create Custom Lesson
Authentication Required: Any authenticated user
POST /api/lessons/create
Grade level for the lesson (K-12)
ID of the learner this lesson is for
Lesson topic (can be empty for random topic)
Subject area (e.g., “Math”, “Science”)
Subject category
Difficulty level:
beginner, intermediate, or advancedAuthorization
- LEARNER: Can only create lessons for themselves
- PARENT: Can create lessons for their children
- ADMIN: Can create lessons for any learner
Response
Lesson UUID
Learner user ID
Module identifier
Lesson status (ACTIVE, DONE, or QUEUED)
Subject area
Subject category
Difficulty level
Response Example
Error Codes
- 400 - Missing required fields: gradeLevel, learnerId
- 403 - Forbidden (insufficient permissions)
- 404 - Learner profile not found
- 503 - Lesson generation failed after multiple attempts
- 500 - Failed to generate lesson content
Get Lesson by ID
Authentication Required: Any authenticated user with access to the lesson
GET /api/lessons/:lessonId
Lesson UUID
Authorization
- ADMIN: Can access any lesson
- LEARNER: Can access their own lessons
- PARENT: Can access their children’s lessons
Response
Returns the complete lesson object (same structure as Create Lesson response).Error Codes
- 401 - Unauthorized
- 403 - Forbidden
- 404 - Lesson not found
Get Lesson History
Authentication Required: Any authenticated user
GET /api/lessons
Learner ID to get lesson history for (required for PARENT/ADMIN, defaults to authenticated user for LEARNER)
Maximum number of lessons to return (default: 10)
Authorization
- LEARNER: Can only access their own history
- PARENT: Can access their children’s history with learnerId query param
- ADMIN: Can access any learner’s history
Response
Response Example
Error Codes
- 400 - learnerId is required
- 401 - Unauthorized
- 403 - Forbidden