> ## Documentation Index
> Fetch the complete documentation index at: https://docs.praxis-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# LTI v1.3

> Register Praxis AI in Canvas as an LTI Advantage tool and place it in your courses.

## Introduction

Canvas supports **Dynamic Registration** for LTI Advantage tools — a streamlined, one-step way to register an external tool. Praxis AI uses it to offer a simplified onboarding experience for the Pria LTI tool.

The result is two roles, two simple tasks:

* **Administrators** register Pria as an LTI tool in a single guided flow, and
* **Faculty** place Pria in their courses and connect each placement to a Digital Twin.

<Note>An administrator only needs to register Pria **once** per Canvas instance. After that, faculty can add Pria to any course.</Note>

This page covers both registration methods, then how faculty place and configure Pria in a course.

| Method                                 | Best for                                                                                      | Effort    |
| -------------------------------------- | --------------------------------------------------------------------------------------------- | --------- |
| **Dynamic Registration** (recommended) | Most institutions — fastest path, default placements                                          | 10–15 min |
| **Manual Registration**                | Pinning a specific Digital Twin or fine-grained control of placements (e.g. `top_navigation`) | 20–30 min |

***

## Prerequisites

Before you begin, ensure you have:

* [ ] **Canvas admin access** for the account where Pria will be installed
* [ ] **Permission to register external LTI tools** at your institution
* [ ] **A valid account** at [pria.praxislxp.com](https://pria.praxislxp.com)
* [ ] **Third-party cookies enabled** in your browser (required for LTI launches)

***

## Dynamic Registration

This is the recommended method for most institutions. Canvas walks you through a guided wizard and registers Pria with sensible defaults.

<Steps>
  <Step title="Open the Apps page">
    Log in to your Canvas instance, then go to **Admin → (your account) → Apps** and select the **Manage** tab. Click **Install a New App** in the top-right corner.

    <Frame caption="Admin → Apps → Manage → Install a New App">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-install.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=4e844047bc4b34065b3880066a85d9f5" alt="Canvas Apps Manage page with the Install a New App button" width="1234" height="1105" data-path="images/integrations/canvas/lti/canvas-admin-apps-install.png" />
    </Frame>
  </Step>

  <Step title="Choose Dynamic Registration">
    In the **Install App** dialog:

    1. Under **Select LTI Version**, choose **1.3**.
    2. Set **Install Method** to **Dynamic Registration**.
    3. In **Dynamic Registration URL**, enter:

    ```
    https://pria.praxislxp.com/lti/register
    ```

    <Frame caption="Select LTI 1.3 and Dynamic Registration, then enter the registration URL">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-dynareg.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=7a807d539000e7e67605d6c96176902d" alt="Install App dialog with LTI 1.3, Dynamic Registration, and the Pria registration URL" width="1069" height="796" data-path="images/integrations/canvas/lti/canvas-admin-apps-dynareg.png" />
    </Frame>

    Click **Next** to begin the LTI Advantage registration.
  </Step>

  <Step title="Review permissions">
    Pria requests the gradebook and roster permissions it needs to operate. The recommended defaults are pre-selected.

    <Frame caption="Pria's requested permissions, with recommended defaults pre-selected">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-permissions.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=788283e328dfc98a3f0ea1bf27356a77" alt="Permissions step listing the actions Pria can perform" width="1072" height="808" data-path="images/integrations/canvas/lti/canvas-admin-apps-permissions.png" />
    </Frame>

    Leave the defaults and click **Next**.

    <Tip>Altering these defaults can affect Pria's behavior. Only change them if you have a specific reason.</Tip>
  </Step>

  <Step title="Confirm data sharing">
    Choose what user data is shared with Pria. The default, **All user data**, includes Canvas ID, name, SIS ID, avatar, and email address.

    <Frame caption="Data Sharing step — All user data is the default">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-datasharing.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=20a4acb6d9db82329c8026c3eb1ad1c5" alt="Data Sharing step with the user-data dropdown" width="1308" height="804" data-path="images/integrations/canvas/lti/canvas-admin-apps-datasharing.png" />
    </Frame>

    Leave the default and click **Next**.
  </Step>

  <Step title="Select placements">
    Placements control where Pria can be accessed from in Canvas. We recommend enabling:

    | Placement              | Recommendation                                     |
    | ---------------------- | -------------------------------------------------- |
    | **Course Navigation**  | ✅ Recommended — Pria appears in the course sidebar |
    | **Link Selection**     | ✅ Recommended — lets faculty embed Pria in modules |
    | **Account Navigation** | Optional                                           |
    | **Top Navigation**     | Optional — opens Pria in a drawer                  |
    | **Page Menu**          | Optional                                           |

    <Frame caption="Choose where Pria may be accessed from">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-placements.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=29207a9a9e763bd140c25a78691bdeff" alt="Placements step with selectable checkboxes" width="1069" height="807" data-path="images/integrations/canvas/lti/canvas-admin-apps-placements.png" />
    </Frame>

    Adjust the selection to suit your institution and click **Next**.
  </Step>

  <Step title="Set the nickname">
    Give the tool an **Administration Nickname** (the label shown next to the app's name in Canvas) and an optional description. You can also rename each placement.

    <Frame caption="Nickname and description for the Pria tool">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-nicknames.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=4c281e0e3ed3455ef56fc8d68232c81f" alt="Nickname step with the Administration Nickname and Description fields" width="1229" height="805" data-path="images/integrations/canvas/lti/canvas-admin-apps-nicknames.png" />
    </Frame>

    <Tip>This is the administrative label. When faculty place Pria in a course, they can give that placement its own name, independent of the nickname you set here.</Tip>

    Click **Next**.
  </Step>

  <Step title="Set icons (optional)">
    Optionally set a **Tool Icon URL** and per-placement icons. The defaults point to Pria's logo.

    <Frame caption="Tool icon and per-placement icon URLs">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-icons.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=06d1bdb4f7f7e99395fa8326b79f2b23" alt="Icons step with the Tool Icon URL field" width="1188" height="811" data-path="images/integrations/canvas/lti/canvas-admin-apps-icons.png" />
    </Frame>

    Click **Next**.
  </Step>

  <Step title="Review and install">
    Review your permissions, data sharing, and placements. Use the pencil icons to jump back and edit any section.

    <Frame caption="Review step summarizing the registration">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-review.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=137839ee8b71aae1a1e21532b0b83dfc" alt="Review step with editable sections" width="1066" height="805" data-path="images/integrations/canvas/lti/canvas-admin-apps-review.png" />
    </Frame>

    Click **Install App** to finish registration.
  </Step>

  <Step title="Make Pria available">
    Pria installs as **Not Available** — it won't appear to faculty until you enable it. On the app's **Availability and Exceptions** tab, click the **pencil (edit)** icon next to *Installed in (your account)*.

    <Frame caption="The installed app, still marked Not Available">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-enable.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=a3d3657a4683c66a279d3f3cfac61e96" alt="App detail card showing the Not Available status and Add Exception button" width="1081" height="967" data-path="images/integrations/canvas/lti/canvas-admin-apps-enable.png" />
    </Frame>

    In the **Edit Exception** dialog, change the status from **Not Available** to **Available**, then click **Save**. This makes Pria available across your child sub-accounts and courses.

    <Frame caption="Change Not Available → Available, then Save">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-exceptions.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=fc98dd933507d54c9778401a8c6c4b0c" alt="Edit Exception dialog changing availability to Available" width="1183" height="832" data-path="images/integrations/canvas/lti/canvas-admin-apps-exceptions.png" />
    </Frame>

    <Tip>Use **Add Exception** if you'd rather enable Pria for specific sub-accounts or courses instead of the whole account.</Tip>
  </Step>

  <Step title="Confirm installation">
    The app now shows **Available**, along with its Deployment ID and active placements. Pria is registered and ready for faculty to use.

    <Frame caption="Pria installed and available">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-admin-apps-installed.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=28ce9025b0104370d842ac31ad91544d" alt="App card showing Available status, Deployment ID, and placements" width="745" height="304" data-path="images/integrations/canvas/lti/canvas-admin-apps-installed.png" />
    </Frame>
  </Step>
</Steps>

***

## Manual Registration

<Warning>Canvas does not allow adding placements or editing custom properties after a tool is installed through **Dynamic Registration**. Use Manual Registration when you need that control up front.</Warning>

Choose manual registration when you want to:

* **Pin a specific Digital Twin** by setting a `priainstitutionid`, or
* **Control placements precisely** — for example, to use the `top_navigation` placement, which opens Pria in a drawer similar to a wiki page.

### Create the developer key

<Steps>
  <Step title="Open Developer Keys">
    Log in to Canvas and go to **Admin → (your account) → Developer Keys**.
  </Step>

  <Step title="Add an LTI key">
    Click **+ Developer Key** and select **+ LTI Key**.
  </Step>

  <Step title="Configure the key">
    Fill in the key settings:

    * **Key Name:** `Pria LTI`

    * **Owner Email:** your admin email

    * **Redirect URIs:**

      ```
      https://pria.praxislxp.com/lti
      https://pria.praxislxp.com/lti/resources
      https://pria.praxislxp.com/lti/launch
      ```

    * In the **Method** dropdown, select **Paste JSON**, then paste the configuration below into the **LTI 1.3 Configuration** field:

    ```json theme={null}
    {
      "title": "Pria LTI",
      "scopes": [
        "https://purl.imsglobal.org/spec/lti-ags/scope/lineitem",
        "https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly",
        "https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly",
        "https://purl.imsglobal.org/spec/lti-ags/scope/score",
        "https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly",
        "https://canvas.instructure.com/lti/public_jwk/scope/update",
        "https://canvas.instructure.com/lti/account_lookup/scope/show",
        "https://canvas.instructure.com/lti-ags/progress/scope/show"
      ],
      "extensions": [
        {
          "domain": "praxislxp.com",
          "platform": "canvas.instructure.com",
          "settings": {
            "text": "Pria LTI",
            "icon_url": "https://pria.praxislxp.com/logo192.png",
            "platform": "canvas.instructure.com",
            "placements": [
              {
                "text": "Pria LTI",
                "icon_url": "https://pria.praxislxp.com/logo192.png",
                "placement": "account_navigation",
                "message_type": "LtiResourceLinkRequest",
                "target_link_uri": "https://pria.praxislxp.com"
              },
              {
                "text": "Manual Pria LTI",
                "icon_url": "https://pria.praxislxp.com/logo192.png",
                "placement": "link_selection",
                "message_type": "LtiDeepLinkingRequest",
                "target_link_uri": "https://pria.praxislxp.com/lti"
              },
              {
                "text": "Manual Pria LTI",
                "icon_url": "https://pria.praxislxp.com/logo192.png",
                "placement": "wiki_page_menu",
                "message_type": "LtiResourceLinkRequest",
                "target_link_uri": "https://pria.praxislxp.com/lti"
              },
              {
                "text": "Manual Pria LTI",
                "icon_url": "https://pria.praxislxp.com/logo192.png",
                "placement": "top_navigation",
                "message_type": "LtiResourceLinkRequest",
                "target_link_uri": "https://pria.praxislxp.com/lti/launch"
              }
            ]
          },
          "privacy_level": "public"
        }
      ],
      "description": "Praxis-AI, Pria LTI",
      "custom_fields": {
        "priainstitutionid": "f831501f-b645-481a-9cbb-331509aa....",
        "userid": "$Canvas.user.id",
        "courseid": "$Canvas.course.id",
        "coursename": "$Canvas.course.name",
        "partnerid": "$Canvas.account.id",
        "partnername": "$Canvas.account.name"
      },
      "public_jwk_url": "https://pria.praxislxp.com/lti/keys",
      "target_link_uri": "https://pria.praxislxp.com/lti",
      "oidc_initiation_url": "https://pria.praxislxp.com/lti/login"
    }
    ```

    <Note>Set `priainstitutionid` to a valid Digital Twin instance ID to pin a specific twin, or leave it as the placeholder to let faculty connect a Digital Twin during onboarding.</Note>
  </Step>

  <Step title="Save and copy the Client ID">
    Toggle back to **Manual Entry** to confirm the placements — you'll now see `top_navigation` listed. Save the key, then **copy its Client ID** (for example, `243790000000000223`). You'll need it in the next section.
  </Step>
</Steps>

<Tip>A complete walkthrough of the manual setup is also available in this [Google Doc](https://docs.google.com/document/d/1-HSJTOIjg9C5LFIVeO0bw_Ntnc0rOyKe9I-5djf8L3M/edit?usp=sharing).</Tip>

### Install the app from the Client ID

<Steps>
  <Step title="Open the Apps page">
    Go to **Admin → (your account) → Settings → Apps**, then click **+ App**.
  </Step>

  <Step title="Add by Client ID">
    In the **Add App** dialog, set **Configuration Type** to **By Client ID**, paste the **Client ID** you copied above, and click **Submit**. Canvas finds the matching LTI app — click **Install** to confirm.
  </Step>
</Steps>

<Note>If you reinstall Pria, Canvas shows a confirmation dialog. Click **Install** to add the new instance — it supports the Digital Twin onboarding workflow and is independent of any previous install.</Note>

Your Pria LTI application is now installed. It can take a few minutes for Canvas to make it available as a placement.

***

## Place Pria in your course

This section is for **faculty**, and assumes an administrator has already registered Pria using one of the methods above.

From your **Dashboard**, open the course where you want to add Pria.

<Steps>
  <Step title="Add an item to a module">
    Inside a module, click the **+** button to add an item. In the **Add Item to Module** dialog, set the dropdown to **External Tool**, then select **Pria** from the list of tools.

    <Frame caption="Add an External Tool item and choose Pria">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-course-module-addtool.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=a4eac74b997560b11c4b84194b0f3a2f" alt="Add Item to Module dialog with External Tool selected" width="1068" height="765" data-path="images/integrations/canvas/lti/canvas-course-module-addtool.png" />
    </Frame>
  </Step>

  <Step title="Embed Pria">
    Pria opens its **Link Resource from External Tool** card. Click **Embed in your course** to create the link.

    <Frame caption="The Pria embed card">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-course-module-linkresource.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=958ba71d53a0a7337f1d0b8169349ff9" alt="Link Resource from External Tool card with Embed in your course button" width="1116" height="559" data-path="images/integrations/canvas/lti/canvas-course-module-linkresource.png" />
    </Frame>
  </Step>

  <Step title="Name and add the item">
    Back in the **Add Item to Module** dialog, give the placement a page name (for example, *Professor Cantu*), then click **Add Item**.

    <Frame caption="Name the placement and add it to the module">
      <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-course-module-add.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=d836f4259685c7712a1d7e041d21b644" alt="Add Item dialog with the page name and Add Item button" width="1179" height="754" data-path="images/integrations/canvas/lti/canvas-course-module-add.png" />
    </Frame>
  </Step>
</Steps>

Pria now appears in your module. Click it to launch. Pria opens inline unless your placement is configured to launch in a separate window.

***

## Connect a Digital Twin

The first time Pria is launched in a placement by an admin or instructor, it shows a connection screen. If your account is already associated with one or more Digital Twins, you can connect an existing twin or create a new one.

<Frame caption="Connect an existing Digital Twin or create a new one">
  <img src="https://mintcdn.com/praxisai/MYvJPjU8SmwcqWTE/images/integrations/canvas/lti/canvas-course-twin-selector.png?fit=max&auto=format&n=MYvJPjU8SmwcqWTE&q=85&s=c21e4d0db8114d2f2a14e077ea266982" alt="Let's get you connected screen listing existing instances and a + Digital Twin button" width="1400" height="1298" data-path="images/integrations/canvas/lti/canvas-course-twin-selector.png" />
</Frame>

### Use an existing twin

Select any instance from the list to connect it to this placement.

<Warning>The twin connected to a placement **cannot be changed** afterward. To switch twins, remove the Pria activity and add a new one.</Warning>

### Create a new twin

Click **+ Digital Twin** to create a new, personalized instance of Pria. In the **New Digital Twin** dialog, enter:

* A **name** for your twin (for example, *Bob*)
* A **picture URL** that is publicly accessible on the internet (no CORS restrictions)

<Frame caption="Create a new Digital Twin">
  <img src="https://mintcdn.com/praxisai/uR6JXzaIBuSxXgYI/images/integrations/canvas/lti/canvas-course-twin-create.png?fit=max&auto=format&n=uR6JXzaIBuSxXgYI&q=85&s=656716e7f87a7cb763396d499bcb5244" alt="Your Humsn First - Digital Twin" width="2163" height="1150" data-path="images/integrations/canvas/lti/canvas-course-twin-create.png" />
</Frame>

Click **Let's Go** to finish. You land directly in your new Digital Twin instance.

<Tip>Anytime you or your students click Pria in this placement, they'll open this instance directly. When you place Pria in another course or create a different placement, the onboarding wizard again offers to reuse an existing twin or create a new one.</Tip>

***

## Personalize your twin

Open the **Personalization and AI Models** tab to customize your Digital Twin's behavior, system prompt, and available models. Click **Update** to save your changes.

For the full reference, see the [Personalization](/mdx/admin-guide/personalization) documentation.

***

## Student access

Students are automatically added to your Digital Twin once you've placed Pria in the course, launched it, and completed the connection wizard for the first time. If a student opens Pria before a twin has been connected, they'll see a message asking them to try again later.

<Warning>
  LTI launches require **third-party cookies**. In Incognito/Private mode, or when cookies are blocked, the launch may fail with a cookie-related error. Allow third-party cookies (or add an exception for `pria.praxislxp.com`) and retry.
</Warning>

***

## Troubleshooting

| Issue                                         | Solution                                                                                                                                                                           |
| --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **"Invalid redirect" during launch**          | Verify the Redirect URIs are registered exactly as shown. Check for trailing slashes or typos.                                                                                     |
| **Pria doesn't appear in a course**           | Confirm the app's availability is set to **Available** (Dynamic Registration) or the Developer Key is **ON** (Manual). Verify the tool was installed at the correct account level. |
| **"Unregistered" or "Unknown Client" errors** | Confirm the Client ID in Canvas matches the registered tool, and that the registration URL is correct.                                                                             |
| **Third-party cookie errors**                 | LTI requires cookies. Allow third-party cookies (or add an exception for `pria.praxislxp.com`) and avoid Incognito/Private mode.                                                   |
| **Students can't access but faculty can**     | Ensure a Digital Twin has been connected to the placement, the item is published, and availability isn't restricted by an exception.                                               |
| **Deep linking not creating content**         | Verify the **Link Selection** placement is enabled and the course allows external-tool content in modules.                                                                         |
| **Custom parameters not passing**             | For manual registration, ensure custom fields are set in the Developer Key JSON, not only on the External Tool config.                                                             |

<Tip>Test launches in a normal browser window first. If it works there but fails in Incognito, the issue is cookie-related.</Tip>

***

## What's next?

<CardGroup cols={2}>
  <Card title="Enable Canvas Tools" icon="wrench" href="/mdx/integrations/canvas/pria-tools">
    Configure your Digital Twin to call Canvas APIs for course-aware responses.
  </Card>

  <Card title="Configure Your Digital Twin" icon="sliders" href="/mdx/admin-guide/configuration">
    Customize AI behavior, system prompts, and available tools.
  </Card>
</CardGroup>
