---
title: Articulate 360 API Integration on Truto
slug: articulate360
category: Knowledge Management
canonical: "https://truto.one/integrations/detail/articulate360/"
---

# Articulate 360 API Integration on Truto



**Category:** Knowledge Management  
**Status:** Generally available

## Unified APIs

### Unified User Directory API

- **Groups** — Groups are a collection of users in the source application. In some applications, they might also be called Teams.
- **Roles** — The Role object represents a role of a User.
- **Users** — The User object represents a User.

## MCP-ready AI tools

Truto exposes 45 tools for Articulate 360 that AI agents can call directly.

- **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.

## How it works

1. **Link your customer's Articulate 360 account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Articulate 360.** The Proxy API is a 1-to-1 mapping of the Articulate 360 API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **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

- **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.

## FAQs

### 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.
