@ssweta
The information is available, but not as a report. You would need to fetch it from the API where there is a created_at timestamp on the enrollment.
For example, the List enrollments endpoint of the Enrollments API
GET /api/v1/courses/1234/enrollments
will return enrollments for all types of users in course with the course ID 1234. You can add stuff to that, like ?type[]=StudentEnrollment to limit it to just students or a state[] to limit what type of users to deliver. You can also add per_page=100 to the end to get up to 100 enrollments at a time (the default is 10, which may not be enough to get the answer without pagination).
You can also use the interactive graphQL interface. Add /graphiql to the end of your Canvas hostname. Then paste this code in there and change the 1234 to your course ID.
query MyQuery {
course(id: "1234") {
enrollmentsConnection {
nodes {
createdAt
user {
sortableName
}
}
}
}
}
It returns just the student name and when that enrollment was created rather than all of the stuff returned through the enrollments API. You can add other options.
I often use the graphiql and copy/paste it into an online JSON to CSV converter and then download it as Excel.
Either way (enrollments API or graphQL), you will need to run the report for each class.
You can get the information for all courses, but you will definitely need to handle pagination as it is most likely too big of a report to run and will time out or get cut off. That's what my "first: 10" is about in the following code.
For kicks, I threw in the Canvas ID and name of the course, when the enrollment was created, when there was last activity on that enrollment, and the user's Canvas ID and name.
query MyQuery {
allCourses {
_id
name
enrollmentsConnection(first: 10) {
nodes {
createdAt
lastActivityAt
user {
_id
sortableName
}
}
}
}
}
This query returns output like this:

For our Canvas Instructor Training course, the first user enrollment was added at 2016-08-31 and was last active in that course on 2020-04-02. The second user was enrolled on 206-08-03 and last had activity in the course on 2020-03-27.
There is also an updatedAt field on the enrollment. That might reflect changes in enrollment, like if a student was dropped and readded, then it would have the timestamp of the last event. The createdAt should be when they were originally enrolled.
There is extra processing involved with this if you want it human-friendly.
The Student Information System, if you use one, is definitely the quickest way to get this information. However, if you're tracking down an issue of when someone actually got added to Canvas for a dispute, or if you're at an institution that holds data close to heart and won't share with others, then hopefully this information will help.
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.