- [HTTP request](https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#body.HTTP_TEMPLATE)
- [Query parameters](https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#body.QUERY_PARAMETERS)
- [Request body](https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#body.request_body)
- [Response body](https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#body.response_body)
  - [JSON representation](https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#body.ListCoursesResponse.SCHEMA_REPRESENTATION)
- [Authorization scopes](https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#body.aspect)
- [Try it!](https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#try-it)

Returns a list of courses that the requesting user is permitted to view, restricted to those that match the request. Returned courses are ordered by creation time, with the most recently created coming first.

This method returns the following error codes:

- `PERMISSION_DENIED` for [access errors](https://developers.google.com/workspace/classroom/reference/Access.Errors).
- `INVALID_ARGUMENT` if the query argument is malformed.
- `NOT_FOUND` if any users specified in the query arguments do not exist.

### HTTP request

`GET https://classroom.googleapis.com/v1/courses`

The URL uses [gRPC Transcoding](https://google.aip.dev/127) syntax.

### Query parameters

| Parameters ||
|---|---|
| `studentId` | `string` Restricts returned courses to those having a student with the specified identifier. The identifier can be one of the following: - the numeric identifier for the user - the email address of the user - the string literal `"me"`, indicating the requesting user If specified, `teacherId` must be empty. |
| `teacherId` | `string` Restricts returned courses to those having a teacher with the specified identifier. The identifier can be one of the following: - the numeric identifier for the user - the email address of the user - the string literal `"me"`, indicating the requesting user If specified, `studentId` must be empty. |
| `courseStates[]` | ``enum (`https://developers.google.com/workspace/classroom/reference/rest/v1/courses#CourseState`)`` Restricts returned courses to those in one of the specified states. If unspecified, Courses in any state are returned. |
| `pageSize` | `integer` Maximum number of items to return. Zero or unspecified indicates that the server may assign a maximum. The server may return fewer than the specified number of results. |
| `pageToken` | `string` `https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#body.ListCoursesResponse.FIELDS.next_page_token` value returned from a previous `https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#google.classroom.v1.Courses.ListCourses` call, indicating that the subsequent page of results should be returned. The `https://developers.google.com/workspace/classroom/reference/rest/v1/courses/list#google.classroom.v1.Courses.ListCourses` request must be otherwise identical to the one that resulted in this token. |
| `previewVersion` | ``enum (`https://developers.google.com/workspace/classroom/reference/rest/v1/PreviewVersion`)`` Optional. The preview version of the API. This must be set in order to access new API capabilities made available to developers in the Preview Program. |

### Request body

The request body must be empty.

### Response body

Response when listing courses.

If successful, the response body contains data with the following structure:

| JSON representation |
|---|
| ``` { "courses": [ { object (`https://developers.google.com/workspace/classroom/reference/rest/v1/courses#Course`) } ], "nextPageToken": string } ``` |

| Fields ||
|---|---|
| `courses[]` | ``object (`https://developers.google.com/workspace/classroom/reference/rest/v1/courses#Course`)`` Courses that match the list request. |
| `nextPageToken` | `string` Token identifying the next page of results to return. If empty, no further results are available. |

### Authorization scopes

Requires one of the following OAuth scopes:

- `https://www.googleapis.com/auth/classroom.courses`
- `
  https://www.googleapis.com/auth/classroom.courses.readonly`

For more information, see the [Authorization guide](https://developers.google.com/workspace/guides/configure-oauth-consent).