The Mastery API exposes the Bayesian Knowledge Tracing (BKT) state for each student across every curriculum topic they have attempted. Use these endpoints to build mastery dashboards, Student × Unit heatmaps, per-student drilldowns, and adaptive exercise recommendations driven by IRT Fisher information. All mastery records are updated automatically byDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/vruizz22/innova-backend-serverless/llms.txt
Use this file to discover all available pages before exploring further.
POST /attempts — this API is read-only.
GET /mastery/:studentId
Retrieve per-topic BKT mastery state for a single student across all topics they have ever attempted — regardless of course. Each record includes the currentpKnown probability and the topic code and name.
GET /mastery/:studentId
Requires a valid JWT. Teachers typically call this scoped to a specific student; the student-facing app calls it with the authenticated student’s own ID.
Path parameters
The student’s profile UUID.
Response 200
Returns an array of MasteryState objects — one per topic the student has attempted.
The student UUID.
The curriculum topic code (e.g.
T-SUB-BORROW).Human-readable topic name in Spanish (e.g.
Resta con préstamo).Current BKT probability of mastery — a value between
0 and 1. Values above 0.95 are conventionally considered mastered.Example
GET /mastery/course/:courseId
Full mastery summary for every active student enrolled in a course. Returns the live-topic BKT state per student, their last 20 attempts, and a ranked error-frequency breakdown. Use this to drive the teacher’s class-level mastery dashboard. GET/mastery/course/:courseId
Topics are derived from the canonical taxonomy (Domain → Subdomain), not a fixed list. Only subdomains that have real signal in this course (a classified attempt or a BKT record) are included, so new guides surface new subdomains automatically.
Path parameters
UUID of the course.
Response 200
Array of CourseStudentMasteryView objects — one per active enrollment, sorted by join date.
Student profile UUID.
Resolved display name. Falls back to the email username prefix when the profile still reads
Nuevo Alumno.Per-subdomain mastery rows, sorted by domain then subdomain code.
Last 20 attempts in the course, ordered by most recent first.
Error tags ranked by frequency (incorrect attempts only).
Example
GET /mastery/course/:courseId/heatmap
Student × Unit heatmap with topic drill-down (C12). The outer axis is Domain (unit); the inner drill-down is Subdomain (topic).pKnown per unit is the mean of its constituent subdomains. Only units and topics that have live signal in this course are returned — untouched cells are omitted rather than shown as a false 0.
GET /mastery/course/:courseId/heatmap
Path parameters
UUID of the course.
Response 200
The course UUID echoed back.
Ordered list of live curriculum domains (units) for this course.
One row per active enrollment.
Example
GET /mastery/classroom/:classroomId
Alias forGET /mastery/course/:courseId — accepts a classroom ID in place of a course ID. The two identifiers are interchangeable; this route exists for legacy client compatibility.
GET /mastery/classroom/:classroomId
Path parameters
UUID of the classroom (course).
Response 200
Identical shape to GET /mastery/course/:courseId. See that endpoint for full field documentation.
Example
GET /mastery/recommend/:courseId/:studentId
IRT Fisher-information next-exercise recommendation. Finds the student’s weakest topic (lowestpKnown), converts it to an ability estimate θ via the logit transform, then selects the exercise that maximises Fisher information I(θ) = a² · P(θ) · (1 − P(θ)). Exercises the student already answered correctly in the last 7 days are excluded.
GET /mastery/recommend/:courseId/:studentId
Path parameters
UUID of the course to draw exercises from.
UUID of the student.
Response 200
The recommended exercise.
The student’s estimated ability θ on the logit scale, derived from
pKnown via log(p / (1−p)).Human-readable explanation of why this exercise was chosen (useful for debugging).
Response 404
Returned when the student has no mastery records yet, or all exercises for their weakest topic have already been answered correctly in the last 7 days.
Example
A
404 on this endpoint is not an error — it simply means the student has exhausted their current practice pool or has no mastery history yet. Present a fallback exercise or prompt the teacher to add more content for that topic.