# Documentation

> Learn how to connect an LMS or campus system to Grout — provisioning, SSO, exams, webhooks and more.

Canonical: https://grout.app/developer/documentation/

## How it fits together

Grout is three apps and one portal. **GroutApp** is the offline-first AI learning studio, **GroutCode** is the coding studio with proctored coding exams, and the **Guardians portal** at audit.grout.app lets parents follow progress. Institutions administer all of it from **portal.grout.app**.

The Institution API sits underneath the portal. Everything an admin can do by hand, your integration can do with an API key: create people, hand out licenses, sign students into the apps, run exams, credit AI merits, and get told when something happens.

:::cards
- [Institution Account](/developer/documentation/setting-up/institution-account/) — Register, get approved, and find the Developers tab in the portal.
- [API Keys & Scopes](/developer/documentation/setting-up/api-keys/) — Least-privilege keys, rotation, rate limits.
- [SSO Launch](/developer/documentation/people/sso/) — One-click "Open in GroutCode" from your LMS.
- [Webhooks](/developer/documentation/webhooks/overview/) — Signed, retried events for grades, licenses and more.
:::

## Who this is for

- **LMS and SIS teams** syncing rosters and grades with Moodle, Canvas or an in-house system.
- **Institution developers** invited by an admin from the portal.
- **AI agents** — every page is available as markdown; start at [/developer/llms.txt](/developer/llms.txt) and read [AGENTS.md](/developer/AGENTS.md).

## Conventions used in these docs

`$API` means `https://serverless.grout.app/v1` and `$KEY` is an institution API key. Request bodies are JSON unless a page says multipart. Timestamps are ISO-8601 UTC. Path parameters written `{id}` accept the internal id **or**, for people, the generated login email.
