Analytics API
The Analytics API provides read access to aggregated learning activity data derived from processed Caliper events. Use these endpoints to retrieve weekly facts, daily activity metrics, and enrollment-level progress. All endpoints require Authorization: Bearer <token> and scope events.readonly.
Base prefix: https://api.alpha-1edtech.ai/analytics/1.0
GET /analytics/1.0/facts/weekly
Returns individual processed facts for a student within the week containing the given date. Each fact represents one processed learning event (activity completion or time-spent measurement).
Either email or studentId must be provided.
Scope: events.readonly
Query params
| Name | Description | Required |
|---|---|---|
email | Student email address (provide email or studentId) | no |
studentId | Student sourcedId (provide email or studentId) | no |
weekDate | Date within the target week (YYYY-MM-DD or ISO datetime) | yes |
timezone | IANA timezone for date bucketing (default UTC) | no |
Response
200 OK:
{
"startDate": "2026-01-12",
"endDate": "2026-01-18",
"facts": [...]
}
Each fact includes: id, email, date, datetime, userId, subject, app, courseId, courseName, enrollmentId, activityId, activityName, totalQuestions, correctQuestions, xpEarned, masteredUnits, activeSeconds, inactiveSeconds, wasteSeconds, eventType.
400 Bad Request — Missing required parameters.
Example
curl "https://api.alpha-1edtech.ai/analytics/1.0/facts/weekly?studentId=22222222-2222-2222-2222-222222222222&weekDate=2026-01-15" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
GET /analytics/1.0/activity
Returns aggregated activity metrics for a student across a date range. Includes daily breakdowns by subject and by app.
Either email or studentId must be provided.
Scope: events.readonly
Query params
| Name | Description | Required |
|---|---|---|
email | Student email address (provide email or studentId) | no |
studentId | Student sourcedId (provide email or studentId) | no |
startDate | Start of the date range (YYYY-MM-DD) | yes |
endDate | End of the date range (YYYY-MM-DD) | yes |
timezone | IANA timezone for date bucketing (default UTC) | no |
Response
200 OK:
{
"studentId": "...",
"email": "...",
"startDate": "2026-01-01",
"endDate": "2026-01-31",
"daily": [
{ "date": "2026-01-01", "activeMinutes": 30, "activitiesCompleted": 5, "xpEarned": 150, "accuracy": 85 }
],
"bySubject": [
{ "subject": "Math", "activeMinutes": 200, "activitiesCompleted": 30, "xpEarned": 900 }
],
"byApp": [
{ "appName": "my-learning-app", "activeMinutes": 200, "activitiesCompleted": 30, "xpEarned": 900 }
],
"totals": { "activeMinutes": 200, "activitiesCompleted": 30, "xpEarned": 900, "accuracy": 85 }
}
400 Bad Request — Missing required parameters.
Example
curl "https://api.alpha-1edtech.ai/analytics/1.0/activity?studentId=22222222-2222-2222-2222-222222222222&startDate=2026-01-01&endDate=2026-01-31" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
GET /analytics/1.0/enrollment
Returns analytics across the student's enrollments. Identify the student via ?studentId= or ?email=. Optionally scope with a date range.
Either email or studentId must be provided.
Scope: events.readonly
Query params
| Name | Description | Required |
|---|---|---|
email | Student email address (provide email or studentId) | no |
studentId | Student sourcedId (provide email or studentId) | no |
startDate | Start of the date range (YYYY-MM-DD) | no |
endDate | End of the date range (YYYY-MM-DD) | no |
timezone | IANA timezone for date bucketing (default UTC) | no |
Response
200 OK — Enrollment analytics object with fields: enrollmentId, studentId, courseId, startDate, endDate, progress (lessonsCompleted, unitsMastered, xpEarned, accuracy, activeMinutes), daily.
400 Bad Request — Missing required parameters.
Example
curl "https://api.alpha-1edtech.ai/analytics/1.0/enrollment?studentId=22222222-2222-2222-2222-222222222222" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
GET /analytics/1.0/enrollment/:enrollmentId
Returns analytics metrics for a specific enrollment. Optionally scoped to a date range.
Scope: events.readonly
Path params
| Name | Description |
|---|---|
enrollmentId | Enrollment UUID |
Query params
| Name | Description | Required |
|---|---|---|
startDate | Start of the date range (YYYY-MM-DD) | no |
endDate | End of the date range (YYYY-MM-DD) | no |
timezone | IANA timezone for date bucketing (default UTC) | no |
Response
200 OK — Enrollment analytics object with fields: enrollmentId, studentId, courseId, startDate, endDate, progress (lessonsCompleted, unitsMastered, xpEarned, accuracy, activeMinutes), daily.
400 Bad Request — Missing enrollmentId.
Example
curl "https://api.alpha-1edtech.ai/analytics/1.0/enrollment/66666666-6666-6666-6666-666666666666?startDate=2026-01-01&endDate=2026-01-31" \
-H "Authorization: Bearer <ACCESS_TOKEN>"