Manual LMS Registration
Make sure you've read about authenticating API requests before proceeding to the guide below.
The Platforms API endpoints only accept the bearer api key based authentication method.
Not every LMS supports Dynamic Registration. For LMSes that don't — including older versions of Canvas, Blackboard Learn, Moodle below 3.10, Schoology, and most custom or in-house platforms — the registration must be performed manually. The LMS and your tool exchange the same set of OIDC metadata as in a Dynamic Registration, but instead of LTIAAS doing it over the wire, the LMS administrator and your team copy values between the two systems by hand or via API.
Manual registration is also the right choice when you want full programmatic control over the process, regardless of whether the LMS supports Dynamic Registration. Common reasons to choose this path include a self-service signup workflow where your customers paste their LMS details into your tool and your back-end calls LTIAAS on their behalf, a bulk import from an older system, or a "rebuild from config" disaster-recovery script.
LTIAAS gives you access to manual platform management through the /admin/platforms API endpoints, which are also surfaced through the Registrations page in the LTIAAS Portal. Both routes produce the same result: a persistent platformId that uniquely identifies the LMS within your LTIAAS account.
The shape of the manual registration is always the same: the LMS and LTIAAS each generate half of the required metadata, and you stitch the two halves together. LTIAAS exposes its half automatically under your subdomain. The LMS gives you its half through its admin UI (or, in some cases, through its own API). You then feed the LMS's half into LTIAAS via the Portal or the /admin/platforms API.
Identify your tool's LTI endpoints
Step 1 of 6LTIAAS hosts a fixed set of LTI® endpoints under your account's subdomain. These don't change per registration, and you don't need to configure them anywhere — they're derived from your subdomain.
https://your.ltiaas.com/lti/login ← OIDC login initiation URL
https://your.ltiaas.com/lti/launch ← target launch / redirect URI
https://your.ltiaas.com/lti/deeplink ← deep-linking launch URL (if offered)
https://your.ltiaas.com/lti/keys ← your tool's public JWKS
You can verify that your LTIAAS account is live and accessible by making a request to the /lti/keys endpoint. A new account with no registrations will return an empty keys array.
curl https://your.ltiaas.com/lti/keys
# { "keys": [] }
It's common to display these URLs in your application's onboarding UI so that customers self-serving a registration can simply copy them into their LMS without contacting your support team.
What's next
- Dynamic LMS Registration flow — the automated alternative for LMSes that support it. The resulting
platformIdis identical in shape to the one you get from the manual flow. - Launch + idtoken SSO flow — what happens on every launch after a successful registration.
- Per-LMS setup guides — concrete LMS-specific instructions for the form fields in Step 2.
