Get Summary
Retrieve students, visits, lesson completion, and average progress for one date window, plus the window of the same length right before it. See Analytics.
Request
GET /players/{id}/analytics/summary
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Course UUID. See Identifiers. |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
date | string | all | A preset or an inclusive range YYYY-MM-DD,YYYY-MM-DD. See Date Window. |
Example Request
curl -X GET "https://app.easy.tools/api/v1/players/8f3c1a62-d047-4e89-9b25-1c6a4d8e0f71/analytics/summary?date=2026-10-01,2026-10-28" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
Response
Success Response (200)
{
"data": {
"date_range": { "from": "2026-10-01", "to": "2026-10-28", "timezone": "America/New_York" },
"students_count": 5,
"visits_count": 20,
"lesson_completions_count": 30,
"progress_percent": 25,
"lessons_count": 10,
"previous": {
"date_range": { "from": "2026-09-03", "to": "2026-09-30", "timezone": "America/New_York" },
"students_count": 3,
"visits_count": 9,
"lesson_completions_count": 12,
"progress_percent": 10
}
}
}
With date omitted, or date=all, the window runs from 2021-01-01 through today and previous is null:
{
"data": {
"date_range": { "from": "2021-01-01", "to": "2026-10-28", "timezone": "America/New_York" },
"students_count": 12,
"visits_count": 40,
"lesson_completions_count": 42,
"progress_percent": 35,
"lessons_count": 10,
"previous": null
}
}
Response Fields
data has the fields described in Summary Object. students_count and visits_count count inside the window. lesson_completions_count and progress_percent run from the course start through the end of the window. previous ends the day before date_range.from.
Error Responses
Not Found Error (404)
See Identifiers.
{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found"
}
}
Validation Error (422 Unprocessable Entity)
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The given data was invalid",
"details": {
"date": ["date must start on or before its end"]
}
}
}
An unknown preset or a date that does not exist uses the same envelope, with details.date listing the accepted values.
Bad Gateway Error (502)
Easycart answered, but not with a result the API can use.
{
"error": {
"code": "UPSTREAM_ERROR",
"message": "EasyCart rejected the request"
}
}
Service Unavailable Error (503)
Easycart is unreachable or failing. Retry later.
{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "EasyCart is unavailable"
}
}
Authentication, permission, and rate-limit errors are described in Authorization.