---
title: Install Hawkeye in Canvas (administrators)
description: Create the two Canvas Developer Keys that Hawkeye needs, install the app and send the IDs to the person who runs Hawkeye.
sidebar:
  order: 8
features: [lti]
---

This page is for Canvas administrators. Hawkeye connects to Canvas with LTI 1.3. You create two Developer Keys:

- An **LTI key**, so instructors and students can open Hawkeye from Canvas.
- An **API key**, so Hawkeye can set the access code on a Classic Quiz when an instructor selects **Connect Canvas**.

Hawkeye keeps its settings in environment variables. The person who runs Hawkeye (the Hawkeye operator) sets them. You send that person the values from Canvas. In the steps below, `https://hawkeye.example.com` is the Hawkeye address. Use your real Hawkeye address.

## Part 1: Create the LTI key

1. **Get the configuration**

    Open `https://hawkeye.example.com/lti/config.json` in your browser. Copy all of the text. If the page is not found, ask the Hawkeye operator to set up the tool key first.

2. **Open Developer Keys**

    In Canvas, go to **Admin**, select your account, then select **Developer Keys**.

3. **Add an LTI key**

    Select **+ Developer Key**, then **+ LTI Key**.

4. **Paste the configuration**

    Set the method to **Paste JSON**. Paste the text from step 1. Give the key a name, for example "Hawkeye".

5. **Save and turn it on**

    Select **Save**. In the Developer Keys list, set the key's state to **On**.

6. **Copy the client ID**

    Copy the number in the **Details** column. This number is the client ID.

The configuration already contains everything Canvas needs. Do not change it:

- The login URL `/lti/login` and the launch URL `/lti/launch`.
- Hawkeye's public key (a public JWK). Hawkeye also publishes this key at `/lti/jwks.json`.
- Three placements: **Assignment Selection**, **Link Selection** and **Course Navigation**. The course menu link is called **Hawkeye**. Only instructors and administrators see it.
- One scope: Names and Roles. Hawkeye uses it only to read the class list: when an instructor selects **Email the Class Now**, and when the instructor later opens the exam's **Canvas** section, to see whether new students joined the course.
- Three custom fields: `canvas_user_id` with the value `$Canvas.user.id`, `canvas_course_id` with `$Canvas.course.id`, and `canvas_assignment_id` with `$Canvas.assignment.id`.

> **The privacy level must be Public**
>
> The configuration sets the privacy level to **public**. Keep it. Without it, Canvas does not share the user's email address. Hawkeye then refuses the launch with the message "Canvas didn't share your email address with Hawkeye".

## Part 2: Install the app

1. In Canvas, go to **Admin**, select your account, then select **Settings** and the **Apps** tab.
2. Select **View App Configurations**, then **+ App**.
3. Set **Configuration Type** to **By Client ID**.
4. Paste the client ID from Part 1. Select **Submit**, then **Install**.
5. Find Hawkeye in the list of apps. Select its gear icon, then **Deployment Id**.
6. Copy the deployment ID.

![A Canvas course with Hawkeye in the course menu after the install](/docs/blume-assets/content/docs/educators/images/c02-canvas-course.png)

## Part 3: Create the API key

1. **Add an API key**

    In **Developer Keys**, select **+ Developer Key**, then **+ API Key**.

2. **Set the redirect URI**

    In **Redirect URIs**, type `https://hawkeye.example.com/canvas/oauth/callback`.

3. **Limit the scopes**

    Turn on **Enforce Scopes**. Select only these three scopes:
    `url:GET|/api/v1/courses/:course_id/quizzes/:id`,
    `url:PUT|/api/v1/courses/:course_id/quizzes/:id` and
    `url:GET|/api/v1/courses/:course_id/quizzes/:quiz_id/submissions`.

4. **Save and turn it on**

    Select **Save**. Set the key's state to **On**.

5. **Copy the ID and the key**

    Copy the client ID from the **Details** column. Select **Show Key** and copy the secret.

Hawkeye uses these scopes to read the quiz, set its access code and check the quiz submissions. It asks for nothing else.

## Part 4: Send the values to the Hawkeye operator

Send these values to the person who runs Hawkeye:

| Value | From |
|---|---|
| LTI client ID | Part 1, step 6 |
| Deployment ID | Part 2, step 6 |
| Your Canvas address, for example `https://canvas.example.com` | Your browser |
| API client ID | Part 3, step 5 |
| API secret | Part 3, step 5 |

> **Keep the secret safe**
>
> The API secret is a password. Send it through a secure channel, not in a plain email or chat message.

When the operator confirms the setup, instructors can start. Send them [Use Hawkeye with Canvas](/docs/educators/canvas).
