PowerPath API
Adaptive learning and mastery tracking
Overview
PowerPath is a convenience layer on top of OneRoster and QTI that handles adaptive learning logic.
It automatically manages question selection, scoring, XP calculation, and mastery tracking.
Use PowerPath to build adaptive quizzes that adjust to student performance in real-time.
External Documentation
| Resource | Link |
|---|---|
| Official API Docs | PowerPath API Docs |
| OpenAPI Spec | PowerPath OpenAPI |
Key Concepts
| Concept | Description |
|---|---|
| PowerPath 100 | Adaptive quiz that serves questions dynamically based on student performance |
| Quiz | Standard quiz where all questions are shown upfront, results revealed at end |
| Test-Out | End-of-course mastery test that lets students skip content they've mastered |
| Placement Test | Determines appropriate grade level by testing student knowledge |
Common Use Cases
- Build adaptive quizzes: Questions adapt to student performance in real-time
- Implement placement tests: Onboard students to the right grade level
- Enable test-outs: Let students skip content they've already mastered
- Track mastery progression: Monitor student progress through course material
Essential Endpoints
| Endpoint | Purpose |
|---|---|
GET /getNextQuestion | Get next question in PowerPath 100 quiz |
PUT /updateStudentQuestionResponse | Submit student answer and get feedback |
POST /finalStudentAssessmentResponse | Complete quiz and calculate final score |
GET /getAssessmentProgress | Check student progress in a lesson |
GET /placement/getNextPlacementTest | Get next placement test for student |
GET /powerpath/syllabus/{courseId} | Get full course structure with all components |
Examples
Get Next Adaptive Question
Request
curl "$TIMEBACK_API_URL/powerpath/getNextQuestion?student=student-456&lesson=lesson-123" \ -H "Authorization: Bearer $ACCESS_TOKEN"const response = await fetch( `${TIMEBACK_API_URL}/powerpath/getNextQuestion?student=student-456&lesson=lesson-123`, { headers: { Authorization: `Bearer ${accessToken}`, }, },)const { score, question } = await response.json()Submit Student Answer
Request
curl -X PUT $TIMEBACK_API_URL/powerpath/updateStudentQuestionResponse \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "student": "student-456", "question": "q-789", "lesson": "lesson-123", "responses": { "RESPONSE": "B" } }'await fetch(`${TIMEBACK_API_URL}/powerpath/updateStudentQuestionResponse`, { method: 'PUT', headers: { Authorization: `Bearer ${accessToken}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ student: 'student-456', question: 'q-789', lesson: 'lesson-123', responses: { RESPONSE: 'B', }, }),})