This guide walks Canvas administrators through integrating the Praxis LXP using LTI 1.3 Advantage services: registering the tool, making it available, and adding LXP content to courses.
Installing Pria, the Digital Twin, rather than the LXP? It is a separate tool with its own registration URL: see LTI 1.3 for Canvas.
Canvas supports Dynamic Registration for LTI Advantage tools: you paste the LXP’s registration URL and Canvas fetches the tool’s settings itself. You can also register the LXP by hand with a Developer Key.
Canvas walks you through a guided wizard and registers the LXP with the settings the LXP sends.
1
Open the Apps page
Log in to Canvas as an administrator, go to Admin → your account → Apps, select the Manage tab and click Install a New App.
2
Choose Dynamic Registration
In the Install App dialog, under Select LTI Version choose 1.3, set Install Method to Dynamic Registration, and enter the LXP’s registration URL in Dynamic Registration URL:
https://lti.praxislxp.com/register
Click Next.
3
Review permissions and data sharing
Keep the permissions Canvas pre-selects. For data sharing, keep All user data: the LXP needs each learner’s name and email to match a launch to the right learner account.
4
Select placements
Keep Link Selection selected: it is how faculty pick an LXP resource when they add an item to a module.
5
Name, review and install
Give the tool an Administration Nickname (for example Praxis LXP), keep the default icons, review the summary and click Install App.
6
Make the LXP available
The tool installs as Not Available. On its Availability and Exceptions tab, click the pencil icon next to Installed in (your account), change Not Available to Available and click Save. Use Add Exception instead to make it available to some sub-accounts or courses only.
Canvas does not let you add custom fields or placements to a tool installed through Dynamic Registration. The LXP uses your organisation’s custom fields (see Manual Entry) to know which organisation, role and cohort a launch belongs to. Before you install this way, contact the Praxis AI team at humans@praxis-ai.com to confirm how your organisation’s values are set; if they must be entered in Canvas, use Manual Entry.
Toggle all LTI Advantage Services features to enabled.
7
Additional Settings
Configure the tool presentation and institution-specific values:
Setting
Value
Domain
praxislxp.com
Icon URL
https://lti.praxislxp.com/assets/logo.svg
Text
Praxis LXP
Privacy Level
Public
Public means Canvas passes the learner’s name and email to the LXP at launch, which the LXP needs to match the launch to the right learner account.Add the Custom Fields for your organisation:
These fields tell the LXP which organisation, role and cohort a launch belongs to; Praxis AI gives you the values for your organisation (your school or company). alaipassword is a shared secret — treat the whole block like a credential: do not paste it into a shared document or a ticket, and do not share it with anyone.
8
Configure Placements
Add the following placements:Account Navigation
Setting
Value
Target Link URI
https://lti.praxislxp.com
Icon URL
https://lti.praxislxp.com/assets/logo.svg
Text
Praxis LXP LTI
Link Selection
Setting
Value
Target Link URI
https://lti.praxislxp.com
Icon URL
https://lti.praxislxp.com/assets/logo.svg
Text
Praxis LXP LTI
Message Type
LtiDeepLinkingRequest
Make sure LtiDeepLinkingRequest is selected for the Link Selection placement, otherwise the resource selection will not appear when adding an LXP resource to a module.
9
Save and activate
Click Save, then toggle the key’s State to ON in the Developer Keys page and confirm with OK.
10
Copy the Client ID
Copy the Client ID shown for the key — you need it to install the app in the next section.
Any configuration change to the LTI tool requires toggling its state Off and back On so the modification propagates to Canvas subdomains.
Click the Praxis LXP LTI tool in the Admin left toolbar. The system displays member services information to confirm the registration.
The LXP LTI tool will not expose member roles and information through the Member services, nor offer grades directly through this interface. For learner reporting, use the LXP Composer → Analytics section (FERPA compliance).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"praxis-ai","description":"Pria is an AI-powered digital twin that transforms human expertise into scalable, intelligent assistants for organizations across industries. Originally designed for education, Pria has evolved into a comprehensive middleware solution that captures, preserves, and amplifies institutional knowledge through personalized AI assistants.Pria seamlessly integrates into existing workflows - from learning management systems like Canvas and Moodle to enterprise platforms, websites, and business applications - providing 24/7 expert guidance for complex decision-making, knowledge transfer, and operational excellence. Powered by advanced orchestration technology, Pria leverages multiple Large Language Models (Claude, GPT-5, Gemini, Grok) and natural language processing to create human-like digital twins that understand context, maintain conversation continuity, and execute sophisticated agentic workflows through custom assistant personas.","colors":{"primary":"#5011FD","light":"#9B7BFF","dark":"#5011FD"},"logo":{"light":"https://mintcdn.com/praxisai/6nkK9KsHziJK7eUJ/images/logo/light.svg?fit=max\u0026auto=format\u0026n=6nkK9KsHziJK7eUJ\u0026q=85\u0026s=5d438417be87dbcd1a5749d3173410fc","dark":"https://mintcdn.com/praxisai/6nkK9KsHziJK7eUJ/images/logo/dark.svg?fit=max\u0026auto=format\u0026n=6nkK9KsHziJK7eUJ\u0026q=85\u0026s=86b4975deee6dc59be3442353e2c9e72"},"favicon":"https://mintcdn.com/praxisai/V04kWbMpKOdRS_h5/images/favicon.svg?fit=max\u0026auto=format\u0026n=V04kWbMpKOdRS_h5\u0026q=85\u0026s=0e8c7ce7a5d6b58089449c3d8e687b28","navbar":{"links":[{"href":"https://docs.praxis-ai.com/mdx/contact-support","label":"Support"}],"primary":{"type":"button","label":"Request a Demo","href":"https://praxis-ai.com/contact/"}},"footer":{"socials":{"bluesky":"https://bsky.app/profile/praxis-ai.bsky.social","instagram":"https://www.instagram.com/praxis_ai","x":"https://x.com/AiPraxis","github":"https://gitlab.com/praxis-ai","linkedin":"https://linkedin.com/company/praxis-ai"}},"banner":{"content":"Important update for Canvas users: more security for Canvas login — [read what changes](/mdx/user-guide/lms/canvas-login-security)","dismissible":true},"errors":{"404":{"redirect":true,"title":"Page Not Found","description":"Not Found. Redirecting you to the [Welcome page](/mdx/introduction/welcome)..."}},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Innovations Hub","icon":"newspaper","href":"https://praxis-ai.com/innovation-hub/"},{"anchor":"Community Gitlab","icon":"gitlab","href":"https://gitlab.com/praxis-ai/pria-client-sdk"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"praxisai","hasAudioNarration":false,"actualSubdomain":"praxisai","customDomains":["docs.praxis-ai.com"],"gitSource":{"type":"gitlab","owner":"praxis-ai","repo":"pria-documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"projectId":71806583,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0bc00948be0ee9953a81d","collectionId":"88b5c937-d293-4a29-9cf9-b9acd60f0364","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0bc00948be0ee9953a81d"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae0bc00948be0ee9953a81d","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Developer","count":478},{"language":"default","tag":"Runtime API","count":300},{"language":"default","tag":"Administrator API","count":147},{"language":"default","tag":"Admin","count":52},{"language":"default","tag":"Power User","count":33},{"language":"default","tag":"User","count":31},{"language":"default","tag":"Connectors","count":26},{"language":"default","tag":"Presentations","count":26},{"language":"default","tag":"Agents","count":25},{"language":"default","tag":"User Profile","count":24}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"mdx/lxp/admin/lti-canvas","slug":"/mdx/lxp/admin/lti-canvas","pageMetadata":{"title":"Install the LXP in Canvas (LTI 1.3)","sidebarTitle":"LTI 1.3 for Canvas","description":"Add LXP courses to your Canvas account as an LTI Advantage tool, with Dynamic Registration or a Developer Key","icon":"globe","keywords":["LXP","Canvas","LTI","LTI 1.3","LTI Advantage","Dynamic Registration","Developer Key","Client ID","Instructure"],"href":"/mdx/lxp/admin/lti-canvas"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Add LXP courses to your Canvas account as an LTI Advantage tool, with Dynamic Registration or a Developer Key\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,hr:`hr`,input:`input`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,Note,Step,Steps,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`introduction`,children:`Introduction`}),`\n`,_jsxs(_components.p,{children:[`This guide walks Canvas administrators through integrating the Praxis LXP using `,_jsx(_components.strong,{children:`LTI 1.3 Advantage`}),` services: registering the tool, making it available, and adding LXP content to courses.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Installing `,_jsx(_components.strong,{children:`Pria`}),`, the Digital Twin, rather than the LXP? It is a separate tool with its own registration URL: see `,_jsx(_components.a,{href:`/mdx/integrations/canvas/lti-1-3`,children:`LTI 1.3 for Canvas`}),`.`]})}),`\n`,_jsxs(_components.p,{children:[`Canvas supports `,_jsx(_components.strong,{children:`Dynamic Registration`}),` for LTI Advantage tools: you paste the LXP’s registration URL and Canvas fetches the tool’s settings itself. You can also register the LXP by hand with a `,_jsx(_components.strong,{children:`Developer Key`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Method`}),_jsx(_components.th,{children:`Best for`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`#dynamic-registration`,children:_jsx(_components.strong,{children:`Dynamic Registration`})})}),_jsx(_components.td,{children:`The fastest path: a guided wizard with the LXP’s default settings and placements`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`#manual-entry-developer-key`,children:_jsx(_components.strong,{children:`Manual Entry`})})}),_jsx(_components.td,{children:`When your organisation’s custom fields must be entered in Canvas, or you want to choose every setting and placement yourself`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(_components.p,{children:`Before you begin, ensure you have:`}),`\n`,_jsxs(_components.ul,{className:`contains-task-list`,children:[`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Canvas `,_jsx(_components.strong,{children:`administrator access`}),` for your account`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Permission to create `,_jsx(_components.strong,{children:`Developer Keys`})]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Your institution-specific LXP values (provided by Praxis AI)`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,_jsx(_components.a,{href:`/mdx/lxp/admin/lti-overview#network-requirements`,children:`Network requirements`}),` met (whitelisted domains, third-party cookies)`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`dynamic-registration`,children:`Dynamic Registration`}),`\n`,_jsx(_components.p,{children:`Canvas walks you through a guided wizard and registers the LXP with the settings the LXP sends.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the Apps page`,children:_jsxs(_components.p,{children:[`Log in to Canvas as an administrator, go to `,_jsx(_components.strong,{children:`Admin`}),` → `,_jsx(_components.em,{children:`your account`}),` → `,_jsx(_components.strong,{children:`Apps`}),`, select the `,_jsx(_components.strong,{children:`Manage`}),` tab and click `,_jsx(_components.strong,{children:`Install a New App`}),`.`]})}),_jsxs(Step,{title:`Choose Dynamic Registration`,children:[_jsxs(_components.p,{children:[`In the `,_jsx(_components.strong,{children:`Install App`}),` dialog, under `,_jsx(_components.strong,{children:`Select LTI Version`}),` choose `,_jsx(_components.strong,{children:`1.3`}),`, set `,_jsx(_components.strong,{children:`Install Method`}),` to `,_jsx(_components.strong,{children:`Dynamic Registration`}),`, and enter the LXP’s registration URL in `,_jsx(_components.strong,{children:`Dynamic Registration URL`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://lti.praxislxp.com/register`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Next`}),`.`]})]}),_jsx(Step,{title:`Review permissions and data sharing`,children:_jsxs(_components.p,{children:[`Keep the permissions Canvas pre-selects. For data sharing, keep `,_jsx(_components.strong,{children:`All user data`}),`: the LXP needs each learner’s name and email to match a launch to the right learner account.`]})}),_jsx(Step,{title:`Select placements`,children:_jsxs(_components.p,{children:[`Keep `,_jsx(_components.strong,{children:`Link Selection`}),` selected: it is how faculty pick an LXP resource when they add an item to a module.`]})}),_jsx(Step,{title:`Name, review and install`,children:_jsxs(_components.p,{children:[`Give the tool an `,_jsx(_components.strong,{children:`Administration Nickname`}),` (for example `,_jsx(_components.em,{children:`Praxis LXP`}),`), keep the default icons, review the summary and click `,_jsx(_components.strong,{children:`Install App`}),`.`]})}),_jsx(Step,{title:`Make the LXP available`,children:_jsxs(_components.p,{children:[`The tool installs as `,_jsx(_components.strong,{children:`Not Available`}),`. On its `,_jsx(_components.strong,{children:`Availability and Exceptions`}),` tab, click the pencil icon next to `,_jsx(_components.em,{children:`Installed in (your account)`}),`, change `,_jsx(_components.strong,{children:`Not Available`}),` to `,_jsx(_components.strong,{children:`Available`}),` and click `,_jsx(_components.strong,{children:`Save`}),`. Use `,_jsx(_components.strong,{children:`Add Exception`}),` instead to make it available to some sub-accounts or courses only.`]})})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Canvas does not let you add custom fields or placements to a tool installed through Dynamic Registration. The LXP uses your organisation’s custom fields (see `,_jsx(_components.a,{href:`#manual-entry-developer-key`,children:`Manual Entry`}),`) to know which organisation, role and cohort a launch belongs to. Before you install this way, contact the Praxis AI team at `,_jsx(_components.a,{href:`mailto:humans@praxis-ai.com`,children:`humans@praxis-ai.com`}),` to confirm how your organisation’s values are set; if they must be entered in Canvas, use Manual Entry.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`manual-entry-developer-key`,children:`Manual Entry (Developer Key)`}),`\n`,_jsx(_components.p,{children:`Register the LXP by hand with an LTI Developer Key, then install it by its Client ID.`}),`\n`,_jsx(Heading,{level:`3`,id:`create-the-lti-developer-key`,children:`Create the LTI Developer Key`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Access Canvas Admin`,children:_jsxs(_components.p,{children:[`Log in as an administrator and navigate to your account (e.g. `,_jsx(_components.code,{children:`https://\u003cyour-institution>.instructure.com/`}),`).`]})}),_jsx(Step,{title:`Open Developer Keys`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Admin`}),` → `,_jsx(_components.em,{children:`your account`}),` → `,_jsx(_components.strong,{children:`Developer Keys`}),` in the left menu.`]})}),_jsx(Step,{title:`Create an LTI Key`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`+ Developer Key`}),` and select `,_jsx(_components.strong,{children:`LTI Key`}),`.`]})}),_jsx(Step,{title:`Select Manual Entry`,children:_jsxs(_components.p,{children:[`Set the configuration `,_jsx(_components.strong,{children:`Method`}),` to `,_jsx(_components.strong,{children:`Manual Entry`}),`.`]})}),_jsxs(Step,{title:`Enter the tool configuration`,children:[_jsx(_components.p,{children:`Fill in the key configuration:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Key Name`})}),_jsx(_components.td,{children:`LXP-LTI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Title / Description`})}),_jsx(_components.td,{children:`Praxis LXP-LTI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Owner Email`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`mailto:youremail@yourinstitution.edu`,children:`youremail@yourinstitution.edu`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Target Link URI`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://lti.praxislxp.com`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`OpenID Connect Initiation URI`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://lti.praxislxp.com/login`})})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Redirect URIs`}),` (all three)`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`https://lti.praxislxp.com`}),_jsx(`br`,{}),_jsx(_components.code,{children:`https://lti.praxislxp.com/resources`}),_jsx(`br`,{}),_jsx(_components.code,{children:`https://lti.praxislxp.com/launch`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`JWK Method`})}),_jsx(_components.td,{children:`Public JWK URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Public JWK URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://lti.praxislxp.com/keys`})})]})]})]})]}),_jsx(Step,{title:`Enable LTI Advantage Services`,children:_jsxs(_components.p,{children:[`Toggle `,_jsx(_components.strong,{children:`all`}),` LTI Advantage Services features to enabled.`]})}),_jsxs(Step,{title:`Additional Settings`,children:[_jsx(_components.p,{children:`Configure the tool presentation and institution-specific values:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Domain`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`praxislxp.com`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Icon URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://lti.praxislxp.com/assets/logo.svg`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Text`})}),_jsx(_components.td,{children:`Praxis LXP`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Privacy Level`})}),_jsx(_components.td,{children:`Public`})]})]})]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Public`}),` means Canvas passes the learner’s name and email to the LXP at launch, which the LXP needs to match the launch to the right learner account.`]}),_jsxs(_components.p,{children:[`Add the `,_jsx(_components.strong,{children:`Custom Fields`}),` for your organisation:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`alaiemail=lti-school@praxislxp.com`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`alaipassword=passwd`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`alairoleid=1076`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`alaicohortid=1289`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`alaiurl=https://learning.praxislxp.com`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`resourcestype=courses`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`alaiembed=1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`These fields tell the LXP which organisation, role and cohort a launch belongs to; Praxis AI gives you the values for `,_jsx(_components.strong,{children:`your organisation`}),` (your school or company). `,_jsx(_components.code,{children:`alaipassword`}),` is a shared secret — treat the whole block like a credential: do not paste it into a shared document or a ticket, and do not share it with anyone.`]})})]}),_jsxs(Step,{title:`Configure Placements`,children:[_jsx(_components.p,{children:`Add the following placements:`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Account Navigation`})}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Target Link URI`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://lti.praxislxp.com`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Icon URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://lti.praxislxp.com/assets/logo.svg`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Text`})}),_jsx(_components.td,{children:`Praxis LXP LTI`})]})]})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Link Selection`})}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Target Link URI`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://lti.praxislxp.com`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Icon URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://lti.praxislxp.com/assets/logo.svg`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Text`})}),_jsx(_components.td,{children:`Praxis LXP LTI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Message Type`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`LtiDeepLinkingRequest`})})]})]})]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Make sure `,_jsx(_components.strong,{children:`LtiDeepLinkingRequest`}),` is selected for the Link Selection placement, otherwise the resource selection will not appear when adding an LXP resource to a module.`]})})]}),_jsx(Step,{title:`Save and activate`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`, then toggle the key’s `,_jsx(_components.strong,{children:`State`}),` to `,_jsx(_components.strong,{children:`ON`}),` in the Developer Keys page and confirm with `,_jsx(_components.strong,{children:`OK`}),`.`]})}),_jsx(Step,{title:`Copy the Client ID`,children:_jsxs(_components.p,{children:[`Copy the `,_jsx(_components.strong,{children:`Client ID`}),` shown for the key — you need it to install the app in the next section.`]})})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Any configuration change to the LTI tool requires toggling its state `,_jsx(_components.strong,{children:`Off`}),` and back `,_jsx(_components.strong,{children:`On`}),` so the modification propagates to Canvas subdomains.`]})}),`\n`,_jsx(Heading,{level:`4`,id:`verify-the-configuration`,children:`Verify the configuration`}),`\n`,_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`Praxis LXP LTI`}),` tool in the Admin left toolbar. The system displays member services information to confirm the registration.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`The LXP LTI tool will `,_jsx(_components.strong,{children:`not`}),` expose member roles and information through the Member services, nor offer grades directly through this interface. For learner reporting, use the `,_jsx(_components.strong,{children:`LXP Composer → Analytics`}),` section (FERPA compliance).`]})}),`\n`,_jsx(Heading,{level:`3`,id:`install-the-lxp-as-an-application`,children:`Install the LXP as an Application`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open App Configurations`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Admin`}),` → `,_jsx(_components.em,{children:`your account`}),` → `,_jsx(_components.strong,{children:`Settings`}),` → `,_jsx(_components.strong,{children:`Apps`}),` → `,_jsx(_components.strong,{children:`App Configurations`}),`.`]})}),_jsx(Step,{title:`Add the App`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`+ App`}),` and select `,_jsx(_components.strong,{children:`By Client ID`}),` as the configuration type.`]})}),_jsx(Step,{title:`Enter the Client ID`,children:_jsxs(_components.p,{children:[`Paste the Client ID copied from the Developer Key, click `,_jsx(_components.strong,{children:`Submit`}),`, then `,_jsx(_components.strong,{children:`Install`}),`.`]})}),_jsx(Step,{title:`Confirm`,children:_jsxs(_components.p,{children:[`Confirm with `,_jsx(_components.strong,{children:`Yes, Install Tool`}),`. The LXP is now available across your Canvas instance.`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`add-lxp-content-to-canvas-courses`,children:`Add LXP Content to Canvas Courses`}),`\n`,_jsx(_components.p,{children:`There are two ways to bring LXP content into a course:`}),`\n`,_jsx(Heading,{level:`3`,id:`option-a-—-import-an-entire-course`,children:`Option A — Import an Entire Course`}),`\n`,_jsxs(_components.p,{children:[`A complete LXP course can be imported into Canvas. Contact the Praxis AI team at `,_jsx(_components.a,{href:`mailto:humans@praxis-ai.com`,children:`humans@praxis-ai.com`}),` for the course export package for your program.`]}),`\n`,_jsx(Heading,{level:`3`,id:`option-b-—-add-individual-activities`,children:`Option B — Add Individual Activities`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the course`,children:_jsxs(_components.p,{children:[`Select the published course from the `,_jsx(_components.strong,{children:`Courses`}),` menu.`]})}),_jsx(Step,{title:`Add a module item`,children:_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`+`}),` button next to the desired module.`]})}),_jsx(Step,{title:`Select External Tool`,children:_jsxs(_components.p,{children:[`Choose `,_jsx(_components.strong,{children:`External Tool`}),` as the item type, then select `,_jsx(_components.strong,{children:`Praxis LXP LTI`}),` from the list of external tools.`]})}),_jsx(Step,{title:`Pick the LXP resource`,children:_jsx(_components.p,{children:`Select the LTI resource from the LXP resource picker and submit.`})}),_jsx(Step,{title:`Name and add`,children:_jsxs(_components.p,{children:[`Edit the `,_jsx(_components.strong,{children:`Page Name`}),` to match the imported module, then click `,_jsx(_components.strong,{children:`Add Item`}),`.`]})})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`On first-time access, the system registers your Canvas platform with the LXP. If the launch popup fails on the very first attempt, close it and retry.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Issue`}),_jsx(_components.th,{children:`Solution`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Unregistered platform error`})}),_jsx(_components.td,{children:`Contact Praxis support to register your Canvas platform with the LXP.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsxs(_components.strong,{children:[`Invalid `,_jsx(_components.code,{children:`redirect_uri`}),` error`]})}),_jsx(_components.td,{children:`Verify the three Redirect URIs match the values in the Developer Key configuration exactly.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Resource selection doesn’t appear`})}),_jsxs(_components.td,{children:[`Confirm the Link Selection placement uses the `,_jsx(_components.code,{children:`LtiDeepLinkingRequest`}),` message type.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Changes don’t take effect`})}),_jsx(_components.td,{children:`Toggle the Developer Key state Off and back On to propagate the configuration.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`LXP doesn’t appear after a Dynamic Registration`})}),_jsxs(_components.td,{children:[`The tool installs as `,_jsx(_components.strong,{children:`Not Available`}),`: set it to `,_jsx(_components.strong,{children:`Available`}),` on its `,_jsx(_components.strong,{children:`Availability and Exceptions`}),` tab.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Custom fields can’t be added`})}),_jsxs(_components.td,{children:[`Canvas does not let you edit custom fields on a tool installed through Dynamic Registration. Remove it and register the LXP with `,_jsx(_components.a,{href:`#manual-entry-developer-key`,children:`Manual Entry`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`”Connection not private” launch errors`})}),_jsxs(_components.td,{children:[`Clear cached HSTS settings — see the `,_jsx(_components.a,{href:`/mdx/lxp/admin/lti-overview#troubleshooting-connection-not-private-errors`,children:`overview troubleshooting steps`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Embedded labs don’t load`})}),_jsxs(_components.td,{children:[`Allow third-party cookies for `,_jsx(_components.code,{children:`praxislxp.com`}),` and whitelist the `,_jsx(_components.a,{href:`/mdx/lxp/admin/lti-overview#network-requirements`,children:`required domains`}),`.`]})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`For additional assistance, contact `,_jsx(_components.a,{href:`https://praxisai.freshdesk.com/support/home`,children:`Praxis Support`}),`. Canvas’s own reference: `,_jsx(_components.a,{href:`https://community.canvaslms.com/t5/Admin-Guide/How-do-I-configure-an-LTI-key-for-an-account/ta-p/140`,children:`How do I configure an LTI key for an account?`})]})}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/mdx/lxp/admin/lti-overview`,children:`LTI Integration Overview`}),` — endpoints, network requirements, direct access`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/mdx/lxp/admin/lti-d2l`,children:`LTI 1.3 for D2L Brightspace`}),` — Brightspace installation`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/mdx/lxp/admin/lti-moodle`,children:`LTI 1.3 for Moodle`}),` — Moodle installation`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/mdx/integrations/canvas/lti-1-3`,children:`LTI 1.3 for Canvas (Pria)`}),` — install the Pria Digital Twin (separate tool)`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Install the LXP in Canvas (LTI 1.3)","sidebarTitle":"LTI 1.3 for Canvas","description":"Add LXP courses to your Canvas account as an LTI Advantage tool, with Dynamic Registration or a Developer Key","icon":"globe","keywords":["LXP","Canvas","LTI","LTI 1.3","LTI Advantage","Dynamic Registration","Developer Key","Client ID","Instructure"],"href":"/mdx/lxp/admin/lti-canvas"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Introduction","slug":"introduction","depth":2,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Dynamic Registration","slug":"dynamic-registration","depth":2,"children":[]},{"title":"Manual Entry (Developer Key)","slug":"manual-entry-developer-key","depth":2,"children":[{"title":"Create the LTI Developer Key","slug":"create-the-lti-developer-key","depth":3,"children":[]},{"title":"Verify the configuration","slug":"verify-the-configuration","depth":4,"children":[]},{"title":"Install the LXP as an Application","slug":"install-the-lxp-as-an-application","depth":3,"children":[]}]},{"title":"Add LXP Content to Canvas Courses","slug":"add-lxp-content-to-canvas-courses","depth":2,"children":[{"title":"Option A — Import an Entire Course","slug":"option-a-—-import-an-entire-course","depth":3,"children":[]},{"title":"Option B — Add Individual Activities","slug":"option-b-—-add-individual-activities","depth":3,"children":[]}]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"praxisai","siteName":"praxis-ai","title":"Install the LXP in Canvas (LTI 1.3) - praxis-ai","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-15T04:21:38.653Z","originalFileLocation":"mdx/lxp/admin/lti-canvas.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Add LXP courses to your Canvas account as an LTI Advantage tool, with Dynamic Registration or a Developer Key\">\u003cmeta data-mint-head name=\"application-name\" content=\"praxis-ai\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Install the LXP in Canvas (LTI 1.3) - praxis-ai\">\u003cmeta data-mint-head property=\"og:description\" content=\"Add LXP courses to your Canvas account as an LTI Advantage tool, with Dynamic Registration or a Developer Key\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"praxis-ai\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://praxisai.mintlify.app/_mintlify/api/og/v2?division=Admin+Guide\u0026amp;title=Install+the+LXP+in+Canvas+%28LTI+1.3%29\u0026amp;description=Add+LXP+courses+to+your+Canvas+account+as+an+LTI+Advantage+tool%2C+with+Dynamic+Registration+or+a+Developer+Key\u0026amp;theme=3e471d4a71780917dfd4dd5f\u0026amp;signature=fd31564cad6291e18fd6a603d47d800cc9f82bc1e0bdc7c1f9bf593571dfec45\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Install the LXP in Canvas (LTI 1.3) - praxis-ai\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Add LXP courses to your Canvas account as an LTI Advantage tool, with Dynamic Registration or a Developer Key\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://praxisai.mintlify.app/_mintlify/api/og/v2?division=Admin+Guide\u0026amp;title=Install+the+LXP+in+Canvas+%28LTI+1.3%29\u0026amp;description=Add+LXP+courses+to+your+Canvas+account+as+an+LTI+Advantage+tool%2C+with+Dynamic+Registration+or+a+Developer+Key\u0026amp;theme=3e471d4a71780917dfd4dd5f\u0026amp;signature=fd31564cad6291e18fd6a603d47d800cc9f82bc1e0bdc7c1f9bf593571dfec45\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/praxisai/XTh1KbQ9ZEBjlBJJ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"praxis-ai\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5011FD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/mdx/lxp/admin/lti-canvas.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.praxis-ai.com/#organization\",\"name\":\"praxis-ai\",\"url\":\"https://docs.praxis-ai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/praxisai/6nkK9KsHziJK7eUJ/images/logo/light.svg?fit=max\u0026auto=format\u0026n=6nkK9KsHziJK7eUJ\u0026q=85\u0026s=5d438417be87dbcd1a5749d3173410fc\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.praxis-ai.com#website\",\"name\":\"praxis-ai\",\"url\":\"https://docs.praxis-ai.com\",\"publisher\":{\"@id\":\"https://docs.praxis-ai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas#webpage\",\"url\":\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas\",\"name\":\"Install the LXP in Canvas (LTI 1.3)\",\"description\":\"Add LXP courses to your Canvas account as an LTI Advantage tool, with Dynamic Registration or a Developer Key\",\"dateModified\":\"2026-10-15T04:21:38.653Z\",\"isPartOf\":{\"@id\":\"https://docs.praxis-ai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Admin Guide\",\"item\":\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Install the LXP in Canvas (LTI 1.3)\",\"item\":\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas#article\",\"headline\":\"Install the LXP in Canvas (LTI 1.3)\",\"name\":\"Install the LXP in Canvas (LTI 1.3)\",\"description\":\"Add LXP courses to your Canvas account as an LTI Advantage tool, with Dynamic Registration or a Developer Key\",\"url\":\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas\",\"mainEntityOfPage\":{\"@id\":\"https://docs.praxis-ai.com/mdx/lxp/admin/lti-canvas#webpage\"},\"dateModified\":\"2026-10-15T04:21:38.653Z\",\"keywords\":\"LXP, Canvas, LTI, LTI 1.3, LTI Advantage, Dynamic Registration, Developer Key, Client ID, Instructure\",\"publisher\":{\"@id\":\"https://docs.praxis-ai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.praxis-ai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"praxis-ai\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"praxis-ai","nav":{"global":{"anchors":[{"anchor":"Innovations Hub","icon":"newspaper","href":"https://praxis-ai.com/innovation-hub/"},{"anchor":"Community Gitlab","icon":"gitlab","href":"https://gitlab.com/praxis-ai/pria-client-sdk"}]},"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/mdx/introduction/welcome"}]},{"tab":"New User","pages":[{"title":"New User","href":"/mdx/user-guide/introduction"}]},{"tab":"Power User","pages":[{"title":"Power User","href":"/mdx/user-guide/capabilities/content-creation"}]},{"tab":"Admin","pages":[{"title":"Admin","href":"/mdx/admin-guide/introduction"}]},{"tab":"Developer","pages":[{"title":"Developer","href":"/mdx/integrations/overview"}]},{"tab":"LXP","groups":[{"group":"Navigating the LXP","pages":[{"title":"Navigating the LXP","icon":"compass","href":"/mdx/lxp/introduction"}]},{"group":"Admin Guide","pages":[{"title":"LTI Integration Overview","description":"Install the Praxis LXP in your LMS as an LTI 1.3 Advantage tool","icon":"plug","href":"/mdx/lxp/admin/lti-overview"},{"title":"Install the LXP in Canvas (LTI 1.3)","sidebarTitle":"LTI 1.3 for Canvas","icon":"globe","href":"/mdx/lxp/admin/lti-canvas"},{"title":"LTI 1.3 for D2L Brightspace","description":"Install the LXP on BrightSpace using LTI Advantage Dynamic Registration","icon":"globe","href":"/mdx/lxp/admin/lti-d2l"},{"title":"LTI 1.3 for Moodle","icon":"globe","href":"/mdx/lxp/admin/lti-moodle"},{"title":"Quiz Question Choice Types","icon":"list-check","href":"/mdx/lxp/admin/quiz-choice-types"}]},{"group":"What's New?","pages":[{"title":"LXP — What's new?","href":"/mdx/lxp/changelog"}]}]},{"tab":"What's New?","pages":[{"title":"What's New?","href":"/mdx/changelog"}]}]},"title":"Install the LXP in Canvas (LTI 1.3) - praxis-ai","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["10e4515597"],"chunks":["BannerMarkdown-BVNUlwBc.js","dist-aeztFa9U.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-rL8ZCCw4.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}