Integrations
Connect LearnBuilder with Stripe, LTI, SSO, SCIM, REST API, and webhooks.
LearnBuilder integrates with external platforms and standards for payments, LMS connectivity, content portability, enterprise authentication, and HR system integration.
Stripe Connect (sell courses)
Connect your Stripe account to charge learners for course access.
Setup
- Go to User Menu → Account → Integrations tab → Stripe Connect
- Click Connect with Stripe
- You'll be redirected to Stripe to create or connect an account
- Authorize the connection and return to LearnBuilder
Once connected, you can set a price on any course from the course settings page.
Setting a course price
- Open the course and go to the Settings tab
- Scroll to the Pricing section
- Set a price and currency
- Learners are charged at enrollment
Payouts
Revenue is paid out to your Stripe account on your Stripe payout schedule. LearnBuilder charges a 10% platform fee on each transaction.
Disconnecting Stripe
Go to User Menu → Account → Integrations tab → Stripe Connect and click Disconnect. Existing paid enrollments are not affected, but new learners can no longer purchase.
SCORM Export
Export any course as a SCORM package to use in an external LMS (Moodle, Canvas, Blackboard, etc.).
Exporting a course
- Open the course
- Click Export → SCORM
- Choose SCORM version: SCORM 1.2 or SCORM 2004
- Click Export
- Download the
.zipfile
The exported package can be imported into any SCORM-compliant LMS. Completion status and scores will be tracked by the external LMS.
Note: AI Tutor and AI Dialogue features are not available in SCORM exports — these require the LearnBuilder platform. All other block types export correctly.
LTI Integration
LTI (Learning Tools Interoperability) allows you to embed LearnBuilder courses inside an external LMS — learners access them through their existing LMS without a separate LearnBuilder login.
Supported LTI version
LearnBuilder supports LTI 1.3.
Setup
LTI configuration requires credentials from both sides:
In LearnBuilder:
- Go to User Menu → Account → Integrations tab → LTI 1.3 Integration
- Under Tool Configuration, use the Copy buttons to copy the Login URL, Launch URL, JWKS URL, and Redirect URI
In your LMS:
- Add a new External Tool / LTI 1.3 tool
- Paste the Tool Configuration URLs (Login URL, Launch URL, JWKS URL, Redirect URI) from LearnBuilder
- Complete the registration (steps vary by LMS)
- Copy the Platform ID, Deployment ID, and Auth endpoint from your LMS
Back in LearnBuilder:
- In the Registered Platforms section, click + Add Platform
- Enter the platform details from your LMS
- Save the configuration
Tip: LearnBuilder includes collapsible Moodle Setup Instructions directly on the Integrations page. Expand them for step-by-step guidance specific to Moodle.
Linking a course via LTI
Once LTI is configured, add a LearnBuilder course as an LTI activity in your LMS. Learners who launch it from the LMS are automatically authenticated and taken directly to the course.
Tip: LTI setup requires admin access to your LMS. If you're not the LMS admin, share the LearnBuilder credentials with whoever manages the LMS and ask them to complete the LMS-side configuration.
SSO (Single Sign-On)
SSO allows learners to sign in using your organization's identity provider (IdP) — no separate LearnBuilder password needed.
Note: SSO is available on the Business plan.
LearnBuilder supports two SSO protocols:
- OIDC (OpenID Connect) — works with Azure AD, Google Workspace, Okta, Auth0, Keycloak, and most modern IdPs
- SAML 2.0 — works with ADFS, Shibboleth, and enterprise IdPs that only support SAML
Setting up OIDC SSO
- Go to User Menu → Account → Integrations tab → Single Sign-On
- Click Add OIDC
- Enter a name (e.g., "Azure AD" or "Okta")
- Fill in the configuration from your IdP:
- Issuer URL — the OpenID Connect discovery endpoint (e.g.,
https://login.microsoftonline.com/{tenant}/v2.0) - Client ID — from your IdP's application registration
- Client Secret — from your IdP
- Scopes — defaults to
openid email profile
- Issuer URL — the OpenID Connect discovery endpoint (e.g.,
- Toggle Active to enable
- Click Create
In your IdP, add the redirect URI:
https://your-domain.com/api/auth/sso/{account-slug}/oidc/callback
Setting up SAML SSO
- Go to User Menu → Account → Integrations tab → Single Sign-On
- Click Add SAML
- Enter a name
- Provide your IdP metadata:
- IdP Metadata URL — if your IdP publishes a metadata endpoint, paste the URL
- IdP Metadata XML — alternatively, paste the raw XML
- Toggle Active and click Create
Copy these URLs into your IdP configuration:
- SP Metadata URL:
https://your-domain.com/api/auth/sso/{account-slug}/saml/metadata - ACS URL:
https://your-domain.com/api/auth/sso/{account-slug}/saml/acs
SSO login experience
Once SSO is configured, the login page for your account shows a Sign in with SSO button. Clicking it redirects to your IdP, and after authentication, the learner is returned to LearnBuilder and signed in.
Enforce SSO
Enable Enforce SSO in the SSO configuration to hide the email/password login form and OAuth buttons. Learners will only be able to sign in through SSO.
Auto-provisioning
When a user signs in via SSO for the first time:
- A LearnBuilder account is automatically created using their IdP email and name
- They are added as a learner to your account
- Optionally, they are auto-enrolled in configured courses
REST API
The REST API provides programmatic access to your account's courses, enrollments, progress, and user data. Use it for HR system integration, custom reporting, or automation.
Note: The REST API is available on the Business plan.
Authentication
All API requests use Bearer token authentication with an API key:
Authorization: Bearer lb_ak_your_api_key_here
Creating an API key
- Go to User Menu → Account → Integrations tab → REST API
- Click Create Key
- Enter a name (e.g., "HR Integration")
- Copy the key immediately — it is only shown once
- Store the key securely
API endpoints
Base URL: https://your-domain.com/api/v1
Courses
| Method | Endpoint | Description |
|---|---|---|
GET | /courses | List courses. Filter: ?status=published |
GET | /courses/:id | Get course details with lesson count |
GET | /courses/:id/lessons | List lessons in a course |
Enrollments
| Method | Endpoint | Description |
|---|---|---|
GET | /enrollments | List enrollments. Filter: ?course_id=, ?user_id=, ?status= |
GET | /enrollments/:id | Get enrollment with lesson-by-lesson progress |
POST | /enrollments | Enroll a user by email (auto-creates account if needed) |
DELETE | /enrollments/:id | Remove an enrollment |
Enroll a user:
POST /api/v1/enrollments
{
"courseId": "abc123",
"email": "jane@company.com",
"name": "Jane Smith"
}
Progress
| Method | Endpoint | Description |
|---|---|---|
GET | /progress | List lesson progress records. Filter: ?enrollment_id=, ?course_id= |
Users
| Method | Endpoint | Description |
|---|---|---|
GET | /users | List users enrolled in your courses |
Groups
| Method | Endpoint | Description |
|---|---|---|
GET | /groups | List learner groups |
POST | /groups | Create a group |
GET | /groups/:id | Get group details with members and courses |
POST | /groups/:id/members | Add a member by email |
Learning Paths
| Method | Endpoint | Description |
|---|---|---|
GET | /learning-paths | List learning paths. Filter: ?status=published |
GET | /learning-paths/:id | Get path details with courses |
POST | /learning-paths/:id/enroll | Enroll a user by email in a path (enrolls in all courses) |
Pagination
All list endpoints support pagination:
?page=1&perPage=20(default: page 1, 20 items)- Maximum 100 items per page
Response format:
{
"data": [...],
"meta": {
"page": 1,
"perPage": 20,
"totalItems": 150,
"totalPages": 8,
"timestamp": "2025-01-15T10:30:00.000Z"
}
}
Revoking an API key
Go to Integrations → REST API, find the key, and click Revoke. Any systems using the key will immediately lose access.
Webhooks
Webhooks send real-time HTTP POST notifications to your server when events occur in LearnBuilder.
Note: Webhooks are available on the Business plan.
Subscribing to events
POST /api/v1/webhooks
{
"url": "https://your-server.com/webhook",
"events": ["enrollment.created", "course.completed", "lesson.completed"]
}
The response includes a secret — store it to verify webhook signatures.
Available events
| Event | Triggered when |
|---|---|
enrollment.created | A user is enrolled in a course |
course.completed | A user completes all lessons in a course |
lesson.completed | A user completes a lesson |
assignment.overdue | A mandatory enrollment passes its due date |
assignment.due_soon | A mandatory enrollment is within 7 days of its due date |
assignment.recertification_due | A recertification deadline is approaching |
Webhook payload
{
"event": "course.completed",
"data": {
"enrollmentId": "abc123",
"courseId": "def456",
"userId": "ghi789"
},
"timestamp": "2025-01-15T10:30:00.000Z"
}
Signature verification
Each webhook request includes an X-Webhook-Signature header containing an HMAC-SHA256 signature of the request body, signed with your webhook secret. Verify this to ensure the request came from LearnBuilder.
Managing webhooks
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/webhooks | List webhook subscriptions |
POST | /api/v1/webhooks | Create a webhook subscription |
DELETE | /api/v1/webhooks/:id | Delete a webhook subscription |
SCIM (User Provisioning)
SCIM 2.0 (System for Cross-domain Identity Management) enables automatic user provisioning from your HR system or identity provider. When employees join, change roles, or leave your organization, their LearnBuilder access is updated automatically.
Note: SCIM is available on the Business plan.
Authentication
SCIM endpoints use the same API key authentication as the REST API:
Authorization: Bearer lb_ak_your_api_key_here
Base URL
https://your-domain.com/api/scim/v2
Users
SCIM Users map to learners in your LearnBuilder account.
| Method | Endpoint | Description |
|---|---|---|
GET | /Users | List users. Supports filter, startIndex, count |
POST | /Users | Create a user (provisions account + membership) |
GET | /Users/:id | Get a user |
PATCH | /Users/:id | Update user (name, active status) |
DELETE | /Users/:id | Remove user from account |
Filter example: ?filter=userName eq "jane@company.com"
Create user:
POST /api/scim/v2/Users
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"userName": "jane@company.com",
"name": { "givenName": "Jane", "familyName": "Smith" },
"active": true
}
Deactivate user (PATCH):
PATCH /api/scim/v2/Users/:id
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [{ "op": "replace", "path": "active", "value": false }]
}
Groups
SCIM Groups map to courses. Adding members to a group enrolls them in the course; removing members unenrolls them.
| Method | Endpoint | Description |
|---|---|---|
GET | /Groups | List courses as SCIM groups |
GET | /Groups/:id | Get a course/group with members |
PATCH | /Groups/:id | Add or remove members (enrollments) |
Add a member to a course:
PATCH /api/scim/v2/Groups/:courseId
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [{
"op": "add",
"path": "members",
"value": [{ "value": "user-id-here" }]
}]
}
Discovery
| Endpoint | Description |
|---|---|
GET /ServiceProviderConfig | SCIM capabilities and configuration |
Configuring SCIM in your IdP
Most identity providers (Okta, Azure AD, OneLogin) have built-in SCIM provisioning. In your IdP's SCIM configuration:
- Set the SCIM Base URL to
https://your-domain.com/api/scim/v2 - Set the Authentication to Bearer Token and paste your API key
- Enable provisioning for Users and Groups as needed
- Map your IdP's user attributes to SCIM attributes (
userName→ email,name.givenName,name.familyName)