> For the complete documentation index, see [llms.txt](https://developerdocs.instructure.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developerdocs.instructure.com/services/mastery-connect.md).

# MasteryConnect REST API

Read-only, district-scoped access to your MasteryConnect assessment and mastery data over a REST API secured with OAuth 2.0.

The MasteryConnect REST API (v2) gives a district programmatic, read-only access to its own assessment data — schools, classrooms, sections, teachers, materials, assessment items, item banks, curriculum maps, standards and reports — so you can move that data into a warehouse, a dashboard, or an in-house integration.

Every request is authenticated with an OAuth 2.0 Bearer token and scoped to the single district that issued the credential. The API never returns another district's data.

{% hint style="info" %}
Before you write any code, read the [key concepts](/services/mastery-connect/key-concepts.md). The MasteryConnect data model draws a few distinctions — Material vs. Assessment, Section vs. Classroom, Kid vs. Student — that the endpoint names alone will not tell you.
{% endhint %}

## Start Here

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Key Concepts</strong></td><td>Learn how the entities relate before you query them.</td><td><a href="/services/mastery-connect/key-concepts.md">Key Concepts</a></td></tr><tr><td><strong>Getting Started</strong></td><td>Get a token and make your first call, end to end.</td><td><a href="/services/mastery-connect/getting-started.md">Getting Started</a></td></tr><tr><td><strong>Authentication</strong></td><td>Exchange client credentials for a short-lived Bearer token.</td><td><a href="/services/mastery-connect/authentication.md">Authentication</a></td></tr></tbody></table>

## Build Your Integration

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Conventions</strong></td><td>Response envelope, pagination, filtering, sorting and embeds.</td><td><a href="/services/mastery-connect/conventions.md">Conventions</a></td></tr><tr><td><strong>Errors</strong></td><td>The error envelope and every machine-readable error code.</td><td><a href="/services/mastery-connect/errors.md">Errors</a></td></tr><tr><td><strong>Rate Limits &#x26; Policies</strong></td><td>Request budgets, page caps and the headers that report them.</td><td><a href="/services/mastery-connect/limits-policies.md">Rate Limits &amp; Policies</a></td></tr><tr><td><strong>Reports</strong></td><td>Pre-computed tabular extracts, such as item analysis.</td><td><a href="/services/mastery-connect/reports.md">Reports</a></td></tr><tr><td><strong>API Reference</strong></td><td>Every endpoint, parameter and response, ready to try.</td><td><a href="/services/mastery-connect/openapi.md">API Reference</a></td></tr></tbody></table>

## At a Glance

|                   |                                                   |
| ----------------- | ------------------------------------------------- |
| Base URL          | `https://api.masteryconnect.com`                  |
| Authentication    | OAuth 2.0 client credentials → Bearer token       |
| Token lifetime    | 2 hours (never longer than the credential itself) |
| Methods           | `GET` only — the API is read-only                 |
| Response format   | JSON, in a JSON:API-shaped envelope               |
| Default page size | 25 items (maximum 100)                            |
| Rate limit        | 300 requests per minute, per district             |

## Availability

The API must be turned on for your district before any credential will work. Ask your MasteryConnect representative or Instructure Support to enable it; see [Getting Started](/services/mastery-connect/getting-started.md#prerequisites) for what that involves.

## Where To Get Help

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Support</strong></td><td>To report a bug or request a new endpoint, open a ticket with Instructure Support.</td><td><a href="https://community.canvaslms.com/t5/Canvas-Basics-Guide/How-do-I-contact-Instructure-Support/ta-p/386597">https://community.canvaslms.com/t5/Canvas-Basics-Guide/How-do-I-contact-Instructure-Support/ta-p/386597</a></td></tr><tr><td><strong>Status</strong></td><td>Check platform availability and incident history.</td><td><a href="https://status.instructure.com/">https://status.instructure.com/</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developerdocs.instructure.com/services/mastery-connect.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
