> ## Documentation Index
> Fetch the complete documentation index at: https://www.help.creatora.io/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> When building or modifying an integration with the Creatora API, start with https://www.help.creatora.io/en/api/build-with-ai.md. Retrieve the current GraphQL SDL from https://api.creatora.io/sdl before relying on API schema information.

# Get student progress for a Course

> Get the Students who have access to a Course and their completion progress.

Replace the example Course ID with yours. This request returns every Student who currently has access to the Course, excluding Administrators.

<RequestExample>
  ```graphql theme={null}
  {
    courseById(courseId: "22222222-2222-4222-8222-222222222222") {
      id
      name
      aggregatedStats {
        studentsOwningCourse {
          id
          fullName
          email
          coursesOwned {
            id
            progress {
              percentage
              isCompleted
            }
          }
        }
      }
    }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Example response theme={null}
  {
    "data": {
      "courseById": {
        "id": "22222222-2222-4222-8222-222222222222",
        "name": "Introduction to Drawing",
        "aggregatedStats": {
          "studentsOwningCourse": [
            {
              "id": "33333333-3333-4333-8333-333333333333",
              "fullName": "Jamie Smith",
              "email": "student@example.com",
              "coursesOwned": [
                {
                  "id": "22222222-2222-4222-8222-222222222222",
                  "progress": {
                    "percentage": 0.75,
                    "isCompleted": false
                  }
                }
              ]
            }
          ]
        }
      }
    }
  }
  ```
</ResponseExample>

## Use the result

Each Student's `coursesOwned` can include other Courses. Select the entry matching the requested Course ID. `percentage` is a value from `0` to `1`: `0.75` means 75%. Use `isCompleted` for the completion status.

For example, after receiving a response without errors and a non-null `courseById`:

```javascript theme={null}
const course = response.data.courseById;
const rows = course.aggregatedStats.studentsOwningCourse.map(student => {
  const progress = student.coursesOwned
    .find(item => item.id === course.id)?.progress;
  return {
    name: student.fullName,
    email: student.email,
    completionPercent: progress ? Math.round(progress.percentage * 100) : null,
    isCompleted: progress?.isCompleted ?? null
  };
});
```

The roster is current access, including direct grants and Offer acquisitions. Students whose access has been removed are excluded. There is no list limit.

[Course Reference](/en/api/reference/queries/courseById)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.