Skip to main content

Google Classroom

Google Classroom is a free blended learning platform developed by Google for schools that aims to simplify creating, distributing, and grading assignments. The Google Classroom API enables developers and administrators to programmatically manage courses, rosters, coursework, grades, student submissions, guardians, and announcements — making it possible to integrate Classroom data with student information systems, analytics platforms, and other educational tools.

Google Classroom icon

Power end-to-end data operations for your Google Classroom API with Nexla. Our bi-directional Google Classroom connector is purpose-built for Google Classroom, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Google Classroom or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Google Classroom workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Before creating a Google Classroom API credential in Nexla, ensure the following requirements are met.

Google Account and Classroom Access

An active Google account with access to the Google Classroom environment you want to connect is required. The account must have appropriate Classroom permissions — either as a teacher, domain administrator, or a user with the relevant course-level access — depending on what data you need to retrieve or manage.

Google Workspace Domain Considerations

The Google Classroom API is primarily intended for use within Google Workspace for Education domains. If your organization uses a Google Workspace account, your domain administrator may need to authorize third-party application access before you can complete the OAuth authorization flow.

If you encounter an "access denied" or authorization error during the OAuth flow, contact your Google Workspace administrator to confirm that Nexla is permitted to access Classroom data. For details on controlling third-party app access, refer to Google's documentation on managing connected apps.

Required OAuth Scopes

The Nexla Google Classroom API connector uses OAuth 2.0 to authenticate with the Google Classroom API. During the authorization process, Nexla will request access to the following scopes:

  • https://www.googleapis.com/auth/classroom.courses — View and manage your Google Classroom classes (courses).

  • https://www.googleapis.com/auth/classroom.courses.readonly — View your Google Classroom classes.

  • https://www.googleapis.com/auth/classroom.rosters — Manage your Google Classroom class rosters (teachers and students).

  • https://www.googleapis.com/auth/classroom.rosters.readonly — View rosters in your Google Classroom classes.

  • https://www.googleapis.com/auth/classroom.coursework.students — Manage course work and grades for students in the Google Classroom classes you teach and view the course work and grades for classes you administer.

  • https://www.googleapis.com/auth/classroom.coursework.me — Manage your course work and view your grades in Google Classroom.

  • https://www.googleapis.com/auth/classroom.student-submissions.students.readonly — View course work and grades for students in the Google Classroom classes you teach or administer.

  • https://www.googleapis.com/auth/classroom.guardians — View and manage guardians for students in your Google Classroom classes.

  • https://www.googleapis.com/auth/classroom.profile.emails — View the email addresses of people in your Google Classroom classes.

  • https://www.googleapis.com/auth/classroom.profile.photos — View the profile photos of people in your Google Classroom classes.

The exact set of scopes requested during authorization depends on the data flows you configure in Nexla. You must approve the requested scopes for the connector to function properly. Access granted through this OAuth flow can be revoked at any time from your Google Account permissions page.

Google Cloud Console Setup (for Custom OAuth Applications)

If your organization requires using a custom OAuth application rather than Nexla's default OAuth credentials, a Google Cloud project with the Classroom API enabled is required. To set this up:

  1. Sign in to the Google Cloud Console and create or select a project.

  2. Navigate to APIs & Services > Library and search for "Google Classroom API." Click Enable to activate the API for your project.

  3. Navigate to APIs & Services > OAuth consent screen. Select External (or Internal for Google Workspace organizations) and complete the consent screen configuration, including the application name, support email, and authorized domains.

  4. Add the required Classroom API scopes to the consent screen by clicking Add or Remove Scopes and searching for the scopes listed in the Required OAuth Scopes section above.

  5. Navigate to APIs & Services > Credentials > Create Credentials > OAuth client ID. Select Web application as the application type, enter a name, and add the Nexla redirect URI as an authorized redirect URI.

  6. After creating the credentials, copy the Client ID and Client Secret values. These will be needed when configuring the credential in Nexla.

For most users connecting to Google Classroom through Nexla, the default OAuth application is already configured and no Google Cloud Console setup is required. The steps above are only necessary if your organization's policy requires a custom OAuth application. For additional information about setting up OAuth 2.0 credentials, refer to the Google OAuth 2.0 documentation.

Authenticate

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Click the Authorize button to initiate the OAuth 2.0 authorization flow. A new browser window will open, directing you to the Google sign-in page.

  4. Sign in with the Google account that has access to the Google Classroom environment you want to connect. If you are already signed in, select the appropriate account from the list.

  5. Review the permissions that Nexla is requesting for access to your Google Classroom data, and click Allow to grant access. Google will redirect you back to Nexla once authorization is complete.

    The OAuth authorization flow is managed entirely by Google. Nexla does not have access to your Google account password. The authorization grants Nexla a secure token that allows it to access Google Classroom data on your behalf, and this access can be revoked at any time from your Google Account permissions page.

  6. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Google Classroom API connector tile, then select the credential that will be used to connect to the Google Classroom API, and click Next; or, create a new Google Classroom API credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Google Classroom API endpoints. Each template is designed specifically for the corresponding Google Classroom API endpoint, making data source setup easy and efficient. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.

List Courses

Returns a list of courses that the authenticated user is enrolled in or teaches. Use this endpoint to export the course catalog, build course rosters, or drive downstream flows that iterate over individual courses.

  • Sends a GET request to https://classroom.googleapis.com/v1/courses and returns all courses accessible to the authenticated user.
  • Response data is extracted from $.courses[*], treating each course as a separate record.

Course IDs returned by this endpoint are required as input parameters for all course-scoped endpoints such as List Course Teachers, List Course Work, and List Student Submissions. Use lookup-based macros to iterate over course IDs.

List Course Teachers

Returns a list of teachers in a specified course. Use this endpoint to audit course staffing, export teacher rosters, or synchronize instructor data with HR or LMS systems.

  • Sends a GET request to https://classroom.googleapis.com/v1/courses/{'{courseId}'}/teachers and returns all teachers enrolled in the specified course.
  • Response data is extracted from $.teachers[*], treating each teacher as a separate record.
  • Configure the following parameter: Course ID — the unique identifier of the Google Classroom course for which teachers will be listed.

Course IDs can be obtained using the List Courses endpoint. Use lookup-based macros to iterate over multiple course IDs and retrieve teacher lists for each.

List Course Students

Returns a list of students enrolled in a specified course. Use this endpoint to export student rosters for reporting, grade processing, or synchronization with student information systems.

  • Sends a GET request to https://classroom.googleapis.com/v1/courses/{'{courseId}'}/students and returns all students enrolled in the specified course.
  • Response data is extracted from $.students[*], treating each student as a separate record.
  • Configure the following parameter: Course ID — the unique identifier of the Google Classroom course for which students will be listed.

Course IDs can be obtained using the List Courses endpoint. Use lookup-based macros to retrieve student lists across multiple courses in a single flow.

List Course Announcements

Returns a list of announcements posted in a specified course. Use this endpoint to export course communication records for audit trails, compliance review, or content archiving.

  • Sends a GET request to https://classroom.googleapis.com/v1/courses/{'{courseId}'}/announcements and returns all announcements in the specified course.
  • Response data is extracted from $.announcements[*], treating each announcement as a separate record.
  • Configure the following parameter: Course ID — the unique identifier of the Google Classroom course for which announcements will be listed.

Course IDs can be obtained using the List Courses endpoint.

List Course Work

Returns a list of course work assignments and materials in a specified course. Use this endpoint to export assignment details for grade reporting, curriculum analysis, or LMS synchronization.

  • Sends a GET request to https://classroom.googleapis.com/v1/courses/{'{courseId}'}/courseWork and returns all course work in the specified course.
  • Response data is extracted from $.courseWork[*], treating each assignment as a separate record.
  • Configure the following parameter: Course ID — the unique identifier of the Google Classroom course for which course work will be listed.

Course work IDs returned by this endpoint are required as input for the List Student Submissions endpoint. Use lookup-based macros to chain course work retrieval with submission-level data.

List Student Submissions

Returns a list of student submissions for a specified course work assignment. Use this endpoint to export submission records for grade processing, analytics, or synchronization with student information systems.

Use the wildcard value - for Course Work ID to retrieve all submissions across all course work in a course. Course and course work IDs can be obtained from the List Courses and List Course Work endpoints.

List Aliases

Returns a list of aliases for a course. Use this endpoint to retrieve alternate identifiers for courses, which are useful for cross-system integration and data reconciliation.

  • Sends a GET request to https://classroom.googleapis.com/v1/courses/{'{courseId}'}/aliases and returns all aliases for the specified course.
  • Response data is extracted from $.aliases[*], treating each alias as a separate record.
  • Configure the following parameter: Courseid — the unique identifier of the course for which aliases will be listed.

Course aliases can include domain-scoped identifiers (e.g., d:my_course_code) useful for linking Google Classroom courses to external systems.

Get Student Submission

Returns a specific student submission by its ID. Use this endpoint to retrieve the full submission record for a single student assignment, including grade, state, and attached work.

Submission IDs can be obtained from the List Student Submissions endpoint. Use lookup-based macros to iterate over submission IDs for detailed per-submission ingestion.

List Course Work Materials

Returns course work materials the requester may view in a specified course. Use this endpoint to export learning materials, reference documents, and resources shared with students.

Students see only PUBLISHED materials; teachers and domain administrators see all materials. The results depend on the authenticated user's role in the course.

List Topics

Returns the list of topics in a specified course. Use this endpoint to export the course topic structure for curriculum mapping or to synchronize topic hierarchies with external LMS systems.

  • Sends a GET request to https://classroom.googleapis.com/v1/courses/{'{courseId}'}/topics and returns all topics in the specified course.
  • Response data is extracted from $.topic[*], treating each topic as a separate record.
  • Configure the following parameter: Courseid — the unique identifier of the course for which topics will be listed.

Topic IDs can be used to filter course work or materials by topic when building structured curriculum reports.

List Invitations

Returns a list of invitations the requesting user may view. Use this endpoint to monitor pending enrollment invitations or audit invitation history for compliance purposes.

Results are filtered to invitations matching the request context. At least one of userId or courseId must be specified as a filter parameter to receive results.

List Guardian Invitations

Returns a list of guardian invitations for a specified student. Use this endpoint to monitor the status of guardian consent invitations or audit guardian onboarding workflows.

  • Sends a GET request to https://classroom.googleapis.com/v1/userProfiles/{'{studentId}'}/guardianInvitations and returns all guardian invitations for the specified student.
  • Response data is extracted from $.guardianInvitations[*], treating each guardian invitation as a separate record.
  • Configure the following parameter: Studentid — the unique identifier of the student for whom guardian invitations will be listed. Use the literal - to list invitations across all students (domain admin only).

Accessing guardian invitation data for all students requires domain administrator privileges in Google Workspace for Education.

List Guardians

Returns a list of guardians for a specified student. Use this endpoint to export guardian contact information for communication workflows or to verify guardian enrollment status.

  • Sends a GET request to https://classroom.googleapis.com/v1/userProfiles/{'{studentId}'}/guardians and returns all confirmed guardians for the specified student.
  • Response data is extracted from $.guardians[*], treating each guardian as a separate record.
  • Configure the following parameter: Studentid — the unique identifier of the student for whom guardians will be listed. Use the literal - to list guardians across all students (domain admin only).

Only confirmed guardians (those who have accepted the invitation) are returned. Domain administrator privileges are required to list guardians across all students.

Get User Profile

Returns the profile for a specified user. Use this endpoint to retrieve detailed user information including name, email, and photo for students, teachers, or other users in the domain.

  • Sends a GET request to https://classroom.googleapis.com/v1/userProfiles/{'{userId}'} and returns the full user profile object.
  • Response data is extracted from $ (the root object), returning a single user profile record.
  • Configure the following parameter: Userid — the unique identifier of the user whose profile will be retrieved. Accepts a user ID or email address.

User IDs can be obtained from the List Course Students, List Course Teachers, or List Guardians endpoints. Use lookup-based macros to retrieve profiles for lists of users.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving. If the sample data is not as expected, review the selected endpoint and associated settings, make any necessary adjustments, and test again.

Manual configuration

Google Classroom API sources can also be manually configured to ingest data from any valid Google Classroom API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

The Google Classroom REST API base URL is https://classroom.googleapis.com/v1/ (for example, https://classroom.googleapis.com/v1/courses or https://classroom.googleapis.com/v1/courses/{'{courseId}'}/students). Google Classroom API responses always wrap resource records inside a named array — set Path to Data to a JSON path such as $.courses[*], $.students[*], $.courseWork[*], or $.studentSubmissions[*] to extract individual records. You do not need to add an Authorization header — this is handled automatically by your Google OAuth 2.0 credential.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Google Classroom API data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Google Classroom API destination, and select the Send to Destination option from the menu. Select the Google Classroom API connector from the list of available destination connectors, then select the credential that will be used to connect to the Google Classroom API, and click Next; or, create a new Google Classroom API credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Google Classroom API endpoints. Select the endpoint to which this destination will send data from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Create Course

Creates a new Google Classroom course. Use this endpoint to programmatically provision courses as part of a school enrollment, LMS migration, or automated course setup workflow.

The user specified in ownerId owns the created course and is added as a teacher. Non-admins can only create courses on behalf of themselves. Enable the Response Webhook option to capture the new course ID for use in downstream flows.

Update Course

Updates one or more fields in an existing Google Classroom course. Use this endpoint to modify course names, sections, or states programmatically from an external source of truth.

Include the updateMask query parameter to specify which fields should be updated (e.g., ?updateMask=name,section). Only the fields listed in the update mask will be changed.

Create Announcement

Posts a new announcement to a Google Classroom course. Use this endpoint to programmatically broadcast messages to course participants from external communication systems.

Course IDs can be obtained from the List Courses source endpoint. Enable the Response Webhook option to capture the created announcement ID.

Update Announcement

Updates one or more fields of an existing course announcement. Use this endpoint to modify announcement text or state programmatically.

Announcement IDs can be obtained from the List Course Announcements source endpoint.

Create Course Work

Creates a new course work assignment or quiz in a Google Classroom course. Use this endpoint to programmatically deploy assignments from external curriculum management systems.

The resulting course work and student submissions are associated with the Developer Console project of the OAuth client ID used to make the request. Enable the Response Webhook option to capture the new course work ID.

Update Course Work

Updates one or more fields of an existing course work assignment. Use this endpoint to modify assignment details such as due date, point value, or description from an external system.

Must be made by the Developer Console project of the OAuth client ID used to create the course work. Include the updateMask query parameter to specify which fields to update.

Update Student Submission

Updates one or more fields of a student submission, such as a grade or feedback. Use this endpoint to programmatically post grades from an external grading system back to Google Classroom.

Must be made by the Developer Console project of the OAuth client ID used to create the course work. Include the updateMask parameter to specify the fields being updated (e.g., assignedGrade).

Create Course Work Material

Creates a new course work material (reference material or resource) in a Google Classroom course. Use this endpoint to programmatically publish learning resources from external content management systems.

Enable the Response Webhook option to capture the newly created material ID for use in subsequent flows.

Enroll Student

Adds a user as a student in a Google Classroom course. Use this endpoint to automate student enrollment from a student information system or registration platform.

Domain administrators may directly add domain users as students. Non-admin students may add themselves using a course enrollment code. The enrollment code can be obtained from the course details.

Add Teacher

Adds a user as a teacher in a Google Classroom course. Use this endpoint to automate instructor assignment from an HR or staffing system.

Domain administrators may directly add domain users as teachers. Non-admin users should send an invitation instead.

Create Topic

Creates a new topic in a Google Classroom course. Use this endpoint to programmatically build course topic structures from external curriculum planning tools.

Enable the Response Webhook option to capture the newly created topic ID, which can be used to associate course work with the topic.

Create Invitation

Creates an invitation for a user to join a Google Classroom course as a student or teacher. Use this endpoint to automate enrollment invitation workflows from external roster systems.

Enable the Response Webhook option to capture the invitation ID. The invitation must be accepted by the user to complete enrollment.

Create Guardian Invitation

Creates a guardian invitation and sends an email to the guardian to confirm they are the student's guardian. Use this endpoint to automate guardian consent workflows from a student information system.

On acceptance, the guardian's studentId and their guardian profile will be linked. Requires domain administrator or authorized teacher credentials.

Update Guardian Invitation

Modifies a guardian invitation status. Currently, the only valid modification is to change the state from PENDING to COMPLETE (effectively canceling the invitation). Use this endpoint to revoke pending guardian invitations programmatically.

Guardian invitation IDs can be obtained from the List Guardian Invitations source endpoint.

Manual configuration

Google Classroom API destinations can also be manually configured to send data to any valid Google Classroom API endpoint. Common write operations include creating or updating courses, enrolling students, creating coursework assignments, posting grades, and managing guardian invitations. You can also configure Nexla to automatically send the API response received after each call to a new Nexla webhook data source. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

The Google Classroom API accepts and returns data in JSON format. The base URL is https://classroom.googleapis.com/v1/ (for example, https://classroom.googleapis.com/v1/courses (POST) to create a course, or https://classroom.googleapis.com/v1/courses/{'{courseId}'}/courseWork/{'{courseWorkId}'}/studentSubmissions/{'{id}'} (PATCH) to grade a submission). For PATCH operations, include the updateMask query parameter to specify which fields to update (e.g., ?updateMask=name,section). You do not need to add an Authorization header — this is handled automatically by your Google OAuth 2.0 credential.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Google Classroom API endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to the Google Classroom API endpoint until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.