List Lesson Comments
Retrieve a paginated list of questions on one live lesson, newest first unless you set sort. Each question includes every reply. Questions do not include file_id or file_name. The list has no preview_url. See Comments.
Request
GET /players/{playerId}/files/{fileId}/comments
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
playerId | string | Yes | Course UUID. See Identifiers. |
fileId | string | Yes | Lesson UUID. A heading, or a lesson that is not live, is 404. |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number. A missing, non-numeric, zero, or negative value is treated as 1 and does not return an error. A page past the end returns an empty data array and 200. |
per_page | integer | 25 | Items per page (min: 1, max: 100). Anything else is 422. |
sort | string | -created_at | -created_at, created_at, -likes_count, or -replies_count. Anything else is 422. |
comment | string | — | Comment UUID. That question, or the parent of a reply, is placed first on page 1 and left out of the order on later pages, so page 2 and later start one row earlier. Send the same comment on every page. Dropping it after page 1 skips one question. Each page still has at most per_page rows. A value that is not a UUID is 422. An unknown UUID is ignored. |
Example Request
curl -X GET "https://app.easy.tools/api/v1/players/8f3c1a62-d047-4e89-9b25-1c6a4d8e0f71/files/3a91c4e0-6b27-4f58-9d14-7e2b8c0a5f63/comments?page=1&per_page=25" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
Response
Success Response (200)
{
"data": [
{
"id": "c4e8a1b2-7d36-4f90-a158-6b0e2c9d4f71",
"body": "Where is the recording?",
"created_at": "2026-05-02T00:00:00.000Z",
"author": {
"name": "Ada Lovelace",
"initials": "AL",
"avatar_url": null,
"is_course_author": true
},
"likes_count": 2,
"replies_count": 1,
"has_solution": true,
"replies": [
{
"id": "9a2f6c18-5e47-4b83-9d20-1c8a7e3b6d54",
"body": "It is in this lesson.",
"created_at": "2026-05-02T01:00:00.000Z",
"author": {
"name": "Student 3",
"initials": "S3",
"avatar_url": null,
"is_course_author": false
},
"likes_count": 0,
"replies_count": 0,
"is_best_answer": true
}
]
}
],
"pagination": {
"current_page": 1,
"total_pages": 1,
"per_page": 25,
"total": 1
}
}
Response Fields
Each entry in data has the fields described in Question Object, without file_id and file_name.
When comments are turned off, the response is 200 with data: [], total 0, and total_pages 0.
Pagination Object
See Pagination Object. total is the number of questions on the lesson.
Error Responses
Not Found Error (404)
See Identifiers. An unknown course, or a {fileId} that is not a live lesson, returns 404 even when comments are turned off.
{
"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": {
"per_page": ["per_page must not be greater than 100"]
}
}
}
A bad sort or comment uses the same envelope, with details keyed by that parameter.
Authentication, permission, and rate-limit errors are described in Authorization.