Knowledge Management
Articulate 360
API integration
Ship Knowledge Management features without building the integration. Full Articulate 360 API access via Proxy, normalized data through Unified APIs, and 40+ MCP-ready tools for AI agents — all extensible to your exact use case.
Talk to usUse Cases
Why integrate with Articulate 360
Common scenarios for SaaS companies building Articulate 360 integrations for their customers.
Automate onboarding training provisioning
HR and onboarding platforms can invite new hires to Reach 360, add them to role-based groups, and enroll them in required learning paths the moment they're created in the source system.
Power compliance and audit evidence collection
Compliance and GRC platforms can continuously pull course completions, quiz scores, and timestamps from Reach 360 to populate audit-ready evidence for SOC 2, HIPAA, and other frameworks without manual CSV exports.
Trigger event-driven customer certification flows
Customer education and certification platforms can react to Reach 360 events via webhooks to mint badges, unlock features, or notify CSMs the instant a learner finishes a course or learning path.
Correlate training with revenue and performance
Sales enablement and analytics tools can extract group- and learner-level reports from Reach 360 and overlay them with CRM data to prove the ROI of training on quota attainment and deal velocity.
Centralize external training records
HRIS and talent platforms can push historical or externally completed training into Reach 360 via the import completion endpoint, giving L&D one system of record for all learning activity.
What You Can Build
Ship these features with Truto + Articulate 360
Concrete product features your team can ship faster by leveraging Truto’s Articulate 360 integration instead of building from scratch.
Automated user and group provisioning
Create invitations, sync users into department- or role-based groups, and offboard users in Reach 360 in lockstep with your product's identity model.
Bulk cohort enrollment engine
Enroll and unenroll entire groups into courses or learning paths on demand, driven by lifecycle events in your app such as promotions or license changes.
Training completion and quiz score dashboards
Surface per-learner, per-course, and per-learning-path reports — including completion status, quiz scores, and time spent — natively inside your product's UI.
External training import pipeline
Push completions from other systems or manual sources into Reach 360 so customers get a single, complete training record for every learner.
Real-time webhook automations
Subscribe to Reach 360 events to trigger downstream workflows — issue certificates, alert managers, or update compliance status — without polling.
Manager and reporter visibility mapping
Expose which groups a user manages or reports on so your product can scope training views and reporting to the right stakeholders.
SuperAI
Articulate 360 AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_articulate_360_courses
List all submitted courses (published and unpublished) in Articulate 360 Reach 360. Returns: id, title, coverImageUrl, authorUrl, courseReportUrl, url, contentType. Max 100 results per page, defaults to 50.
get_single_articulate_360_course_by_id
Get a single Articulate 360 Reach 360 course by id. Returns: id, title, coverImageUrl, authorUrl, courseReportUrl, url, contentType. Required: id.
articulate_360_course_enrollments_enroll_user
Enroll a single user in an Articulate Reach 360 course. Returns an empty 204 response on success. Required: course_id, user_id.
articulate_360_course_enrollments_enroll_group
Enroll a group of users in an Articulate Reach 360 course. Use `everyone` as the group_id to enroll all users in the account. Returns an empty 204 response on success. Required: course_id, group_id.
articulate_360_course_enrollments_unenroll_user
Unenroll a single user from an Articulate Reach 360 course. Returns an empty 204 response on success. Required: course_id, user_id.
articulate_360_course_enrollments_unenroll_group
Unenroll a group of users from an Articulate Reach 360 course. Use `everyone` as the group_id to unenroll all users in the account. Returns an empty 204 response on success. Required: course_id, group_id.
list_all_articulate_360_favorites
List courses and learning paths a user has saved to their Favorites in Reach 360. Returns: completedAt, courseId, courseUrl, coverImageUrl, estimatedTimeToCompleteMs, hasCertificateDownload, learnUrl, learningPathId, learningPathUrl, numberOfCourses, numberOfLessons, progressPercent, quizScorePercent, title, type, contentType. Required: user_id.
create_a_articulate_360_group
Create a new group in Articulate Reach 360. Returns: id, membersUrl, reportersUrl, managersUrl, name, url. Required: name.
list_all_articulate_360_groups
List groups in Articulate Reach 360. Returns: id, membersUrl, reportersUrl, managersUrl, name, url.
get_single_articulate_360_group_by_id
Get a single group in Articulate Reach 360 by id. Returns: id, membersUrl, reportersUrl, managersUrl, name, url. Required: id.
update_a_articulate_360_group_by_id
Update a group's name in Articulate Reach 360 by id. Returns an empty 204 response on success. Required: id, name.
delete_a_articulate_360_group_by_id
Delete a group in Articulate Reach 360 by id. Returns an empty 204 response on success. Required: id.
articulate_360_group_memberships_add_user
Add a user to a Reach 360 group. Returns an empty 204 response on success. Required: group_id, user_id.
articulate_360_group_memberships_remove_user
Remove a user from a Reach 360 group. Returns an empty 204 response on success. Required: group_id, user_id.
list_all_articulate_360_group_memberships
List members of a Reach 360 group. Returns user records including id, email, role, firstName, lastName, lastActiveAt, articulate360User, groupsUrl, learnerReportUrl, and url. Required: group_id.
articulate_360_import_course_completion_import
Import course completion data for a single Articulate 360 course/user pair into Reach 360. Returns an empty 202 response on success. Required: course_id, user_id, completedAt, startedAt. Repeated calls with the same course and user override prior date values.
create_a_articulate_360_invitation
Create a pending invitation in Articulate 360 Reach 360, sending an email invite to the specified user. Returns: id, email, firstName, lastName, groups, url. Required: email. Any groups that don't exist are created when the user accepts the invitation.
list_all_articulate_360_invitations
List pending invitations in Articulate 360 Reach 360, optionally filtered by email address. Returns: id, email, firstName, lastName, groups, url.
get_single_articulate_360_invitation_by_id
Retrieve a single pending invitation in Articulate 360 Reach 360 by invitation id. Returns: id, email, firstName, lastName, groups, url, invitation. Required: id.
delete_a_articulate_360_invitation_by_id
Delete a pending invitation in Articulate 360 Reach 360 by invitation id. Deleting before the user accepts invalidates the emailed link. Returns an empty 204 response on success. Required: id.
list_all_articulate_360_learning_paths
List learning paths in Articulate 360 (Reach 360). Returns: id, title, description, coverImageUrl, coursesUrl, coursesReportUrl, learnersReportUrl, url. Max 100 results per page.
get_single_articulate_360_learning_path_by_id
Get a single learning path by id in Articulate 360 (Reach 360). Returns: id, title, description, coverImageUrl, coursesUrl, coursesReportUrl, learnersReportUrl, url. Required: id.
articulate_360_learning_paths_list_courses
List courses in a learning path in Articulate 360 (Reach 360). Returns: id, title, coverImageUrl, authorUrl, courseReportUrl, url, order, contentType. Required: learning_path_id. Max 100 results per page.
articulate_360_learning_path_enrollments_enroll_user
Enroll a single user in an Articulate 360 Reach 360 learning path. Returns an empty 204 response on success. Required: learning_path_id, user_id.
articulate_360_learning_path_enrollments_enroll_group
Enroll a group of users in an Articulate 360 Reach 360 learning path. Use `everyone` as group_id to enroll all users in the account. Returns an empty 204 response on success. Required: learning_path_id, group_id.
articulate_360_learning_path_enrollments_unenroll_user
Unenroll a single user from an Articulate 360 Reach 360 learning path. Returns an empty 204 response on success. Required: learning_path_id, user_id.
articulate_360_learning_path_enrollments_unenroll_group
Unenroll a group of users from an Articulate 360 Reach 360 learning path. Use `everyone` as group_id to unenroll all users in the account. Returns an empty 204 response on success. Required: learning_path_id, group_id.
articulate_360_reports_get_activity
Get the Articulate 360 Reach 360 user activity report listing all user sessions account-wide. Returns: courseId, courseTitle, courseReportUrl, courseUrl, userId, email, firstName, lastName, learnerReportUrl, userUrl, duration, numberOfLessonsCompleted, quizScorePercent, isQuizPassed, startedAt, userDeleted, courseDeleted.
articulate_360_reports_get_course_learners
Get a course learner report from Articulate 360 Reach 360, listing all learner sessions enrolled in a specific course. Returns: userId, email, firstName, lastName, learnerReportUrl, userUrl, duration, quizScorePercent, dueAt, status, completedAt, userDeleted, progress. Required: course_id.
articulate_360_reports_get_learner_courses
Get a learner course report from Articulate 360 Reach 360, listing all course sessions for a specific learner. Returns: courseId, courseTitle, courseReportUrl, courseUrl, duration, quizScorePercent, dueAt, status, completedAt, courseDeleted, progress. Required: learner_id.
articulate_360_reports_get_learning_path_courses
Get a learning path courses report from Articulate 360 Reach 360, listing all course sessions within a specific learning path. Returns: courseId, courseTitle, courseUrl, numberOfLessons, averageDuration, courseReportUrl, courseDeleted. Required: learning_path_id.
articulate_360_reports_get_learning_path_learners
Get a learning path learners report from Articulate 360 Reach 360, listing all learner sessions within a specific learning path. Returns: userId, email, firstName, lastName, learnerReportUrl, userUrl, duration, dueAt, status, userDeleted. Required: learning_path_id.
articulate_360_reports_get_group_courses
List courses in which group members are enrolled in Articulate 360 Reach 360. Returns: courseId, courseTitle, courseUrl, averageDuration, courseReportUrl, courseDeleted, enrollmentDeleted. Required: group_id.
list_all_articulate_360_users
List all users in your Articulate 360 Reach 360 account. Returns: id, email, groupsUrl, reportingGroupsUrl, managingGroupsUrl, role, firstName, lastName, lastActiveAt, learnerReportUrl, favoritesUrl, url, articulate360User. Optionally filter by email address. Max 100 results per page.
get_single_articulate_360_user_by_id
Get a single Articulate 360 Reach 360 user by id. Returns: id, email, groupsUrl, reportingGroupsUrl, managingGroupsUrl, role, firstName, lastName, lastActiveAt, learnerReportUrl, favoritesUrl, url, articulate360User. Required: id.
delete_a_articulate_360_user_by_id
Delete an Articulate 360 Reach 360 user by id. Returns an empty 204 response on success. Only learners who aren't managed with SSO and who don't have an Articulate ID can be deleted. Required: id.
create_a_articulate_360_webhook
Create a new webhook in Articulate Reach 360. Returns: id, targetUrl, events, sharedSecret, apiVersion, url. Required: targetUrl, events. A duplicate targetUrl returns a 409 error.
list_all_articulate_360_webhooks
List webhooks in Articulate Reach 360. Returns each webhook's id, targetUrl, events, apiVersion, and url. Max 2000 results per page.
get_single_articulate_360_webhook_by_id
Get a single Articulate Reach 360 webhook by id. Returns: id, targetUrl, events, apiVersion, url. Required: id.
delete_a_articulate_360_webhook_by_id
Delete an Articulate Reach 360 webhook by id. Returns an empty 204 response on success. Required: id.
articulate_360_managers_list_managing_groups
List groups that a manager manages in Reach 360. Returns: id, membersUrl, managersUrl, reportersUrl, name, url. Required: user_id.
articulate_360_managers_list_group_managers
List managers for a specific group in Reach 360. Returns: id, email, groupsUrl, managingGroupsUrl, reportingGroupsUrl, role, firstName, lastName, lastActiveAt, learnerReportUrl, url. Required: group_id.
articulate_360_reporters_list_reporting_groups
List the reporting groups a reporter belongs to in Articulate 360 Reach 360. Returns: id, name, membersUrl, managersUrl, reportersUrl, url. Required: user_id.
articulate_360_reporters_list_group_reporters
List reporters in a Reach 360 reporting group, including users who report on the Everyone group. Returns: id, email, role, firstName, lastName, lastActiveAt, groupsUrl, managingGroupsUrl, reportingGroupsUrl, learnerReportUrl, url. Required: group_id.
list_all_articulate_360_user_groups
List groups in which a Reach 360 user is enrolled. Returns group records including id, name, membersUrl, reportersUrl, managersUrl, and url. Required: user_id.
Why Truto
Why use Truto’s MCP server for Articulate 360
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for Articulate 360
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
How It Works
From zero to integrated
Go live with Articulate 360 in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Articulate 360 account
Use Truto’s frontend SDK to connect your customer’s Articulate 360 account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Articulate 360
Truto’s Proxy API is a 1-to-1 mapping of the Articulate 360 API. You call us, we call Articulate 360, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Articulate 360’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Articulate 360 on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
Which Articulate 360 product does this integration cover?
The integration targets the Reach 360 API, which is Articulate's LMS for distributing, enrolling, and reporting on training. Storyline and Rise authoring apps do not expose an API — Reach 360 is where user, enrollment, and completion data lives.
How does authentication work for end users?
Truto handles the Articulate 360 auth flow and credential storage for you. Your end users connect their Reach 360 account through Truto, and you call the tools using a Truto integrated account identifier — no token management on your side.
Can I get real-time updates instead of polling reports?
Yes. You can register webhooks via create_a_articulate_360_webhook and receive events such as completions, so your product reacts instantly without repeatedly hitting the reporting endpoints.
What reporting data can I pull from Reach 360?
You can pull account-wide activity, course learners, learner courses, learning path courses and learners, and group courses. These reports include fields like completion status, quiz score percent, and duration, which is enough to power dashboards and audit evidence.
Can I push training completions from outside systems into Reach 360?
Yes. The import course completion tool lets you write historical or externally completed training records into Reach 360, so customers can consolidate learning history from legacy LMSes or manual sources.
Does the integration support both individual and group-level enrollment?
Yes. You can enroll or unenroll users or entire groups against both courses and learning paths, which lets you build cohort-based provisioning without iterating per-user.
Articulate 360
Get Articulate 360 integrated into your app
Our team understands what it takes to make a Articulate 360 integration successful. A short, crisp 30 minute call with folks who understand the problem.