Grow LMS API Documentation

Grow by Plenum — Live Sessions, Calendar & Events

Surfacing scheduled training events — live sessions, content releases, and assignment deadlines — in your own systems.

Not all compliance training is self-paced. Instructor-led training (ILT) — live safety sessions, toolbox talks, hands-on certifications — is a first-class part of a workforce-compliance program, and it has to be documented in the system the same way e-learning is: who was scheduled, who attended, and who completed. This document covers both halves: reading scheduled events into your calendars and reminders, and recording and evidencing instructor-led training so it lands in the same completion and certification record as everything else (Section 4).

Scheduled content releases and assignment due dates also surface as events and are covered alongside.

Every call uses the Pl-Client header and Authorization: Bearer <ACCESS_TOKEN> from Authentication & Access Setup. <SCHOOL_ID> is your environment.


1. What counts as an event

Grow tracks three kinds of scheduled event, all retrievable through the same endpoint:

Event type What it is Why it matters
liveSession An instructor-led live session (1:1 or group) The one most relevant to safety training delivered live — scheduled sessions with a host and attendees.
dripFeed A scheduled release of course content When a section/unit unlocks for learners on a timed curriculum.
fileAssignment A file-assignment milestone Assignment-based activities with a scheduled date.

2. Retrieving upcoming events

Request the upcoming scheduled events, optionally filtered by type:

curl "https://<SCHOOL_ID>/admin/api/v2/schoolevents?event_type=liveSession" \
  -H "Pl-Client: <CLIENT_ID>" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

event_type accepts liveSession, dripFeed, or fileAssignment; omit it to get all upcoming events.


3. The SchoolEvent record

Each event carries:

Field Type Description
title string Title of the event.
startDate number Start time, as a Unix timestamp.
type string (enum) dripFeed, fileAssignment, or liveSession.
productId string The product (course/program) the event belongs to.
bookingDetails object or null Booking details for one-on-one or group sessions; null for other event types.
learnerUserId string The learner the event is for.
hostUserId string The user hosting the session (for live sessions).
status string Session status — e.g. scheduled.

The learnerUserId / hostUserId pair is what lets you build a roster: who’s attending which session, and who’s running it.


4. Documenting instructor-led training (ILT)

This is the part that matters most for a live safety program: proving, in the system of record, that instructor-led training happened and who completed it. Grow documents ILT through three connected mechanisms.

Scheduling and rosters

A liveSession event carries the session’s hostUserId (the instructor) and learnerUserId (the attendee), with a status such as scheduled. Group sessions extend the same model to multiple attendees. That gives you the roster: who’s running each session and who’s expected.

Recording attendance

Attendance for live sessions is recorded in the system and surfaces in the event log (see Pull-Based Data Access) as activity entries:

Activity Meaning
session_scheduled / group_session_scheduled A (group) session was scheduled.
session_attended / group_session_attended Attendance was registered for a (group) session.
session_manually_attended / group_session_manually_attended An instructor or administrator manually marked a learner as having attended.

The *_manually_attended activities are the key ones for ILT: they’re how an instructor records, after the fact, that a worker showed up to a live session — the digital equivalent of a sign-in sheet, captured against the learner’s record.

Turning attendance into a completion

To make ILT count toward a compliance requirement, attendance is converted into a completion on the learner’s record (the same Mark as complete mechanism used elsewhere). Once recorded, it flows through exactly the same records as e-learning:

  • It populates UserProgress.completed_at and can trigger a certificate (see Data Schema Reference).
  • It emits the courseCompleted webhook — with manually_completed: true, which transparently flags the completion as instructor-recorded rather than system-tracked (see Webhooks).

That manually_completed distinction is a compliance feature, not a footnote: an auditor can see at a glance which completions came from a live, instructor-attested session versus an automatically tracked e-learning module — while both sit in one unified record.

Net effect: instructor-led training is documented in the same place, and pulled through the same API and webhooks, as every other completion. You don’t run a separate system for live training — the live session, its attendance, and its resulting completion all live in the learner’s Grow record.


5. Calendar, reminders, and reporting

  • Calendar sync. Pull upcoming liveSession events into your corporate calendar or scheduling system so a required safety session shows up where your people already look.
  • Reminders. Combine upcoming events with the notification paths in Integrations & Notifications — e.g. an automation that texts or emails attendees ahead of a scheduled live session.
  • Attendance & completion reporting. Reconcile “who was scheduled” (events) against “who attended/completed” (event log + progress records) for a complete ILT compliance picture.

6. Where to go next

  • Pull-Based Data Access — the event log that records session scheduling and attendance.
  • Integrations & Notifications — the reminder/notification channels for upcoming sessions.
  • Provisioning & Workforce Management — enrolling learners into the programs these events belong to.

Prepared by Plenum Solutions for your evaluation. “Grow by Plenum” is operated and supported by Plenum on your behalf. Exact endpoint paths are confirmed for your environment during onboarding. For integration design support, contact your Plenum engagement lead.