Documentation

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

  1. 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.

    Create an account
  2. Provision the simulator

    The simulator registers a fake LMS platform against your development environment and gives you a launch you can trigger on demand.

    Open the setup guide
  3. 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.

  4. 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.

    Connect Canvas
  5. 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.

    Open the launch debugger

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.

POST /v1/lti/launches/redeem
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 response
{
  "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

Detailed endpoint pages are in progress. Until they land, the repository docs/ directory holds the quick start, API error model, and LMS setup notes — and the team answers questions directly during early access.