canonical: https://jentic.com/apis/docs.openedx.org/open-edx

# Docs Openedx Open edX LMS API

The Open edX LMS API exposes 21 endpoints across the open-source learning management system used by edX, MIT and many universities and corporate training programs. It covers bulk enrollments, certificates, cohorts, course home metadata and dates, completion tracking, integrity agreements, bookmarks and authorisation checks. Authenticated via OAuth2 or bearer tokens, it lets admins automate enrollment, sync progress to downstream systems, and integrate Open edX into broader employee development or accreditation workflows.

## For AI agents

Manage Open edX learner enrollments, certificates, cohorts and course progress on behalf of admins, instructors or HR systems.

## Scope

Does not handle course authoring (Studio), payment processing for paid enrollments, or video streaming infrastructure - use for LMS enrollments, certificates, cohorts and progress only.

## Capabilities

- Bulk-enroll learners into one or more courses in a single call
- Issue and look up certificates of completion for a learner
- Add, list and update cohorts that group learners within a course
- Read course outline, dates and progress metadata for the course home
- Track learner completion at block level via the completion-batch endpoint
- Manage bookmarks learners create against course content
- Validate the current user's permissions in the Open edX authorisation system

## Use cases

### Corporate Training Enrollment Automation

An HR or LMS admin tool can keep Open edX in sync with a workforce system by bulk-enrolling new hires into onboarding courses and removing leavers. POST /bulk_enroll/v1/bulk_enroll takes a list of identifiers and course ids in one call, replacing per-user scripts. This shortens onboarding cycles and reduces manual errors when scaling training programs.

Example prompt: POST /bulk_enroll/v1/bulk_enroll with a list of learner emails and course_id='course-v1:Acme+Onboarding+2026' to enroll all new hires.

### Certificate Issuance and Verification

An accreditation or HR records system can pull certificates from Open edX to verify completion claims. GET /certificates/v0/certificates/{username}/courses/{course_id} returns the certificate object including grade and download URL, suitable for storing in an HRIS or for sharing with auditors.

Example prompt: GET /certificates/v0/certificates/{username}/courses/{course_id} for each completed enrollment and store the certificate URL against the learner record.

### Course Progress Reporting

Build a learner progress dashboard for instructors or training managers using /course_home/v1/progress/{course_key_string}. The response contains structured progress data per learner, which can be aggregated into cohort views or exported to a BI tool. Useful for showing completion rates ahead of accreditation or compliance audits.

Example prompt: GET /course_home/v1/progress/{course_key_string} for each enrolled learner and aggregate completion percentages into a cohort summary.

### AI Agent Learning Assistant

Through Jentic, an AI assistant for a corporate training program can answer 'who hasn't finished compliance training this quarter?' and 'enroll the new sales team in product training'. The agent searches Jentic for the right Open edX operation, loads the schema and executes against an admin OAuth2 token. This collapses what would be a manual instructor workflow into a chat interaction.

Example prompt: Use Jentic to search 'enroll learners in Open edX course', load /bulk_enroll/v1/bulk_enroll, and execute it with the new sales team's emails and the product training course id.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /bulk_enroll/v1/bulk_enroll | Bulk-enroll learners into one or more courses |
| GET | /certificates/v0/certificates/{username}/courses/{course_id} | Get a learner's certificate for a course |
| GET | /course_home/v1/progress/{course_key_string} | Read learner progress for a course |
| GET | /course_home/v1/outline/{course_key_string} | Read the course outline structure |
| GET | /cohorts/v1/courses/{course_key_string}/cohorts/{cohort_id} | Get a cohort's details |
| POST | /completion/v1/completion-batch | Mark a batch of blocks complete for a learner |

## Key resources

- **Bulk Enrollments** — Enroll many learners into courses in a single call
- **Certificates** — Issue and look up certificates of completion
- **Cohorts** — Group learners within a course for differentiated content
- **Course Home** — Course metadata, outline, dates and progress
- **Completion** — Track learner completion at block level
- **Bookmarks** — Manage learner bookmarks against course usage ids
- **Authorization** — Validate current user permissions

## Why Jentic

- **Setup:** Wiring the Open edX LMS API by hand means running its OAuth2 client-credentials exchange, carrying the bearer token, and pointing every call at your own LMS host before you can enroll a learner or read progress. Through Jentic you install once, import the Open edX LMS API from the API Directory, store the OAuth client credentials once, and your agent calls it.
- **Permission scoping:** Open edX puts the course key in the URL path (/course_home/v1/progress/{course_key_string}, /cohorts/v1/courses/{course_key_string}/cohorts/{cohort_id}), so a rule can pin your agent to one course: it reads progress, outlines, cohorts, and certificates for that course and nothing else. You choose the operations it may call, so a write like bulk enrollment is not included unless you add it.
- **Credential handling:** Your Open edX OAuth client credentials and bearer token are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'bulk enroll learners' or 'get course progress', and Jentic returns the matching Open edX operation under /bulk_enroll/v1 or /course_home/v1 with its input schema so the agent calls the right endpoint without crawling the LMS API docs.

## Related APIs

- **Brightspace Valence API** — Commercial LMS API from D2L Brightspace covering similar enrollment and grading workflows
- **Docassemble API** — Document-assembly platform often paired with LMS courses for legal-education form generation

## FAQ

### What authentication does the Open edX LMS API use?

Open edX accepts OAuth2 (the recommended path for production) and bearer tokens. Admin operations like bulk enrollment require staff-level scopes. Through Jentic, OAuth client credentials sit in your Jentic One instance so the agent receives a scoped token rather than client_id and secret.

### Can I bulk-enroll learners with the Open edX API?

Yes. POST /bulk_enroll/v1/bulk_enroll accepts a list of emails or usernames and one or more course ids in a single request, which is the standard way to provision a cohort at scale rather than calling per-user enrollment endpoints.

### What are the rate limits for the Open edX LMS API?

Rate limits depend on the deployment - open edx is typically self-hosted by universities or training providers, with limits set in the platform's nginx or middleware. There are no fixed vendor-side limits in the spec; treat heavy operations like bulk enrollment as discrete jobs rather than tight loops.

### How do I check a learner's progress in a course through Jentic?

Search Jentic for 'get Open edX course progress', load /course_home/v1/progress/{course_key_string}, and execute it with the course key. Through Jentic the OAuth token stays in the vault, so the agent never sees the bearer string.

### Can I look up certificates with the Open edX API?

Yes. GET /certificates/v0/certificates/{username} returns the certificate set for a learner, and the per-course variant /certificates/v0/certificates/{username}/courses/{course_id} returns a single course certificate, including grade and download URL.

### Is the Open edX LMS API free?

Open edX is open-source and the API itself has no licence cost. Hosting is on the institution, so total cost depends on the infrastructure, which can be self-hosted or run via a commercial Open edX provider.

### Can I limit what my agent is allowed to do with the Open edX LMS API?

Yes. Because you run Jentic One yourself, your own rules decide which Open edX operations and credentials the agent may use. Open edX puts the course key in the URL path for calls like /course_home/v1/progress/{course_key_string} and /cohorts/v1/courses/{course_key_string}/cohorts/{cohort_id}, so a rule can pin the agent to a single course, letting it read progress, outlines, cohorts, and certificates for that course and nothing else. You also choose which operations are exposed, so a write such as POST /bulk_enroll/v1/bulk_enroll stays off limits until you explicitly add it.
