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

# Connect Puddin to Canvas Using LTI 1.3 Developer Keys

> Register Puddin as an LTI 1.3 Developer Key in Canvas, then deploy it to your account and courses for seamless SSO and grade passback.

Integrating Puddin with Canvas allows students to launch Puddin writing sessions directly from Canvas assignments, authenticating automatically through their existing Canvas credentials. Canvas uses Developer Keys to manage LTI 1.3 tool registrations at the account level, giving administrators central control over which tools are available and to which courses they are deployed.

## Prerequisites

Before you begin, confirm that you have the following:

* Canvas administrator access at the account level (not just course-level admin)
* Access to the Puddin administrator panel (Settings → Integrations)
* Puddin's LTI 1.3 configuration values ready to copy (see [LTI Setup overview](/core/integrations/lti-setup))

## Setup steps

<Steps>
  <Step title="Open the Puddin Integrations panel">
    Sign in to Puddin as an administrator. Navigate to **Settings → Integrations** and locate the **Canvas / LTI 1.3** section. Keep this tab open throughout the setup process — you will be copying values from it into Canvas.
  </Step>

  <Step title="Navigate to Developer Keys in Canvas">
    Sign in to Canvas as an account administrator. From the left-hand navigation, select your account name, then go to **Admin → Developer Keys**.

    You will see a list of existing developer keys. Puddin requires an LTI key, not an API key.
  </Step>

  <Step title="Create a new LTI key">
    Click the **+ Developer Key** button and select **+ LTI Key** from the dropdown. The LTI key configuration screen opens.

    Set the **Key Name** to something recognisable, such as `Puddin`.

    In the **Method** dropdown, choose how you want to supply the configuration:

    <Tabs>
      <Tab title="Enter values manually">
        Select **Manual Entry** as the configuration method, then fill in the following fields using the values from the Puddin Integrations panel:

        | Canvas field                  | Puddin value to paste      |
        | ----------------------------- | -------------------------- |
        | Target Link URI               | Tool URL                   |
        | OpenID Connect Initiation URL | Authentication Request URL |
        | JWK Method → Public JWK URL   | Public Keyset URL          |

        Under **LTI Advantage Services**, enable:

        * **Can create and view assignment data in the gradebook**
        * **Can view submission data for assignments**
        * **Can create and update submission results for assignments**
        * **Can retrieve user data associated with the context**

        Under **Placements**, add **Assignment Selection** and **Link Selection** so Puddin appears when teachers add it to an assignment.
      </Tab>

      <Tab title="Paste configuration JSON">
        Select **Paste JSON** as the configuration method. In the Puddin Integrations panel, click **Copy Canvas JSON** to copy a pre-filled configuration object, then paste it into the JSON field in Canvas.

        Review the pasted values to confirm they match your Puddin instance URL before saving.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Save the key and copy the Client ID">
    Click **Save** (or **Save Key**). Canvas generates a **Client ID** — a long numeric string displayed in the Developer Keys list.

    Copy this Client ID and paste it into the **Canvas Client ID** field in the Puddin Integrations panel, then click **Save** in Puddin to complete the two-way registration.

    <Note>
      The Client ID is also sometimes called the **LTI Key** number. Make sure you copy the numeric value from the Client ID column, not the developer key state toggle.
    </Note>
  </Step>

  <Step title="Enable the Developer Key">
    In the Developer Keys list, find the Puddin key you just created. Its state will be set to **OFF** by default. Toggle it to **ON** to activate it.
  </Step>

  <Step title="Add Puddin to your Canvas account">
    Navigate to **Admin → Settings → Apps** (the External Apps tab). Click **+ App**.

    In the **Configuration Type** dropdown, select **By Client ID**. Enter the Client ID from the previous step and click **Submit**, then confirm the installation when Canvas prompts you.

    Puddin is now registered at the account level and available for deployment to courses.
  </Step>

  <Step title="Deploy Puddin to courses">
    Puddin is now available account-wide. Teachers can add it to individual assignments by selecting it from the external tool picker when creating an assignment.

    If you want to restrict Puddin to specific sub-accounts or courses only, navigate to the relevant sub-account's **Settings → Apps** and follow the same **By Client ID** installation process there rather than at the root account level.
  </Step>

  <Step title="Test the connection">
    Open a test course, create an assignment, and add Puddin as an external tool. Submit the assignment as a student (use Canvas's **Student View** feature) and verify that:

    * The Puddin session launches without a separate login prompt
    * The correct course and assignment context appears in Puddin
    * The submission is visible in the Puddin teacher dashboard
  </Step>
</Steps>

## Grade passback

Canvas supports LTI Advantage Assignment and Grade Services (AGS). When a student completes a Puddin session and their work is reviewed, Puddin can pass a score directly back to the Canvas gradebook. Ensure the AGS services are enabled on the Developer Key (Step 3) and that the assignment in Canvas is set up as a graded assignment for the passback to function.

<Warning>
  If grade passback is not working, confirm that the LTI Advantage Services checkboxes were enabled when creating the Developer Key. If you missed them, edit the key, enable the services, and save again — no new Client ID is generated.
</Warning>

For additional troubleshooting steps, see the [Troubleshooting guide](/core/troubleshooting).
