HRIS · Beta
360learning
API integration
Ship HRIS features without building the integration. Full 360learning API access via Proxy and 150+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with 360learning
Common scenarios for SaaS companies building 360learning integrations for their customers.
Zero-touch employee onboarding from your HRIS
HRIS and payroll platforms can automatically provision 360Learning users, assign managers, and enroll new hires into onboarding paths the moment an employee is created in their system. Terminations trigger user deletion or pseudonymization to keep access compliant.
Native content distribution for e-learning vendors
Content and training providers can mirror their catalog into their customers' 360Learning tenants and push completion stats back, so learners never leave their primary LXP. This removes catalog-sync friction for enterprise deals.
Certification-gated workflows for PRM and CRM platforms
Partner and revenue platforms can enroll users into 360Learning paths and subscribe to webhooks that fire on completion. Certifications instantly unlock downstream actions like deal registration, tier upgrades, or CRM record updates.
Skills-driven performance and talent workflows
Performance management and talent SaaS can read 360Learning's skills and job architecture, push review outcomes back as skill assessments, and recommend specific learning paths as remediation. This turns review cycles into measurable learning interventions.
Centralized compliance and certification tracking
Compliance, GRC, and workforce management tools can import external certificates into 360Learning and pull generated certificate PDFs into a central locker. Auditors get a single source of truth across all training providers.
What You Can Build
Ship these features with Truto + 360learning
Concrete product features your team can ship faster by leveraging Truto’s 360learning integration instead of building from scratch.
Bulk user and group provisioning
Sync users, managers, and group memberships from your platform into 360Learning using bulk endpoints designed for enterprise-scale cohorts.
External course catalog publishing
Register your product as a 360Learning integration and bulk upsert your entire course catalog so it appears natively inside your customers' academies.
Completion write-back for external training
Push learner progress and completion stats from your platform back into 360Learning so L&D teams see unified reporting across internal and third-party content.
Real-time certification triggers via webhooks
Subscribe to course, path, and enrollment events to instantly gate features, issue digital badges, or update CRM records when a user gets certified.
Skills and job architecture sync
Read and write 360Learning's skills, jobs, and skill-to-job mappings, and push performance review results as skill assessments to close the loop between learning and performance.
Classroom and ILT session management
Create classrooms, manage slots, registrations, waitlists, and attendance sheets so your scheduling or workforce app can orchestrate instructor-led training end to end.
SuperAI
360learning 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_360_learning_certificate_outlines
List all certificate outlines in 360learning, optionally filtered by createdAt or groupId using LHS bracket notation. Returns: id, createdAt.
create_a_360_learning_certificate_outline
Create a new certificate outline in 360learning. Returns the created certificate outline including id, groupId, createdAt, and wording.
update_a_360_learning_certificate_outline_by_id
Update specific fields of an existing 360learning certificate outline by id. Fields not included in the request body remain unchanged. Returns the updated certificate outline including certificateOutlineId, groupId, createdAt, and wording. Required: id.
delete_a_360_learning_certificate_outline_by_id
Delete a specific 360learning certificate outline by id. Returns an empty 204 response on success. Required: id.
list_all_360_learning_classrooms
List all classrooms in 360learning, with optional filtering by group, creation date, and modification date. Returns: id, createdAt. Page size of 500 classrooms.
create_a_360_learning_classroom
Create a classroom in 360learning. Returns: id, createdAt. Required: groupId.
get_single_360_learning_classroom_by_id
Get a single classroom in 360learning by id. Returns: id, createdAt. Required: id.
update_a_360_learning_classroom_by_id
Update specific fields of an existing classroom in 360learning; fields not included in the request payload remain unchanged. Returns: id, createdAt. Required: id.
list_all_360_learning_classroom_slots
List all slots in a 360learning classroom. Returns: createdAt. Required: classroom_id. Page size of 100 slots.
update_a_360_learning_classroom_slot_by_id
Edit specific fields of an existing classroom slot in 360learning. Fields not included in the request payload remain unchanged. Returns: createdAt. Required: classroom_id, id.
delete_a_360_learning_classroom_slot_by_id
Remove a classroom slot from a classroom in 360learning by its slot ID. Returns an empty 204 response on success. Required: classroom_id, id.
list_all_360_learning_classrooms_registrations
List all classroom registrations in 360learning. Returns: id, createdAt. Page size of 7,000 registrations per page.
list_all_360_learning_classroom_registrations
List all slot registrations for a classroom in 360learning. Returns: id, classroom_slot_id, user_id, status. Required: classroom_id. Paginated with a page size of 7,000 registrations.
create_a_360_learning_classroom_slot_attendance_sheet
Create an attendance sheet for a classroom slot in 360learning. Returns the created attendance sheet object as either an opened or closed attendance sheet. Required: classroom_slot_id. A maximum of 100 attendance sheets is allowed per classroom slot.
update_a_360_learning_classroom_slot_attendance_sheet_by_id
Replace an attendance sheet in a 360learning classroom slot by id. Returns the updated attendance sheet object including its id and sheet-specific attributes (shape varies for opened vs closed sheets). Required: classroom_slot_id, id.
delete_a_360_learning_classroom_slot_attendance_sheet_by_id
Delete an attendance sheet from a 360learning classroom slot by id. Returns an empty 204 response on success. Required: classroom_slot_id, id.
list_all_360_learning_attendance_sheet_attendances
List all learner attendances in 360learning for a given classroom slot and attendance sheet. Returns a paginated array of attendance records (AttendanceDTO objects) with a page size of 3,000. Required: classroom_slot_id, attendance_sheet_id.
list_all_360_learning_classroom_slot_waitlists
List all waitlist requests in a 360learning classroom slot. Returns: userId. Required: classroom_slot_id.
create_a_360_learning_classroom_slot_waitlist
Add a user to a 360learning classroom slot waitlist. The classroom slot must be full and not yet started. Returns an empty 204 response on success. Required: classroom_slot_id, user_id.
delete_a_360_learning_classroom_slot_waitlist_by_id
Remove a user from a 360learning classroom slot waitlist. Returns an empty 204 response on success. Required: classroom_slot_id, id.
create_a_360_learning_classroom_slot_registration
Register a user to a 360learning classroom slot. Returns the created slot registration including userId, hasAttended, status, createdAt, and modifiedAt. Required: classroom_slot_id, user_id. The user must be enrolled in the classroom slot's path session, and the slot must not be full.
update_a_360_learning_classroom_slot_registration_by_id
Update specific fields of a classroom slot registration in 360learning. Fields not included in the request body remain unchanged. Returns the updated registration including id, userId, status, hasAttended, createdAt, and modifiedAt. Required: classroom_slot_id, id.
delete_a_360_learning_classroom_slot_registration_by_id
Unregister a user from a classroom slot in 360learning. Returns an empty 204 response on success. Required: classroom_slot_id, id.
list_all_360_learning_classroom_slot_registrations
List all users registered to a classroom slot in 360learning. Returns: id, createdAt. Required: classroom_slot_id. Paginated with a page size of 7,000 registrations.
get_single_360_learning_course_by_id
Get a single 360Learning course by id. Returns: id, createdAt, type. Required: id.
list_all_360_learning_courses
List all courses in 360Learning with optional filters by status, type, author, group, creation/modification date, tags, co-authors, source language, and collaborative learning flag. Returns: id, createdAt, type. Page size is 500 courses.
360_learning_courses_archive
Archive or restore a 360learning course. Returns: id, status, type, createdAt, modifiedAt, authorId, groupId, originalAuthorId, tagIds, coAuthorIds, sourceLang, collaborativeLearning. Required: course_id. Archiving prevents the course from being added to new paths but keeps it accessible in existing paths; statistics are not deleted.
update_a_360_learning_courses_elearning_standard_by_id
Update specific fields of an existing eLearning standard (SCORM, AICC, xAPI) course in 360Learning. Fields omitted from the request body remain unchanged. Returns the updated course including id, groupId, and duration. Required: id (courseId). Not for native 360Learning courses; rate limited to 1 request per second.
create_a_360_learning_courses_generate_from_prompt
Trigger asynchronous generation of a 360learning course from a text prompt. An email notification is sent when generation completes; retrieve the course via GET /courses sorted by created_at. Required: prompt, userId, groupId. Returns an empty 200 response on success.
list_all_360_learning_courses_stats
List all courses statistics in 360learning. Returns: courseId, userId, completedAt. Page size of 500 course attempt statistics per page.
list_all_360_learning_custom_fields
List all custom fields in 360learning with optional filtering by name, targetType, and type. Returns: id, name, targetType, type. Page size of 1,000 custom fields.
create_a_360_learning_custom_field
Create a custom field in 360learning. Returns: id, targetType, type, name. Required: name, targetType, type.
update_a_360_learning_custom_field_by_id
Update an existing custom field in 360learning. Returns: id, targetType, type, name. Required: id. Fields not included in the payload remain unchanged.
delete_a_360_learning_custom_field_by_id
Delete a custom field in 360learning by id. Returns an empty 204 response on success. Required: id.
list_all_360_learning_custom_field_authorized_values
List all authorized values for a specific custom field in 360learning. Returns an array of authorized value strings, which may be date strings in YYYY-MM-DD format or plain string values depending on the custom field type. Required: custom_field_id.
360_learning_custom_field_authorized_values_bulk_update
Replace all authorized values for a 360Learning custom field, removing any existing values not included in the request body. Returns an array of the updated authorized value strings (YYYY-MM-DD dates for date-type fields, or arbitrary strings for string-type fields). Required: custom_field_id.
list_all_360_learning_custom_links
List all custom links in 360Learning. Returns an array of custom link objects including id, name, and type. Page size is 1,000.
create_a_360_learning_custom_link
Create a custom link in 360Learning. Returns the created custom link object including id, name, and type. Required: name, type. The name and type must each be unique across all custom links.
update_a_360_learning_custom_link_by_id
Replace a custom link in 360Learning by id. Fields not included in the payload are removed. Returns the updated custom link object including id, name, and type. Required: id, name, type. The name and type must each be unique across all custom links.
delete_a_360_learning_custom_link_by_id
Delete a custom link in 360Learning by id. Returns an empty 204 response on success. Required: id.
list_all_360_learning_external_ids
List all external ID mappings in 360learning that link resources together. Returns: id, type. Page size of 5,000. Optional filters on platform, type, value, and targetId using LHS bracket notation.
create_a_360_learning_external_id
Create an external ID mapping in 360learning. Returns: id, type. Required: platform, type, value, targetId. A 400 is returned if a mapping already exists for the resource on this platform, the platform name is reserved, or the value is already used by another resource.
update_a_360_learning_external_id_by_id
Replace an existing external ID mapping in 360learning by id. Returns: id, type. Required: id, platform, type, value, targetId. A 404 is returned if the mapping ID does not exist.
delete_a_360_learning_external_id_by_id
Delete an external ID mapping in 360learning by id. Returns an empty 204 response on success. Required: id. A 404 is returned if the mapping ID does not correspond to any existing mapping.
list_all_360_learning_groups
List all groups in 360Learning. Returns: id. Page size of 500 groups.
get_single_360_learning_group_by_id
Get a single 360Learning group by id. Returns: id. Required: id.
update_a_360_learning_group_by_id
Edit specific fields of an existing 360Learning group; fields not included in the request payload remain unchanged. Returns the updated group including id, parentId, isPublic, subdomain, customUrl, imprint, moderationCharter, privacyPolicy, termsOfUse. Required: id.
delete_a_360_learning_group_by_id
Delete a 360Learning group by id. Returns an empty 204 response on success. Required: id.
360_learning_groups_add_user_role
Add a role to a user in a 360Learning group. Returns an empty 204 response on success. Required: group_id, role (one of admin, analyst, coach, contributor, editor, learner, user-admin), user_id.
360_learning_groups_remove_user_role
Remove a user's role from a group in 360learning. When removing the `learner` role, it is also removed from all public subgroups down to the first private excluded. Returns an empty 204 response on success. Required: group_id, role, user_id.
create_a_360_learning_group
Add a user's role in a 360learning group. Returns an empty 204 response on success. Required: id (the group ID), role, user_id.
list_all_360_learning_group_roles
List all memberships (user-role assignments) in a 360Learning group, sorted per user. Returns: userId, role. Required: group_id. Page size of 1,000 memberships.
list_all_360_learning_group_catalogs
List all content IDs of a given type shared in a 360Learning group catalog. Returns a paginated array of content ID strings in ObjectId format. Required: group_id, content_type. Paginated with a page size of 10,000 content IDs.
list_all_360_learning_group_libraries
List all content IDs of a given type shared in a 360learning group library. Returns an array of unique content IDs, each an ObjectId string (e.g. 507f1f77bcf86cd799439011). Required: group_id, content_type. Page size of 10,000 content IDs per page.
360_learning_group_brandings_bulk_update
Update the branding for a 360Learning group by group_id. Returns: id. Required: group_id. Branding is inherited by subgroups unless a subgroup defines its own branding; without the Extended Training package, only the root group's branding can be updated.
list_all_360_learning_integrations
List integration configurations in 360learning. Returns one page of integration configurations including id, externalPlatform, groupId, and authorId. Max 100 per page.
create_a_360_learning_integration
Create a new integration configuration in 360learning, or reactivate an existing inactive one. Returns the created integration configuration including id, externalPlatform, groupId, and authorId.
update_a_360_learning_integration_by_id
Update specific fields of an existing 360learning integration configuration by id. Fields omitted from the request body remain unchanged. Returns: id. Required: id.
delete_a_360_learning_integration_by_id
Delete a 360learning integration configuration by id, archiving all its related content. Returns an empty 204 response on success. Required: id.
get_single_360_learning_integration_course_by_id
Get a specific 360Learning integration course by id. Returns the course object including id, group_id, and created_at. Required: integration_id, id.
360_learning_integration_courses_bulk_update
Bulk upsert external courses in 360Learning, adding or replacing courses matched by their externalId for a given integration. The request is queued and processed asynchronously (up to 10,000 objects per call). Returns an empty 202 response with a Location header URL for polling the bulk operation status. Required: integration_id.
360_learning_integration_courses_bulk_delete
Archive multiple external courses in bulk in 360Learning by integration ID. Processes up to 1,000 objects asynchronously and returns a 202 with a Location header URL to poll the bulk operation status. Required: integration_id.
list_all_360_learning_learning_needs
List all learning needs in your 360Learning platform. Returns: id, createdAt, updatedAt. Page size of 500 learning needs.
create_a_360_learning_oauth_2_token
Create an OAuth2 access token in 360Learning using the client_credentials grant. Returns: access_token, token_type, expires_in. Required: grant_type, client_id, client_secret. The token is valid for 1 hour.
list_all_360_learning_paths_sessions
List all path sessions in 360learning across your platform. Returns: sessionId, pathId, createdAt, modifiedAt, startDate, endDate. Does not return session translations; use the Retrieve a path session endpoint for those. Page size of 500.
list_all_360_learning_paths_stats
List all user statistics for all paths in 360learning. Returns one page of path user statistics including pathId, userId, status, and completedAt. Page size is 2,000 records. All filter parameters are optional and use LHS bracket notation.
create_a_360_learning_paths_add_token
Add tokens to a specific group for a given path in 360Learning. Returns an empty 204 response on success. Required: pathId, groupId.
create_a_360_learning_path
Create a new learning path in 360Learning. Returns the created path object including its id, groupId, certificateId, and createdAt.
update_a_360_learning_path_by_id
Update specific fields of an existing 360learning path by id. Fields not included in the request body remain unchanged. Returns the updated path object. Required: id.
delete_a_360_learning_path_by_id
Delete a 360learning path by id. Returns an empty 204 response on success. Required: id. A path cannot be deleted if it is used as a step or requirement in at least one other path (returns a 409 conflict).
360_learning_paths_archive
Archive or restore a path in 360learning. Returns the updated path object. Required: path_id. A path with running sessions cannot be archived.
create_a_360_learning_path_session
Create a path session for a specific path in 360Learning. Returns the created session information including startDate, endDate, pathId, mainInstructorId, and instructorIds. Required: path_id.
update_a_360_learning_path_session_by_id
Update a 360learning path session by editing specific fields; omitted fields remain unchanged. Returns the updated session including id, groupId, startDate, and endDate. Required: path_id, id.
delete_a_360_learning_path_session_by_id
Delete a 360learning path session by id. Returns an empty 204 response on success. Required: path_id, id.
delete_a_360_learning_session_self_enrollment_by_id
Archive a self-enrolled learner from a 360learning path session. Returns an empty 204 response on success. Required: path_id, session_id, id (the learner's user ID). Learners enrolled through the Audience Builder cannot be archived here — unassign them by updating the session audience's excludedLearners instead.
list_all_360_learning_path_enrollments
List all enrollments for a given learning path in 360learning. Returns: id, createdAt. Required: path_id. Paginated with a page size of 5,000 enrollments.
list_all_360_learning_session_audiences
Retrieve a path session audience in 360learning given the path ID and session ID. Returns the session audience object with its audience builder configuration, mode, and filter settings as defined by the upstream SessionAudienceDTO schema. Required: path_id, session_id.
360_learning_session_audiences_bulk_update
Replace the audience for a path session in 360learning. Audiences not included in the request body are removed. Returns the updated session audience object with its audience builder configuration, mode, and filter settings. Required: path_id, session_id.
list_all_360_learning_session_user_statuses
Retrieve aggregated metrics for a 360Learning path session, including counts of users by session status and total certificates issued. Returns: attributes containing the aggregated session statistics. Required: path_id, session_id.
list_all_360_learning_session_user_stats
List all user statistics for a 360learning path session. Returns: userId. Required: path_id, session_id. Paginated with a page size of 2,000 user statistics.
update_a_360_learning_path_child_session_by_id
Update a child path session in 360Learning. Returns the updated child session including id, startDate, endDate, and pathId. Required: path_id, id.
360_learning_path_translations_bulk_update
Replace all translations for a 360learning path, removing any translations not included in the request body. Returns the updated path translations as an array of translation objects. Required: path_id. The default language translation cannot be removed or unpublished.
list_all_360_learning_projects
List all live projects in your 360learning platform. Returns a paginated array of project objects, one page per request. Page size is 500 projects per page.
list_all_360_learning_skills_powers
List all powers in 360Learning, paginated at 500 per page. Returns: id. Optional LHS-bracket filters available on skillId, status (toAssess, pendingValidation, validated), and userId.
list_all_360_learning_skills
List all skills in your 360learning platform, optionally filtering by status and updatedAt. Returns: id, status, updatedAt, createdAt. Paginated with a fixed page size of 500 skills.
360_learning_user_jobs_bulk_update
Replace all jobs for a 360learning user with the provided ones; any jobs not included are removed. Returns the current list of job identifiers as an array of strings. Required: user_id. A maximum of 100 jobs is allowed per user.
list_all_360_learning_tags
List all tags in your 360learning platform. Returns: id, name. Page size of 5,000 tags.
create_a_360_learning_tag
Create a tag in 360learning with the given name. Returns: id, name. Required: name.
get_single_360_learning_tag_by_id
Retrieve a single tag in 360learning by its id. Returns: id, name. Required: id.
update_a_360_learning_tag_by_id
Replace an existing 360learning tag by id. Fields not included in the payload remain unchanged. Returns: id, name. Required: id.
delete_a_360_learning_tag_by_id
Delete a 360learning tag by its unique ObjectId. Returns an empty 204 response on success. Required: id.
list_all_360_learning_users
List all 360learning users in your platform, paginated at 500 per page. Returns: userId, firstName, lastName, mail, username, status, createdAt, toBeDeactivatedAt, primaryGroupId. Filterable by mail, username, and status.
create_a_360_learning_user
Create a new invited user in 360learning; if a previously deleted user with the same mail or username exists, their account is restored to invited status. Returns: userId, firstName, lastName, mail, username, status, createdAt, toBeDeactivatedAt, primaryGroupId. Required: at least one of mail or username in the request body.
get_single_360_learning_user_by_id
Get a single 360learning user by id. Returns: userId, firstName, lastName, mail, username, status, createdAt, toBeDeactivatedAt, primaryGroupId. Required: id.
update_a_360_learning_user_by_id
Update specific fields of an existing 360learning user; omitted fields remain unchanged. Returns: userId, firstName, lastName, mail, username, status, createdAt, toBeDeactivatedAt, primaryGroupId. Required: id.
delete_a_360_learning_user_by_id
Delete a 360learning user by id. Returns an empty 204 response on success. The company owner cannot be deleted.
360_learning_users_activate
Activate a specific user in 360learning by their unique user ID. Returns the activated user object including userId, firstName, lastName, and mail. Required: user_id. If the user was previously deleted, it must be recreated before it can be activated.
create_a_360_learning_user_manager
Add a manager to a user in 360learning. Returns an empty 204 response on success. Required: user_id, manager_id.
delete_a_360_learning_user_manager_by_id
Remove a manager from a user in 360learning. Returns an empty 204 response on success. Required: user_id, id.
list_all_360_learning_user_managers
List all manager IDs assigned to a user in 360learning. Returns an array of manager IDs as ObjectId strings. Required: user_id. Page size of 1,000 manager IDs.
list_all_360_learning_user_custom_links
List all custom user links for a 360learning user. Returns: id. Required: user_id. Paginated with a page size of 1,000 custom links.
create_a_360_learning_user_custom_link
Create a custom user link for a 360learning user by associating a custom link with the user. Returns: id. Required: user_id, customLinkId.
update_a_360_learning_user_custom_link_by_id
Replace a custom user link for a 360learning user with the provided data. Returns: id. Required: user_id, id, customLinkId.
delete_a_360_learning_user_custom_link_by_id
Delete a specific custom user link for a 360learning user by id. Returns an empty 204 response on success. Required: user_id, id.
list_all_360_learning_user_certificates
List all certificates for a specific user in 360learning. Returns: id. Required: user_id. Page size of 1,000 certificates.
create_a_360_learning_user_certificate
Import an external certificate for a specific user in 360learning. Returns: id. Required: user_id, certificateOutlineId, deliveryDate. The expiry date cannot be set if the related certificate outline has a validity period.
list_all_360_learning_user_subordinates
List all subordinate user IDs for a given 360learning user. Returns an array of subordinate user IDs as ObjectId strings. Required: user_id. Paginated with a page size of 1,000 subordinate IDs.
list_all_360_learning_certificate_pdfs
Download a certificate PDF file for a specific user in 360Learning. Returns: data (the binary PDF file content). Required: user_id, certificate_id.
list_all_360_learning_user_roles
List all group memberships (roles) for a specific user in 360Learning, sorted per group. Returns: groupId, role, userId. Required: user_id. Page size of 1,000 memberships.
360_learning_user_pseudonymizes_bulk_update
Pseudonymize a previously deleted 360learning user by replacing personal data (firstName, lastName, mail, username) with irreversible random alphanumeric strings while preserving the user ID. Returns the pseudonymized user object including id, firstName, lastName, mail, and username. Required: user_id. The user must already be deleted; a 400 error is returned otherwise.
360_learning_user_passwords_bulk_update
Replace the password of a 360Learning user. If passwordMustBeChanged is set to true, the user will be forced to change their password on the next login. Returns an empty 204 response on success. Required: user_id, password.
360_learning_certificates_privacy_levels_bulk_update
Update the privacy level of specified certificates for a 360Learning user. Returns an empty response on success. Required: user_id.
360_learning_groups_catalogs_bulk_create
Bulk add multiple content IDs of a given type to 360Learning group catalogs. Processes up to 20,000 objects asynchronously; returns a 202 response with a Location header URL to poll the bulk operation status.
360_learning_groups_catalogs_bulk_delete
Bulk-remove multiple content IDs of a given type from groups catalogs in 360learning. The request is queued and processed asynchronously (up to 20,000 objects); a 202 response returns a Location header URL for polling the bulk operation status. Returns an empty 202 response on success. Required: request body with content IDs, content type, and group IDs.
360_learning_groups_libraries_bulk_create
Bulk add content to 360learning group libraries asynchronously. Adds multiple content IDs of a given type to group libraries; the request is queued and processed in the background. Returns a 202 Accepted response with a Location header URL to poll the bulk operation status. Processes up to 20,000 objects per request.
360_learning_groups_memberships_bulk_create
Bulk add users to groups with assigned roles in 360learning. Processes up to 20,000 objects asynchronously; poll the returned operation status URL to check progress. Returns an empty 202 response on success. Required: body (array of objects with userId, groupId, and role).
360_learning_groups_memberships_bulk_delete
Bulk remove users from 360Learning groups with their assigned roles; the learner role is also removed from all public subgroups down to the first private excluded. Returns a 202 Accepted response with no body; a Location header provides the URL to poll the operation status. Required: body — an array of objects each with groupId, userId, and role. Max 20,000 objects, processed asynchronously.
360_learning_bulk_groups_bulk_delete
Delete multiple groups in 360learning asynchronously, including descendant groups and their contents. Returns a 202 Accepted response with no body; the Location header provides a URL to track the bulk operation status. Required: a JSON array body of group IDs. Processes up to 2,000 objects per request.
360_learning_integration_stats_bulk_create
Bulk import integration statistics into 360Learning for a given integration. Processes up to 10,000 objects asynchronously, creating or updating course attempts based on firstActivityAt, lastActivityAt, completedAt, and forceNew. Returns a 202 Accepted with a Location header URL to poll the operation status. Required: integration_id.
get_single_360_learning_bulk_operation_by_id
Get a single bulk operation in 360learning by id. Returns: id, type, createdAt. Required: id.
list_all_360_learning_bulk_operations
List all bulk operations in 360learning with optional filters on status, type, and createdAt. Returns: id, type, createdAt. Page size of 20.
list_all_360_learning_operation_results
Retrieve the results of a completed or erroneous bulk operation in 360learning by its unique operation ID. Returns an array of result items, each being either a success result or an error result. Required: bulk_operation_id. Returns a 400 error if the operation has not run yet, or a 404 if the operation ID does not exist.
360_learning_skills_reviews_bulk_create
Bulk add skill reviews in 360Learning. Reviews support three actions — skill added, skill assessed, and skill deleted; assessments are auto-validated when the assessor is a manager of the user. Returns a 202 Accepted response with a Location header to poll the bulk operation status. Required: a JSON array body of skill review objects. Processes up to 10,000 objects asynchronously.
360_learning_skills_jobs_bulk_update
Bulk upsert (add or replace) skills jobs in 360learning by externalId — matching externalIds replace existing jobs, unmatched ones create new jobs. Returns a 202 Accepted response with a Location header URL for polling the bulk operation status; no response body. Processes up to 10,000 objects asynchronously. Required: an array body of job objects each with an externalId.
360_learning_skills_jobs_bulk_delete
Bulk delete 360learning skills jobs by externalId, processing up to 10,000 objects asynchronously. Returns an empty 204 response on success. Required: body (array of objects each containing externalId).
360_learning_skills_libraries_bulk_update
Bulk upsert skills libraries in 360learning by externalId — matching libraries are replaced with new data and unmatched externalIds create new libraries. Returns a 202 Accepted response with a Location header URL to poll the bulk operation status. Processes up to 10,000 objects asynchronously; the request is queued upon submission. Required: a request body containing the libraries to upsert.
360_learning_skills_libraries_bulk_delete
Bulk delete skills libraries in 360learning by externalId. Submits an asynchronous bulk operation queued for background processing. Returns an empty 202 response on success; the Location response header provides a URL to poll the operation status. Required: body (array of objects each containing externalId). Processes up to 10,000 objects per request.
360_learning_bulk_skills_bulk_update
Bulk upsert skills in 360learning by matching on externalId. If a provided externalId matches an existing skill, the skill is replaced with the new data; if no match is found, a new skill is created. Returns a 202 Accepted with no response body — a Location header provides the URL for polling the bulk operation status. Required: externalId (per array item). Processes up to 10,000 objects…
360_learning_bulk_skills_bulk_delete
Bulk delete skills in 360learning by externalId. Processes up to 10,000 objects asynchronously; the request is queued upon submission and a Location header URL is provided to track operation status. Returns an empty 202 response on success. Required: externalId.
360_learning_skills_jobs_skills_bulk_update
Bulk replace jobs skills in 360learning by jobId — all existing skills for each job are replaced with the provided ones. Returns a 202 Accepted with no response body; a Location header provides a URL to poll the bulk operation status. Processes up to 10,000 objects asynchronously; maximum 100 skills per job. Required: body (a JSON array of objects, each with jobId and skills).
360_learning_users_jobs_bulk_update
Bulk replace users' jobs in 360learning by submitting an array of user-job mappings processed asynchronously (up to 10,000 objects, max 100 jobs per user). Each user's existing jobs are fully replaced by the provided ones. Returns an empty 202 response; the Location response header provides a URL to poll the bulk operation status. Required: body array where each item includes userId and jobs.
360_learning_notifications_subscriptions_bulk_create
Bulk create email subscription events in 360Learning. The request is queued and processed asynchronously (up to 20,000 objects). Returns a 202 Accepted with no response body; the Location response header provides a URL to poll the bulk operation status. Required: a JSON request body with the subscription events to create.
create_a_360_learning_oauth_2_backend_token
Create an OAuth backend access token for a 360Learning plugin using company credentials. Returns: access_token, token_type, expires_in. Required: company_id, client_id, client_secret. The token expires after 1 hour and must be sent as a Bearer token in the Authorization header of subsequent API calls.
create_a_360_learning_oauth_2_client_token
Create an OAuth client access token for a 360Learning plugin. Returns: access_token, token_type, expires_in. The generated token authorizes access to 360Learning API v2 resources for 1 hour and must be sent as a Bearer token in the Authorization header of subsequent requests. A JSON request body is required.
list_all_360_learning_uaa_users
Retrieve the profile of the authenticated user in 360learning. Returns: userId, firstName, lastName, mail, createdAt. Must be called with a user-authorized token issued for a specific user.
list_all_360_learning_webhooks_subscriptions
List all webhook subscriptions in 360learning, optionally filtered by event type using LHS bracket notation. Returns: eventType, name, url, _id, status, id. Page size of 2000 subscriptions.
create_a_360_learning_webhooks_subscription
Create a webhook subscription in 360learning. Returns: eventType, url, _id, status, id, name. Required: eventType, name, url.
get_single_360_learning_webhooks_subscription_by_id
Get a single webhook subscription by id in 360learning. Returns: eventType, name, url, _id, status, id. Required: id.
update_a_360_learning_webhooks_subscription_by_id
Update specific fields of an existing webhook subscription in 360learning. Fields omitted from the request body remain unchanged. Returns: eventType, url, _id, status, id, name. Required: id.
delete_a_360_learning_webhooks_subscription_by_id
Delete a 360learning webhook subscription by id. Returns an empty 204 response on success. Required: id.
list_all_360_learning_subscription_secrets
Retrieve the signing secret for a webhook subscription in 360learning. The signing secret is a confidential key used to generate and verify webhook signatures. Returns: secret. Required: subscription_id.
create_a_360_learning_events_retry_failure
Retry all failed webhook events for a 360learning webhook subscription within a specified timeframe. Returns an empty 204 response on success. The retry timeframe is limited to a maximum of 3 days per request and endDate must be after startDate; events are retained for 90 days and can be retried across multiple requests. Required: subscription_id, startDate, endDate.
create_a_360_learning_events_retry_succese
Retry all successful webhook events for a 360learning webhook subscription within a specified timeframe. Returns an empty 204 response on success. Maximum 3 days per request; events retained for 90 days. Required: subscription_id, startDate, endDate.
create_a_360_learning_secrets_rotate
Rotate the signing secret of a 360Learning webhook subscription. The new secret takes effect immediately and events are also signed with the legacy secret for 24 hours. Returns: secret. Required: subscription_id.
list_all_360_learning_course_custom_field_values
List all custom field values for a 360learning course. Returns: timestamp, data. Required: course_id.
360_learning_course_custom_field_values_bulk_update
Replace all custom field values for a 360learning course with the provided ones; values not included in the request body are removed. Returns an array of updated custom field value objects including customFieldId and value. Required: course_id, body (array of customFieldId and value entries).
list_all_360_learning_path_session_custom_field_values
List all custom field values for a 360learning path session. Returns an array of custom field value objects including customFieldId, value, createdAt, and updatedAt. Required: path_id, session_id. Both IDs must be 24-character hexadecimal ObjectId strings.
360_learning_path_session_custom_field_values_bulk_update
Replace all custom field values for a 360Learning path session with the provided ones; values not included in the request are removed. Returns an array of updated custom field values, each containing customField and value. Required: path_id, session_id.
360_learning_user_custom_field_values_bulk_update
Replace all custom field values for a 360learning user by user_id. Returns the updated custom field values as an array of objects with customFieldId and value. Values not included in the request body are removed. Required: user_id.
create_a_360_learning_group_media
Upload media files (banner, background, favicon, or logo) to a 360Learning group. Returns the updated group object. Required: group_id. At least one media file must be provided in the request body.
create_a_360_learning_user_media
Upload a profile image to a 360learning user by user_id. Returns the updated user object including userId, firstName, lastName, mail, and createdAt. Required: user_id. The uploaded file must be a valid image within size limits.
list_all_360_learning_course_tags
List all tags in a 360Learning course. Returns each tag's tagId and source. Required: course_id. Paginated with a page size of 500 tags.
360_learning_course_tags_bulk_update
Replace all tags in a 360Learning course with the provided ones; any tags not included are removed. Returns an array of the new tag IDs linked to the course. Required: course_id, tagIds.
list_all_360_learning_path_tags
List all tags associated with a 360learning path. Returns each tag's id and source. Required: path_id. Paginated with a page size of 500 tags.
360_learning_path_tags_bulk_update
Replace all tags on a 360learning path — tags not included in the request body are removed. Returns the updated list of tag IDs linked to the path. Required: path_id.
list_all_360_learning_webhook_events
List all webhook events for a given 360Learning subscription. Returns: _id, createdAt, status, payload, type, timestamp, data. Page size is 250 events per page. Required: subscription_id.
Why Truto
Why use Truto’s MCP server for 360learning
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 750+ 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.
How It Works
From zero to integrated
Go live with 360learning in under an hour. No boilerplate, no maintenance burden.
Link your customer’s 360learning account
Use Truto’s frontend SDK to connect your customer’s 360learning 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 360learning
Truto’s Proxy API is a 1-to-1 mapping of the 360learning API. You call us, we call 360learning, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate 360learning’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about 360learning on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication work with 360Learning?
360Learning uses OAuth 2.0. Truto supports generating OAuth 2 tokens, including backend and client credential flows, so your end users can securely connect their 360Learning tenant without you handling token refresh or storage.
Can we handle enterprise-scale data volumes?
Yes. 360Learning's API is built around asynchronous bulk operations for users, group memberships, integration courses, skills, jobs, and stats. You can submit bulk jobs and poll operation results and bulk operation status endpoints to track completion.
How do we get real-time updates instead of polling?
You can create webhook subscriptions programmatically, list available webhook events, rotate subscription secrets, and retry failed or successful events. This lets you react instantly to course completions, enrollments, and other lifecycle events.
Does the integration support custom fields?
Yes. Truto exposes 360Learning custom fields for users, courses, and path sessions, including listing authorized values and bulk-updating custom field values, so customer-specific data models flow through your integration.
Can we publish our own courses into a customer's 360Learning tenant?
Yes. Create an integration configuration, then bulk upsert or delete your external course catalog and push completion stats back using the dedicated integration course and stats endpoints.
How do we handle user offboarding and privacy requirements?
You can delete users, bulk pseudonymize users, bulk update passwords, and adjust certificate privacy levels. This covers standard offboarding, GDPR-style pseudonymization, and access revocation flows.
From the Blog
360learning integration guides
Deep dives, architecture guides, and practical tutorials for building 360learning integrations.
360learning
Get 360learning integrated into your app
Our team understands what it takes to make a 360learning integration successful. A short, crisp 30 minute call with folks who understand the problem.