Skip to content

LMS registration

Your tool’s public base URL (APP_URL) drives every endpoint. It must be HTTPS and publicly reachable without auth, so the LMS can fetch your JWKS and post launches server-to-server.

Tool endpointPath
OIDC login (initiation)/api/lti/login
Launch / redirect target/api/lti/launch
Deep-link (content selection)/api/lti/launch
Public JWKS/.well-known/jwks.json

The same /api/lti/launch handles resource-link and deep-link launches (it branches on message_type), so the launch URL, redirect URI, and content-selection URL are all /api/lti/launch.

Site administration → Plugins → Activity modules → External tool → Manage tools → configure manually.

Moodle fieldValue
Tool URLAPP_URL/api/lti/launch
LTI versionLTI 1.3
Public key typeKeyset URL
Public keysetAPP_URL/.well-known/jwks.json
Initiate login URLAPP_URL/api/lti/login
Redirection URI(s)APP_URL/api/lti/launch
Supports Deep Linkingenabled
Content Selection URLAPP_URL/api/lti/launch
IMS AGSUse this service for grade sync and column management

Then open the tool → View configuration details and copy the values into a lti_platforms row:

lti_platforms columnMoodle field
issuerPlatform ID (your Moodle base URL)
client_idClient ID
auth_endpointAuthentication request URL
token_endpointAccess token URL
keyset_urlPublic keyset URL
deployment_idDeployment ID (appears after activation; must match)

Same mapping, different field names: Redirect URIs = /api/lti/launch, OpenID Connect Initiation Url = /api/lti/login, JWK Method = Public JWK URL = /.well-known/jwks.json, Target Link URI = /api/lti/launch. Canvas issuer is https://canvas.instructure.com (hosted and most self-hosted).