All integrations

Google Classroom

GOOGLE WORKSPACE · PEOPLE

Courses, rosters, and coursework for the classes they teach or take.

Connect Google Classroom with Fabriq Developer

Your user consents at Google Classroom. The credential lands in a vault your agent cannot read, and the tool list it gets back is the intersection of that user’s grant and the agent’s own scopes.

provider “classroom”
from af_sdk import AgenticFabriq

af = AgenticFabriq()                      # reads AF_APP_ID / AF_APP_SECRET

url = await af.initiate_connection(request, provider="classroom")   # consent at Google Classroom
return redirect(url)

async with await af.for_user(request) as session:
    tools = await session.get_tools()     # only what this user granted

Provider names are surfaces, not vendors, and the authoritative list is the capabilities endpoint rather than any page including this one — an unknown name returns 400 with the valid list. Fabriq Developer is free to start and needs no provider paperwork. Start free or read the quickstart.

Connecting Google Classroom in practice

Classroom checks quota on a 60-second moving average — 3,000 queries per minute per client and 1,200 per user — and signals exhaustion with RESOURCE_EXHAUSTED rather than a plain 429. Its 22 scopes split almost every resource into a .me and a .students form, so an agent acting for a teacher needs different scopes from the same agent acting for a student.

Scopes that draw scrutiny

  • https://www.googleapis.com/auth/classroom.rosters Covers the class roster rather than course metadata, so it reaches the list of minors in a class — the grant a school’s review focuses on.
  • https://www.googleapis.com/auth/classroom.profile.emails Email addresses of students and teachers in the user’s courses.
  • https://www.googleapis.com/auth/classroom.guardianlinks.students Guardian links, meaning parent and carer contact relationships for students.
  • https://www.googleapis.com/auth/classroom.coursework.students Coursework for students rather than for the authenticated user, so it writes and reads other people’s assignments.
  • https://www.googleapis.com/auth/classroom.student-submissions.students.readonly Reads other students’ submissions, which is student work rather than course structure.

Rate limits

  • 4,000,000 queries per day per client, an average of about 46 QPS.
  • 3,000 queries per minute per client (50 QPS).
  • 1,200 queries per minute per user (20 QPS).
  • Quota is checked on a 60-second moving average, which allows for spikes in usage.

Worth knowing

  • The throttle signal is RESOURCE_EXHAUSTED with exponential backoff, so error handling written around HTTP 429 alone will misclassify it.
  • Because quota is a 60-second moving average rather than a fixed window, a burst that succeeds once can fail on the retry a few seconds later.
  • The .me versus .students and readonly versus read-write split across 22 scopes means the consent screen grows quickly, and Google warns a public app needs verification to avoid the "unverified app" warning.
  • Google notes permitted QPS may vary with operational factors, so the published per-minute numbers are a ceiling rather than a guarantee.

Checked against Classroom API authorization scopes (2026-09-29), Classroom API usage limits (2026-09-29)

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

google_classroom_create_courseWRITE

Create a new Google Classroom course. Returns the course ID and details.

classroom.courses
google_classroom_delete_courseWRITE

Delete a already archived course. WARNING: This cannot be undone. IMPORTANT: You must first call google_classroom_list_courses to get the course_id.

classroom.courses
google_classroom_get_courseREAD

Get details about a specific course. IMPORTANT: You must first call google_classroom_list_courses to get the course_id.

classroom.courses.readonly
google_classroom_list_coursesREAD

List Google Classroom courses. Returns course IDs, names, and enrollment information.

classroom.courses.readonly
google_classroom_list_studentsREAD

List all students enrolled in a course (only if user is teacher, otherwise students listed as classmates). IMPORTANT: You must first call google_classroom_list_courses to get the course_id.

classroom.rosters.readonly
google_classroom_list_teachersREAD

List all teachers of a course. IMPORTANT: You must first call google_classroom_list_courses to get the course_id.

classroom.rosters.readonly
google_classroom_update_courseWRITE

Update a course's details. IMPORTANT: You must first call google_classroom_list_courses to get the course_id.

classroom.courses

Put Google Classroom behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.