From zero to a verified launch
The whole integration is one endpoint. Most of this page is about everything around it — registration, testing, and what to do when a launch fails.
Quick start
Five steps to a working integration
- Create an account
Create an account and an application
Sign up, then create an application and a development environment. Each environment gets its own API keys and platform registrations.
- Open the setup guide
Provision the simulator
The simulator registers a fake LMS platform against your development environment and gives you a launch you can trigger on demand.
Redeem the launch token
Your callback receives a one-time token. Exchange it for a normalized user, context, and role set with your environment API key.
- Connect Canvas
Connect a real LMS
When the simulated launch works, run the Canvas or generic LTI 1.3 wizard and send the generated install pack to the LMS administrator.
- Open the launch debugger
Debug what fails
Every attempt is recorded with a stable error code and the expected versus received values. Start there instead of reading LMS logs.
Redeem
The one call you write
Authenticate with an environment API key. A launch token is single-use, so a replayed token fails loudly rather than silently returning a session.
curl -X POST https://api.learnport.dev/v1/lti/launches/redeem \
-H "authorization: Bearer $LEARNPORT_API_KEY" \
-H "content-type: application/json" \
-d '{"token":"<launch_token>"}'Errors
One envelope, everywhere
Match on code, not on message. Unauthenticated endpoints deliberately omit protocol diagnostics — those are visible in the launch debugger instead.
{
"error": {
"type": "authentication_error",
"code": "LAUNCH_SESSION_CONSUMED",
"message": "This launch token has already been redeemed.",
"requestId": "req_01HZY..."
}
}Reference
Where to go next
API reference
Tenancy, environments, API keys, LTI registration, and launch redemption. Every response uses the same error envelope.
TypeScript SDK
@learnport/sdk wraps the JSON API with types. The sample customer app in the repository is a complete working callback.
Error model
Failures carry a stable code alongside a human message. Codes are part of the contract; messages are not.
LMS guides
Canvas is covered end to end today. Generic LTI 1.3 covers Moodle, D2L, and Blackboard with admin-facing install packs.
Full reference is still being written
docs/ directory holds the quick start, API error model, and LMS setup notes — and the team answers questions directly during early access.