Complete Launch
Completes a resource link launch by telling the tool who the user is and what they are launching.
Call this from the Launch URL you configured in the portal, after LTIAAS redirects the browser there with a signed payload and you have verified it. The metadata value comes from that verified payload.
This variant returns the raw pieces (target, state, idtoken) so you can build the form yourself. Most integrations want Complete Launch Form instead.
The metadata value expires ten minutes after the launch begins. If your validation step is slow — waiting on a user login, for example — the launch will fail with 400 INVALID_METADATA_PARAMETER.
Unlike the launch request, context and resource here are objects, not strings. This trips people up.
Request Body required
The metadata claim from the verified payload JWT that LTIAAS sent to your Launch URL. Expires ten minutes after the launch begins.
user object required
The user being launched. Name and email fields are only forwarded if the tool's privacy level permits it, so it is safe to always send them.
id object required
Your identifier for the user. Should match the user value you sent on the launch.
string
Your identifier for the user. Should match the user value you sent on the launch.
integer
Your identifier for the user. Should match the user value you sent on the launch.
Possible values: [SYSTEM_ADMINISTRATOR, SYSTEM_NONE, SYSTEM_ACCOUNT_ADMIN, SYSTEM_CRETOR, SYSTEM_SYS_ADMIN, SYSTEM_SYS_SUPPORT, SYSTEM_USER, INSTITUTION_ADMINISTRATOR, INSTITUTION_FACULTY, INSTITUTION_GUEST, INSTITUTION_NONE, INSTITUTION_OTHER, INSTITUTION_STAFF, INSTITUTION_STUDENT, INSTITUTION_ALUMNI, INSTITUTION_INSTRUCTOR, INSTITUTION_LEARNER, INSTITUTION_MEMBER, INSTITUTION_MENTOR, INSTITUTION_OBSERVER, INSTITUTION_PROSPECTIVE, CONTEXT_ADMINISTRATOR, CONTEXT_CONTENT_DEVELOPER, CONTEXT_INSTRUCTOR, CONTEXT_LEARNER, CONTEXT_MENTOR, CONTEXT_MANAGER, CONTEXT_MEMBER, CONTEXT_OFFICER]
The user's roles in this context. Many tools change what they show based on whether the user is an instructor or a learner.
context object required
id object required
Your identifier for the context. Should match the context value you sent on the launch.
string
Your identifier for the context. Should match the context value you sent on the launch.
integer
Your identifier for the context. Should match the context value you sent on the launch.
Short name, such as a course code.
Full name.
The kind of context this is. Most integrations send ["CourseOffering"].
resource object required
The activity being launched.
id object required
Your identifier for the placement. Should match the resource value you sent on the launch.
string
Your identifier for the placement. Should match the resource value you sent on the launch.
integer
Your identifier for the placement. Should match the resource value you sent on the launch.
- 201
- 400
- 401
- 403
ID Token created
Schema
The tool's redirect URI. Post the form here.
The tool's original state value, echoed back.
The signed LTI® ID Token describing the user, context and resource.
{
"target": "https://mytool.ltiaas.com/lti/launch",
"state": "aLongString",
"idtoken": "aVeryLongString"
}
One or more request parameters were missing or malformed.
Schema
- Array [
- ]
details object
errors object[]
One entry per field that failed validation.
{
"status": 400,
"error": "Bad Request",
"details": {
"errors": [
{
"field": "clientId",
"message": "Missing 'clientId' parameter."
}
]
}
}
The Authorization header was missing, malformed, or carried the wrong key.
Schema
details object
Context for the failure. Always carries a message code; the other keys depend on what went wrong.
Context for the failure. Always carries a message code; the other keys depend on what went wrong.
{
"status": 403,
"error": "Forbidden",
"details": {
"message": "INACTIVE_SERVICE",
"description": "string"
}
}
{
"status": 401,
"error": "Unauthorized",
"details": {
"message": "INVALID_BEARER_AUTHORIZATION_HEADER",
"description": "Invalid API Key for account."
}
}
The account is not permitted to use this endpoint — most often because it is an LTIAAS Launch account rather than a Connect one, or because a trial quota has been reached.
Schema
details object
Context for the failure. Always carries a message code; the other keys depend on what went wrong.
Context for the failure. Always carries a message code; the other keys depend on what went wrong.
{
"status": 403,
"error": "Forbidden",
"details": {
"message": "INACTIVE_SERVICE",
"description": "string"
}
}
{
"status": 403,
"error": "Forbidden",
"details": {
"message": "INVALID_ACCOUNT_TYPE"
}
}
