Why use LTI?
Learning Tools Interoperability (LTI) is the industry-standard for Learning Management Systems (LMS) to securely communicate with External Tools like Kyron Learning using Single-Sign On (SSO).
Kyron learning uses LTI 1.3, also known as LTI Advantage, enabling features such as deep-linking (assigning assets directly from the LMS), privacy controls, and Assignments and Grade Services (AGS).
Read more about LTI 1.3 here
1. LTI Registration
Kyron Learning supports LTI Advantage (LTI 1.3) using “Two-Way” or “Manual” Registration. First, you register Kyron Learning as an External Tool on your LMS. Second, you register your LMS as an Integration on Kyron Learning.
Requirements
Kyron Learning Account: Create a Kyron Learning account to access the platform's course creation tools.
Learning Management System (LMS): An LMS platform that supports LTI 1.3 (LTI Advantage). This can be a third-party LMS (e.g. Canvas, Brightspace, Blackboard, Coursera), or it can be your own implementation of an LTI Platform.
1.1 Register Kyron Learning as an LTI Tool on your LMS:
The first step is to register Kyron Learning as an LTI Tool on your LMS. An LMS administrator should be able to register Kyron as an “External Tool” using “LTI Advantage” (LTI 1.3), or by creating a set of Developer keys.
See the “Kyron Learning registration details” below for the fields to use for this registration step.
Once you register, your Learning Platform should display registration details such as Client_ID, Keyset_URL, Access_token_URL, and OpenID_Connect_Auth_URL for you to use to connect to your Kyron account. Save these for Step 2: Register your Learning Platform on Kyron.
💡 Are you using Canvas?
You can use our Canvas Developer Key Deep Linking Setup URL [https://app.kyronlearning.com/lti/v1/config/canvas/developer_key_settings_deep_linking.json] to automatically set up the developer key.
Kyron Learning registration details:
OpenID Connect Initiation Url / OpenID Connect Login URL - Most learning platforms call this an initiation or connect URL.
https://www.kyronlearning.com/lti/v1/initiate
Redirect URLs / Redirect URIs:
https://www.kyronlearning.com/lti/v1/launch
Deep Linking URL / Target Link URI - This URL supports both deep-linking (recommended) and launching a single learning asset resource. You can configure this in your LTI registration to designate deep-linking vs single resource linking. Both use the same link:
https://www.kyronlearning.com/lti/v1/launch
Keyset URL - “Keyset URL” or “Public JWK URL”.
https://www.kyronlearning.com/.well-known/jwks.json
Note: If you need the keyset itself, you can visit https://www.kyronlearning.com/.well-known/jwks.json and copy the result.
1.2 Register LMS as a Kyron Learning Integration:
To register your platform with Kyron Learning, navigate to the Settings > Integrations page (https://www.kyronlearning.com/studio/settings/integrations) using your Kyron account. You need the Organization Manager role.
Fill in the following fields. Name, Issuer, Client ID, Keyset URL, and OIDC Auth URL are required.
Name: Name of your LMS platform.
Description: Optional. A brief description of your LMS platform.
Issuer: Unique URL identifying your LMS platform in HTTPS format. E.g. https://canvas.instructure.com or https:/my-platform.brightspace.com
Client ID: Unique identifier your platform uses with Kyron Learning.
Deployment ID: Only required for Blackboard. Leave it blank for other LMSs.
Keyset URL: URL to your platform's keyset, often ends includes jwks.
OIDC Auth URL: URL to your platform's OpenID Connect (OIDC) authentication endpoint.
Access Token URL: URL to your platform's access token endpoint [This field is required for learner “completion” and “score” returns]
💡 Are you using Canvas? View the LTI 1.3 Setup on Canvas docs
Canvas Registration Details look like:
Issuer: https://canvas.instructure.com
Keyset URL: https://sso.canvaslms.com/api/lti/security/jwks
OIDC Auth URL: https://sso.canvaslms.com/api/lti/authorize_redirect
Access Token URL: https://<your_subdomain>.instructure.com/login/oauth2/token
Self-hosted Canvas: use your own Canvas address for all four values, for example https://canvas.school.edu/api/lti/security/jwks. To let instructors create Kyron Conversations from their Canvas course content, see Kyron Conversations on Canvas (LTI 1.3).
💡 Are you using D2L Brightspace? View the LTI 1.3 Setup on Brightspace docs
Brightspace Registration Details will look like:
Access Token URL: https://<your_subdomain>.brightspace.com/core/connect/token
That’s it! You have completed two-way registration between your LMS and Kyron Learning. You can now launch Kyron LTI links from your LMS.
2. Deploying a Kyron Learning Asset
Now that you have completed the LTI Registration between your LMS and Kyron Learning, you can deploy your first Kyron Learning Asset. There are two ways to deploy an asset via your newly-created LTI connection: Deep Linking (recommended) and Single-Resource Linking.
Note: Many Learning Platforms will require an additional step to enable LTI Tool access at the course level. Depending on your LMS, this may involve “Installing an LTI 1.3 App” or “Creating an LTI 1.3 Deployment”. Assuming your permissions are correctly set up, the Kyron Learning tool should now be available for course assignment.
Option 2.1: Deep Linking (recommended)
LTI Deep linking provides a secure and straightforward method for course designers and instructors to assign Kyron Assets to their students. This enables them to view and assign from a list of available Kyron Assets from within the LMS.
Note: The courses listed in the Deep Linking selector are: Published courses from your Organization, along with Public Courses available to all Kyron users. Kyron Conversations created from Canvas course content don't appear in this list. After you select an asset, you can click Assignment Settings to choose whether to Allow Speech To Text and Allow Conversation Voice and, if your organization uses Kyron's grading settings, set the grading scheme and retries. Then click Submit.
Option 2.2: Single-Resource Linking
If your LMS does not support deep linking, you can access resource-based links by exporting them from Kyron Studio (https://www.kyronlearning.com/studio). You will need to log into Kyron Studio and navigate to the specific Kyron Learning Asset that you would like to Link.
From there, click Export, open the LTI tab, and copy the link under Single LTI Launch Link. The asset must be published first, and the launch link only appears if it's turned on for your organization (ask your Kyron contact). It looks like:
https://www.kyronlearning.com/lti/v1/launch?lesson_collection_id=<asset_id>
Use this link as the launch URL of an LTI 1.3 external tool assignment in your LMS. It only works when your LMS launches it through LTI. Opening it directly in a browser or in a plain iframe shows an error.
Appendix
Score - Assignment and Grade Services (AGS)
For score reporting to function, your platform must grant Kyron Learning the "score" scope during LTI flow initiation. Major LMS providers will provide an option to enable this as an “Additional Setting” or “LTI Extension”. If you, refer to the related documentation.
Kyron Learning sends a result when a student starts an assignment and again when they complete it. The completion result contains the student's points out of the lesson's maximum points, based on the lesson's grading scheme (completion, best attempt, or first attempt).
1. Student Starts Assignment
The platform receives a notification from Kyron Learning when a student begins a Kyron course (either through embedded player or a new tab). The result resembles this:
{
"activityProgress": "Started",
"gradingProgress": "NotReady",
"scoreGiven": 0,
"scoreMaximum": 1,
"comment": ""
}
2. Student Completes Assignment
When the student completes the lesson, Kyron sends a second result with their points (scoreGiven) out of the lesson's maximum points (scoreMaximum). If the lesson is ungraded, both values are left empty so the instructor can grade it in the LMS.
The result will look like this:
{
activityProgress: "Completed",
gradingProgress: "FullyGraded",
scoreGiven: 9,
scoreMaximum: 10
}Troubleshooting LTI Connections
Kyron Learning does not appear as a tool during course assignment
It’s possible that your LMS has not enabled this tool for the LMS context you are viewing.
Have you enabled Kyron Learning as an LTI Tool in your course?
Deep Linking window does not show courses
It’s possible that the authentication step has failed between your LMS and Kyron
Are your Connection and Redirect URLs correct?
Does your Kyron Integration page list your LMS information correctly?
I’ve added a Kyron link but I see a blank white screen
It’s possible that the platform does not have access to this asset.
Is the Kyron Asset resource link valid?
Is the Kyron Asset published?
API Errors
Errors during a request to /lti/v1/initiate
1. param is missing or the value is empty: <param_name>
Description: This error occurs when a required parameter is missing or its value is empty in the request sent to the /lti/v1/initiate endpoint.
Potential Causes:
The platform is not sending a required parameter in the request body.
The value of a required parameter is an empty string or null.
Solution:
Ensure that all required parameters (iss, login_hint, target_link_uri, and lti_message_hint) are included in the request body.
Verify that the values for these parameters are not empty strings or null.
2. Could not find issuer: <issuer_uri> or client_id: <client_id>
Description: This error occurs when the client sends an iss (issuer URI) or client_id that does not match the registered platform in Kyron.
Potential Causes:
The client has not registered their platform with Kyron.
The iss (issuer URI) value sent in the request does not match the "Issuer" value entered during platform registration in Kyron.
The client_id value sent in the request does not match the "Client ID" value entered during platform registration in Kyron.
Solution:
Register your platform at https://www.kyronlearning.com/studio/settings/integrations.
Ensure that the iss (issuer URI) and client_id values sent in the request match the corresponding values entered during platform registration in Kyron.
3. Invalid target_link_uri: <target_link_uri>
Description: This error occurs when the target_link_uri sent in the request is invalid.
Potential Causes:
The target_link_uri does not use a secure protocol (HTTPS).
The target_link_uri domain does not match the Kyron domain.
Solution:
Ensure that the target_link_uri uses the HTTPS protocol.
Verify that the target_link_uri domain matches the Kyron domain.
Errors during a request to /lti/v1/launch
1. Missing required params: <param_name>
Description: This error occurs when a required parameter is missing in the request sent to the /lti/v1/launch endpoint.
Potential Causes:
The platform is not sending a required parameter in the request.
Solution:
Ensure that all required parameters (id_token and state) are included in the request.
2. Nonce missing or mismatched between state and id_token. The id_token doesn't carry the nonce Kyron sent in the login request. Make sure the platform returns that nonce unchanged and isn't replaying an old launch.
3. Anonymous launch not supported. Please provide a valid sub. Every launch needs a user ID (the sub claim). Make sure your LMS shares user information with Kyron.
4. Invalid kyron_config_id <id>. The assignment's deep link points to a Kyron configuration that no longer exists. Re-select the Kyron asset in the assignment.
5. Invalid state token.
Description: This error occurs when the state parameter sent in the request is an invalid JWT token.
Potential Causes:
The state parameter is not a valid JWT token.
The JWT token has been tampered with or is invalid.
Solution:
Verify that the state parameter is a valid JWT token -that’s sent to the platform in the response from /initiate endpoint by Kyron.
Ensure that the JWT token has not been modified or tampered with.
6. JWT cannot be decoded. <details>
Description: This error occurs when the id_token parameter sent in the request is invalid.
Potential Causes:
The id_token is not a valid JWT token.
The JWT token has been tampered with or is invalid.
Solution:
Verify that the id_token parameter is a valid JWT token generated by the LTI platform.
Ensure that the JWT token has not been modified or tampered with.
7. Invalid LTI version: <version>
Description: This error occurs when the LTI version specified in the id_token payload is not 1.3.
Potential Causes:
The LTI platform is sending an unsupported LTI version.
Solution:
Ensure that the LTI platform is configured to use LTI version 1.3.
8. Invalid issuer/audience: Issuer or audience does not match platform settings.
Description: This error occurs when the issuer (iss) specified in the id_token payload does not match any registered platform in Kyron.
Potential Causes:
The client has not registered their platform with Kyron.
The iss (issuer URI) value in the id_token does not match the "Issuer" value entered during platform registration in Kyron.
The aud (client ID) value in the id_token does not match the "Client ID" value entered during platform registration in Kyron.
Solution:
Register your platform at https://www.kyronlearning.com/studio/settings/integrations
Ensure that the iss (issuer URI) value in the id_token matches the corresponding value entered during platform registration in Kyron.
9. Invalid resource_id <id>.
Description: This error occurs when the lesson_collection_id parameter sent in the request is invalid, or the corresponding lesson collection does not exist.
Potential Causes:
The lesson_collection_id parameter is missing or invalid.
The specified lesson collection does not exist in the system.
The asset belongs to a different Kyron organization than the LMS registration.
Solution:
Ensure that the lesson_collection_id parameter is included in the request and has a valid value.
Verify that the specified lesson collection exists in the Kyron system.
10. https://purl.imsglobal.org/spec/lti/claim/message_type claim has invalid value. Got: <value>, Expected one of: <expected_values>
Description: This error occurs when the LTI message type in the id_token payload is invalid.
Potential Causes:
The LTI platform is sending an invalid value for the specified claim.
Solution:
Ensure that the LTI platform is sending one of the following as the LTI message type: LtiResourceLinkRequest, LtiDeepLinkingRequest
11. JWT cannot be verified. <details>
Description: This error occurs when there is an issue verifying the id_token JWT during the LTI session initialization process.
Potential Causes:
The id_token is not signed with the correct key.
The id_token has been tampered with or is invalid.
Solution:
Verify that the id_token is signed with the correct key registered for the LTI platform.
Ensure that the id_token has not been modified or tampered with.
12. Something went wrong launching this assignment. Please refresh and try again, and contact your administrator if the problem persists.
Description: Kyron hit an unexpected error during the launch. The full error is logged with a request ID.
Potential Causes:
An internal issue.
Solution:
Reach out to the Kyron support team and include the request ID shown with the error.
Click here to read more details about our Privacy Policy.