canonical: https://jentic.com/apis/schoology.com/schoology

# Schoology REST API

Jentic publishes the only available OpenAPI specification for Schoology REST API, keeping it validated and agent-ready. Provides programmatic access to the Schoology learning management system for managing schools, courses, sections, enrollments, grades, and user accounts. Supports OAuth 2.0 authentication with 53 endpoints spanning student information, grading workflows, course section management, and group collaboration across K-12 and higher education institutions.

## For AI agents

Query and update student enrollments, grades, course sections, and user profiles in Schoology. Supports bulk operations on schools, courses, and grading data across 53 endpoints.

## Scope

Does not handle assessment authoring, discussion forums, or messaging - use for enrollment, grading, and course structure management only.

## Capabilities

- Enroll and withdraw students from course sections with role-based access
- Retrieve and update gradebook entries for individual students or entire sections
- Provision new user accounts with school and role associations in bulk
- Search across courses, sections, and users with flexible query parameters
- Copy course sections with their configurations to new terms or schools
- Import parent and advisor associations for student accounts
- Fetch grading categories, periods, and scales for academic reporting

## Use cases

### AI Agent Integration for Student Data Sync

AI agents use the Schoology REST API through Jentic to synchronize student enrollment and grade data between the LMS and external systems such as SIS platforms and analytics dashboards. The agent searches for the appropriate enrollment or grading operation, loads the endpoint schema, and executes calls without manual OAuth configuration. This enables automated nightly syncs of student records across 53 endpoints covering users, courses, sections, and grades.

Example prompt: Retrieve all enrollments for section ID 12345 via GET /sections/{section_id}/enrollments and export the student roster with roles

### Automated Student Enrollment Management

Programmatically enroll and withdraw students from course sections as term schedules change. The Schoology REST API supports creating enrollments with specific roles (student, teacher, admin) and managing withdrawal dates. Bulk enrollment via the POST /enrollments endpoint handles class roster changes at scale, supporting K-12 districts with thousands of section assignments per term.

Example prompt: Create a new enrollment for user ID 9876 in section ID 5432 with the student role using POST /enrollments

### Gradebook Reporting and Analytics

Extract grade data from Schoology sections for academic reporting and early intervention alerts. The API exposes grading categories, grading periods, grading scales, and individual student grades per section. Agents can pull grades for an entire section via GET /sections/{section_id}/grades or retrieve a single student's grades across all courses via GET /users/{user_id}/grades, enabling district-wide academic performance dashboards.

Example prompt: Fetch all grade entries for section 7890 using GET /sections/{section_id}/grades and identify students with averages below 70%

### School and Course Provisioning

Automate the creation of schools, courses, and sections at the start of each academic year. The API supports creating schools with building hierarchies, courses with metadata, and sections linked to specific courses. Section copying via POST /sections/copy allows replicating proven course configurations. This reduces manual setup for districts managing hundreds of courses across multiple buildings.

Example prompt: Create a new course titled 'AP Biology 2026' using POST /courses and then create two sections under it via POST /courses/{course_id}/sections

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /sections/{section_id}/enrollments | List all enrollments in a course section |
| POST | /enrollments | Create a new enrollment for a user in a section |
| GET | /sections/{section_id}/grades | Retrieve gradebook entries for a section |
| GET | /users/{user_id}/grades | Get all grades for a specific user |
| POST | /courses | Create a new course |
| POST | /sections/copy | Copy an existing section configuration |
| GET | /users/me | Get the authenticated user's profile |
| GET | /search | Search across courses, sections, and users |

## Key resources

- **Users** — Create, retrieve, update, and deactivate user accounts with role and school associations
- **Courses** — Create and retrieve courses with metadata and linked sections
- **Sections** — Manage course sections including enrollment, grading, and section copying
- **Enrollments** — Assign and remove users from sections and groups with role specifications
- **Grades** — Access gradebook entries, grading categories, periods, and scales per section
- **Schools** — Manage school records and their building hierarchies
- **Groups** — Create collaboration groups and manage group membership

## Why Jentic

- **Setup:** Wiring the Schoology REST API by hand means implementing its OAuth 2.0 flow, managing consumer keys and tokens, and building retries against api.schoology.com yourself. Through Jentic you install once, import Schoology from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Schoology puts the section id in the URL path (/sections/{section_id}/enrollments and /sections/{section_id}/grades), so a rule can pin your agent to one section: it can read enrollments and grades for that section and nothing else. You choose the operations it may call, so course creation or new enrollments are not included unless you add them.
- **Credential handling:** Your Schoology OAuth token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'enroll a student in a course section' or 'get grades for a section', and Jentic returns the matching Schoology operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Clever Data API** — Clever provides read-only roster data from SIS systems; Schoology manages the LMS layer with enrollments and grades
- **Moodle Web Services API** — Moodle is an open-source LMS with 90 web service endpoints; Schoology is a commercial K-12 focused platform
- **D2L Brightspace Valence API** — Brightspace targets higher education with content modules and org-unit structures; Schoology focuses on K-12 with simpler course/section models

## FAQ

### Why is there no official OpenAPI spec for Schoology REST API?

Schoology does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Schoology REST API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Schoology REST API use?

The Schoology REST API uses OAuth 2.0 with an implicit flow. Authorization requests go to https://api.schoology.com/v1/oauth/authorize. Through Jentic, OAuth tokens are stored in the encrypted Jentic One instance, so agents receive scoped access without handling raw credentials.

### Can I retrieve grades for all students in a section with the Schoology API?

Yes. Use GET /sections/{section_id}/grades to retrieve all gradebook entries for a specific section. You can also fetch grading categories via GET /sections/{section_id}/grading_categories and grading scales via GET /sections/{section_id}/grading_scales to contextualize the grade data.

### How do I enroll a student in a Schoology course section through Jentic?

Search Jentic for 'enroll student in schoology section' to find the POST /enrollments operation. The endpoint accepts a user ID, section ID, and role (student, teacher, or admin). Through Jentic, run: pip install jentic, then search for the operation, load its schema, and execute with your enrollment payload.

### What are the rate limits for the Schoology REST API?

The Schoology API enforces rate limits per OAuth consumer. The spec does not document specific numerical limits, but requests exceeding the threshold return HTTP 429. Implement exponential backoff in your integration. Jentic's execution layer handles retry logic automatically for agents.

### Can I bulk-import parent associations for student accounts?

Yes. The POST /users/import/associations/parents endpoint accepts batch payloads linking parent accounts to student accounts. Similarly, POST /users/import/associations/advisors handles advisor relationships. Both support multiple associations per request.

### How do I search for courses and users in the Schoology API?

Use GET /search with query parameters to search across courses, sections, and users. The endpoint returns matching results filtered by the authenticated user's permissions. For more targeted queries, use GET /courses for course listings or GET /users with filter parameters.

### Can I limit what my agent is allowed to do with the Schoology REST API?

Yes. Jentic One runs self-hosted, so your own rules decide which Schoology operations and credentials the agent may use. Because Schoology puts the section id in the URL path, such as GET /sections/{section_id}/enrollments and GET /sections/{section_id}/grades, you can pin the agent to a single section and let it read only that section's enrollments and grades. You choose which operations are allowed, so write actions like POST /enrollments or POST /courses stay off limits unless you add them.
