IntelliPlan’s integration layer connects to six school platforms (Canvas, Google Classroom, StudentVue, Schoology, Blackboard, Moodle), Google Calendar, and Notion. The integration REST endpoints let you check which providers are available, start OAuth flows or submit manual credentials, sync assignments on demand, and disconnect a provider. The unified task feed (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/UAnirudh/IntelliPlan/llms.txt
Use this file to discover all available pages before exploring further.
GET /tasks/unified) and live assignments feed (GET /live) sit on top of all these connections and return merged data regardless of which platforms are active. All integration endpoints require an active login session or appropriate API credentials.
LMS connections that use OAuth (Google Classroom, Blackboard) involve a browser redirect flow. The
/api/lms/connect/<provider> endpoint returns a redirect URL; the browser must follow it. Moodle uses a token-based manual connection that does not require a browser redirect. Canvas and StudentVue connect via API token pasted in Settings.Provider Registry
GET /api/lms/providers — List All Known Providers
Returns metadata for every LMS provider the IntelliPlan registry knows about, including whether the provider is configured (OAuth credentials present) on this server instance. This endpoint is public — no authentication required. It is also used by the marketing page to show which integrations are available.cURL
200 OK
Array of provider descriptor objects.
GET /api/lms/status — User’s Connected Providers
Returns which LMS providers the authenticated user is connected to, along with last sync timestamp and sync count for each. Merges the registry’s full provider list with the user’s connection state so the response always covers all known providers.cURL
200 OK
Connecting Providers
POST /api/lms/connect/{provider} — Start OAuth or Return Manual-Connect Metadata
Initiates a connection flow for the given LMS provider. The response shape varies by provider:- Google Classroom: Returns an
auth_urlto redirect the browser to for OAuth. - Blackboard: Returns either
need_institution(prompts for the school’s Blackboard URL) orauth_urlonce the institution URL is supplied. - Moodle: Returns
status: "manual"with aform_endpointdirecting the client to submit credentials to/api/lms/connect/moodle/manual.
- Google Classroom
- Blackboard (step 1 — get institution URL)
- Blackboard (step 2 — with institution URL)
- Moodle
cURL
200 OK — redirect required
Provider key. Accepted values:
"google_classroom", "blackboard", "moodle".Required for Blackboard. The full URL of the school’s Blackboard Learn instance (e.g.
"https://learn.myschool.edu"). Deep links and bare hostnames are normalized automatically.POST /api/lms/connect/moodle/manual — Connect Moodle with Token
Connects a Moodle instance by accepting the site URL and a user-scoped web-services token. The endpoint validates the credentials by calling Moodle’score_webservice_get_site_info function before storing them, so invalid tokens are rejected immediately rather than silently failing during the first sync.
cURL
The base URL of the Moodle instance.
http:// or https:// prefix is optional — it defaults to https:// if omitted. Trailing slashes are stripped automatically.The Moodle web-services token for the student’s account. Generated in Moodle under My profile settings → Security keys.
200 OK
Per-Provider Status and Disconnect
GET /api/lms/status/google_classroom · /blackboard · /moodle
Returns the connection status for a single provider. Use these for per-provider status checks in a settings UI.- Google Classroom
- Blackboard
- Moodle
POST /api/lms/disconnect/google_classroom · /blackboard · /moodle
Disconnects the specified provider, deleting the stored OAuth tokens or Moodle credentials. This is an idempotent operation — disconnecting a provider that is already disconnected returnsstatus: "ok" without error.
Disconnect Google Classroom
200 OK
Registry-Based Sync and Disconnect
Thelms_sync blueprint exposes generic sync and disconnect endpoints that work for any provider registered in the LMS registry, identified by the provider key.
POST /api/lms/{key}/sync — Sync One Provider
Pulls the latest assignments from one connected provider now. The endpoint refreshes OAuth tokens if the provider supports it, then calls the provider’s sync adapter and returns the count of assignments fetched. Thelast_synced_at and last_sync_count fields on the connection row are updated.
cURL
Provider key from
GET /api/lms/providers (e.g. "google_classroom", "blackboard", "moodle").200 OK
Number of assignments fetched and stored from this provider in this sync run.
404 if key is not a known provider, and 409 if the provider is not connected (no token row exists).
POST /api/lms/{key}/disconnect — Disconnect via Registry
Removes the stored LMS token row for the specified provider key. This is the generic registry-based disconnect, complementing the per-provider disconnect endpoints above.cURL
200 OK
Unified Task Feed
GET /live — Live Assignments from Connected Platform
Fetches live assignments from the currently connected school platform. This is the raw internal feed — the same dataGET /api/v1/assignments proxies. Manual tasks and Notion tasks are excluded.
cURL — session required
GET /tasks/unified — All Tasks Merged
Returns all tasks merged from all sources — platform assignments, manual tasks, and Notion-synced tasks — grouped into three buckets:overdue, today, and upcoming. This is the internal feed that GET /api/v1/tasks flattens and exposes to API clients.
cURL — session required
200 OK
Google Calendar
POST /calendar/export — Export Schedule to Google Calendar
Exports a generated study schedule to the student’s Google Calendar. Creates one calendar event per study block. Requires an active Google Calendar OAuth connection (configured in Settings → Integrations → Google Calendar).cURL
The schedule to export, in the format returned by
GET /api/v1/schedule or POST /api/v1/schedule/generate.When
true, fetches the student’s existing Google Calendar events and skips creating blocks that overlap with them.200 OK
Notion Integration
POST /notion/connect — Connect Notion
Connects a Notion workspace by accepting a Notion integration token. The token is validated against Notion’s API (users.me) before being stored. On success, returns the list of databases the integration can see. If no databases are shared yet, the response includes an instructional warning.
cURL
A Notion internal integration token (starts with
secret_). Create one at notion.so/my-integrations and share your task database with it.200 OK
GET /notion/tasks — Fetch Notion Tasks
Returns all tasks from the student’s connected Notion database. Returnsconnected: false (not an error) when Notion is not connected or no database has been selected yet, so the caller can handle the unconnected state gracefully.
cURL
200 OK
Integration Overview
Google Classroom
OAuth 2.0. Imports active courses and coursework. Start flow via
POST /api/lms/connect/google_classroom.Blackboard Learn
OAuth 2.0 (3LO), per-institution. School admins must register IntelliPlan’s Application ID under System Admin → REST API Integrations with End User Access enabled.
Moodle
Manual token connection. Student pastes their Moodle web-services token via
POST /api/lms/connect/moodle/manual. No redirect required.Google Calendar
One-click schedule export via
POST /calendar/export. Requires a Google OAuth connection established through Settings → Integrations.Notion
Two-way task sync. Connect via
POST /notion/connect with an internal integration token. Tasks appear in the unified feed alongside LMS assignments.Canvas & StudentVue
Connected via API token pasted in Settings → Integrations. No OAuth redirect — connection is validated on token submission.