The Classroom API provides a RESTful interface for you to manage
courses and rosters in Google Classroom. Additionally, the
Classroom share button
allows developers and
content owners to enable sharing their content to Classroom.
Who can use the API?
Google Workspace for Education domain administrators can use the API to
programmatically provision courses on behalf of teachers, sync student
information systems with Classroom, and get basic visibility into
classes being taught in their domain.
Application developers can use the Classroom API to integrate their
apps with Classroom. These apps need to use OAuth 2.0 to request
permission to view classes and rosters from teachers.
Admins can
restrict
whether teachers
and students in their domain can authorize apps to access their
Google Classroom data.
Website owners and content developers can use the
Classroom
share button
to let students and teachers share content back to
Classroom.
All API and Classroom share button integrations should follow the
Classroom brand guidelines
.
API overview
The Classroom API consists of several entity types that correspond to
classes, teachers, and students in the Classroom interface. Some
of these entities have additional properties specific to the API in addition to
what exists in Classroom. The primary entity types are:
For detailed information on the API resources and methods, refer to the
Classroom API reference
.
Courses
represent a class, such as "M. Smith's 4th period math," and its
assigned teachers, student roster, and metadata. Each course is identified by a
unique ID assigned by the server. The Course resource specifically encapsulates
all of the metadata about the course, such as the name, description, location,
and time. Course rosters are managed through the
Student
,
Teacher
, and
Invitation
resources and their methods.
Aliases
are alternate identifiers for a class that may be associated with a
course and used in place of the unique ID. Each alias exists in a namespace that
restricts who can create and view it. Two namespaces are supported:
- Domain:
The domain namespace is useful for creating aliases that all
users need access to, but that are not specific to any one program. For
example, alternate listings for a course, such as MATH 127 and COMSCI 127,
should be created in the domain namespace. Aliases in the domain namespace
may only be created by domain administrators but are visible to all users in
a domain.
- Developer project:
The developer project namespace is useful for
managing aliases specific to an application. For example, an application
that uses alternate identifiers for courses can create aliases to map its
identifier to Classroom courses. Aliases created in this
namespace are tied to a specific
Google API Console
. Any user of an
application can create and view aliases in the namespace for that
application's developer project.
For more information about managing course metadata and aliases, see
Manage
Courses
.
Course rosters and users
Students
and
Teachers
are specific mappings between a user profile and a
course, representing that user's role in the course. Designations of student and
teacher are not global: a user can be assigned as a teacher for one course and a
student in another. The designation "student" or "teacher" represents a set of
permissions for a particular user in a particular course.
- Students
A Student resource represents a user who is enrolled as a student in
a specific course. Students are permitted to view the course details and
teachers for that course.
- Teachers
A Teacher resource represents a user who teaches a specific course.
Teachers are permitted to view and change the course details, view teachers
and students, and manage additional teachers and students.
Invitations
and their associated methods provide a convenient way of adding
students and teachers to courses. Creating invitations allows users to choose
whether or not to join a course, rather than you directly adding them through
the teacher and student resources.
UserProfiles
represent a mapping to a user's domain profile as identified
by the unique ID or email address of the user returned by the
Directory API
. The current user may also refer to their own
ID using the
"me"
shorthand.
For more information on managing rosters, see
Manage Teachers and
Students
.
Coursework and student submissions
A
CourseWork
item represents a single task assigned to a group of students
in a course. It contains details such as the description, due date, and
materials as well as metadata such as creation time. Materials include a title,
thumbnail, and URL, as well as an identifier that can be used with the
appropriate APIs (i.e. Drive, YouTube).
CourseWork items describe one of the following types of tasks:
- An assignment that students complete by submitting worksheets or other
attachments.
- A short answer question or multiple choice question.
Student work for a CourseWork item is represented by a
StudentSubmission
. It
consists of a response and additional metadata such as a state and assigned
grade.
The contents of a StudentSubmission depend on the type of the corresponding
CourseWork item:
- The worksheets and attachments submitted for an assignment, including their
title, thumbnail, and URL, as well as identifiers that can be used with the
appropriate APIs such as Drive or YouTube.
- The response to a short answer question or multiple choice question.
For more information about managing coursework and student submissions, see
Manage Classwork
.
Classroom add-ons
An
add-on
is a partner-served UI and backend typically displayed in an
iframe. Add-ons appear as attachments on a
post
, which can be
Announcements
,
CourseWork
, or
CourseWorkMaterials
.
Add-on attachments can be an
activity
or
content
.
- Activity attachments require a student to complete and turn-in an individual
submission. Examples include quizzes, drawings, or games. An activity
submission can optionally be graded.
- Content attachments don't require a student submission. The student doesn't
need to turn-in the attachment and it's not graded. Examples include photos,
articles and videos.
See the
add-ons development guides
for more information.
Quickstarts
To set up your environment and get started right away with the API, try one of
the quickstarts:
Experiment with the Google APIs Explorer
To experiment calling methods on live data, try using the
Google APIs
Explorer
. You don't have to write any code to get
started, but be aware that actions you perform using the APIs Explorer can
modify existing data.
One way to start calling the methods is to make a call to the
courses.list()
method. This method does not require any request parameters and you can retrieve
an
id
from the returned list of courses to use as the request parameter for
other API calls. If you don't have any courses, you can create one using the
courses.create()
method.
You can also explore the
API reference
.