Apolearn
Education & LMSConnect AI agents to Apolearn, a French learning management system. Agents create and manage users, courses, and cohorts, control enrollment, and read usage statistics so training rosters stay current across your instance.
What This Integration Enables
Apolearn is a French learning management system that runs as your own instance, at your own domain, and the connector reflects that literally. Every call goes to https://{instanceDomain}/services/api/rest/json, and authentication is a public API key paired with a short-lived session token obtained from an administrator username and password. Two things follow from that design. The connector reaches whatever an administrator reaches, so scope your flows narrowly rather than relying on the API to stop you. And because the credential belongs to a person, an account rotation is an operational event worth alerting on rather than a surprise you discover when enrollment stops working.
What the connector actually manages is the roster: user accounts, classrooms, cohorts, programs, and the enrollment relationships between them, plus per-user and per-course statistics and the webhooks Apolearn calls when events occur. It is deliberately not a content authoring surface. That makes it a good fit for the job most institutions actually need automated, which is keeping the LMS in step with the system that already knows who is enrolled in what. Because the people in these records are students, the sensible default is to move identifiers between systems and leave profiles where they live. Apolearn's own account model helps here: Disable User revokes access while preserving data, which is the correct first move in almost every case where someone leaves.
Without FlowRunner
With FlowRunner
Use Case Scenarios
Enrollment sync from the student records system
Each night the agent reads the enrollment file the institution already produces and reconciles it against Apolearn. For each learner it calls Get User By Email, which is the reconciliation key when the source system holds an email but not an Apolearn ID. New learners get Create User, then Add Student To Course for each classroom on their timetable and Add User To Cohort for their year group. Learners who have left get Disable User rather than Delete User, so their coursework survives the account being closed. Before a bulk provisioning run the agent calls Get Quota and stops if the instance is near its subscription limit, which turns a failed batch into a message rather than a half-finished roster.
Provisioning a classroom from a template
A new cohort is approved. The agent runs Create Course based on an existing template, sets the start and end dates as Unix timestamps, and assigns the category and level. It then runs Add Teacher To Course for the assigned tutor and Add Student To Course for each enrolled learner, with the enrollment notification enabled so learners hear about it from Apolearn rather than from a separate email the institution has to maintain. The classroom exists, staffed and populated, before the first session, and nothing was configured by hand.
Progress reporting that reaches a tutor, not a report
Weekly, the agent runs Get Course Statistics for each active classroom and compares progress against where the cohort should be. Where a learner has fallen behind a threshold the tutor set, it posts to the tutor in Slack with the classroom, the learner, and the progress figure, and asks what to do. The tutor decides whether this is a learner who needs a conversation, a classroom whose pacing is wrong, or a data artifact from a late start. The agent never contacts the learner. Deciding that a person is struggling, and choosing how to approach them about it, is not a rule you can write down.
Human-in-Loop Highlight
Search Courses By Name supports SQL LIKE syntax, which means % is a wildcard, and that is exactly the convenience that makes an end of term flow dangerous. A registrar asks the agent to clear last term's classrooms and gives it a pattern. The pattern resolves to classroom IDs, those IDs feed Remove Student From Course and Remove Student From Program, and a pattern that is one character broader than intended will unenroll real students from a live classroom that has not finished. So the agent resolves the set and stops. It posts to the registrar: "Pattern Anglais B1% matched 4 classrooms. Anglais B1 Automne (id 3141, ended 20 Dec, 22 students), Anglais B1 Automne rattrapage (id 3149, ended 20 Dec, 6 students), Anglais B1 Printemps (id 3302, ends 14 Jun, 24 students), Anglais B1 Printemps soir (id 3311, ends 14 Jun, 11 students). Two of these are still running. Unenroll from all 4, the 2 that have ended, or a set you pick?" The request carries classroom names and counts, not student records, and the automation exceptions it surfaces are the two classrooms that should never have matched. The agent is good at resolving the pattern. It has no way of knowing the registrar meant only the autumn term.
Agent Capabilities
35 actionsUsers
9- List Users Lists user accounts on the instance with pagination, optionally restricted to enabled accounts and optionally including named custom variables. Used for reconciliation passes across a large member base.
- Get User Retrieves a single user profile by Apolearn user ID, including profile fields, user type, and enrollment status. Used once an ID is already known.
- Get User By Email Retrieves a user profile by email address instead of by ID. Used as the reconciliation key when the source system holds an email and nothing else, which is the common case.
- Create User Creates an account from first name, last name, and email, with optional user type, language, and organization fields, and an option to email login credentials to the new user. The response can include a generated password, so treat the step's output as sensitive and let Apolearn deliver the credentials rather than relaying them through another system.
- Update User Updates fields on an existing account, changing only what you send. Also resets the password and changes user type or language, with the same care warranted around credential delivery.
- Enable User Re-enables a previously disabled account and restores the learner's access. Used when a learner returns or a disablement was applied to the wrong record.
- Disable User Blocks sign-in while preserving the learner's data, with an optional reason recorded for the trail. The correct default for anyone leaving, because it is reversible and it keeps their work.
- Delete User Permanently deletes an account and all data created by that user, and cannot be undone. Reserved for a deliberate retention decision made by a named person, never for routine cleanup.
- List User Courses Lists the classrooms a specific user is enrolled in, with pagination. Used to build a learner view or verify enrollment from an external system.
Courses
7- List Courses Lists classrooms on the instance with pagination, optionally restricted to those starting after or ending before given Unix timestamps. Used for scheduled sweeps across the catalog.
- Get Course Retrieves full details of a classroom including description, categories, levels, teachers, and access settings. Used to confirm a classroom's dates and staffing before acting on it.
- Search Courses By Name Searches classrooms by name with SQL LIKE syntax, so `%` acts as a wildcard, and optionally constrains results by start and end timestamps. Powerful for resolving human-written names into IDs, and the reason the workflow above puts a person in front of anything destructive that follows.
- Create Course Creates a classroom from a name, optionally based on a template, with descriptions, objectives, prerequisites, duration, dates, category, and level. Used to provision a cohort's classroom without configuring it by hand.
- Update Course Updates fields on an existing classroom, changing only what you send. Used for rescheduling and metadata corrections.
- Delete Course Permanently deletes a classroom and its associated data, and cannot be undone. Used only where a classroom was created in error and holds no learner work.
- List Course Students Lists the students enrolled in a classroom with pagination. Used to size the impact of any enrollment change before making it.
Enrollment
6- Add Student To Course Enrolls a user as a student in a classroom, optionally sending them an enrollment notification. The core write in any roster sync.
- Remove Student From Course Removes a student from a classroom. Reversible by re-enrolling, but it takes their access to live classroom activity with it, so it belongs behind the approval described above.
- Add Teacher To Course Adds a user as a teacher in a classroom, optionally notifying them. Used when provisioning a cohort or covering for an absent tutor.
- Remove Teacher From Course Removes a teacher from a classroom. Used at the end of a teaching assignment.
- Add Student To Program Enrolls a user as a student in a program, the structured collection of classrooms above the individual course. Used when someone joins a full pathway rather than a single class.
- Remove Student From Program Removes a student from a program. Used on withdrawal or transfer.
Cohorts
5- List Cohorts Lists cohorts on the instance with pagination and optional custom variables. Used to resolve a year group or intake before assigning anyone.
- Create Cohort Creates a named group of learners, with optional custom variables attached. Used at the start of an intake.
- Add User To Cohort Adds a user to a cohort, optionally notifying them. Used to place a learner in their year group as part of onboarding.
- Remove User From Cohort Removes a user from a cohort. Used on transfer between groups.
- List Cohort Users Lists the users in a cohort with pagination. Used for cohort reporting and for checking membership before a bulk action.
Programs
2- List Programs Lists programs with pagination, optionally constrained by start and end timestamps. Used to resolve a pathway before enrolling into it.
- List Program Students Lists the students enrolled in a program with pagination. Used for pathway-level reporting.
Statistics
2- Get User Statistics Returns progress and activity statistics for one user across every classroom they are enrolled in. Used when a tutor asks about a specific learner.
- Get Course Statistics Returns progress and activity statistics for every user in a classroom. Used for the weekly pacing check that reaches a tutor rather than a dashboard.
Account
1- Get Quota Returns subscription and quota information for the instance, including plan, activity status, and term dates. Used as a guard before bulk provisioning, so a run stops with a message instead of a half-created roster.
Webhooks
3- List Webhooks Lists the webhooks registered on the instance, each with its target URL and subscribed event types. Used to audit what is already listening.
- Create Webhook Registers a webhook Apolearn calls when selected events occur, such as user.created or classroom.completed. Note that this points Apolearn at an external receiver you operate; this connector itself exposes no triggers, so event-driven flows start from that receiver or from a schedule.
- Delete Webhook Deletes a registered webhook by ID so Apolearn stops calling it. Used during receiver migrations and cleanup.
Frequently Asked Questions
What can FlowRunner do with Apolearn?
FlowRunner agents can run List Users, Get User, and Get User By Email in Apolearn, plus 32 more actions.
Does connecting Apolearn to FlowRunner require OAuth?
No. Apolearn connects to FlowRunner with session-based authentication, no OAuth flow required.
Can Apolearn trigger a FlowRunner workflow automatically?
Apolearn doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with Apolearn
$100 in credits. No card required. Connect in minutes.