Skip to main content
POST
Get institutions for LTI context

Body

application/json
ltiContextId
string
required

LTI context identifier

Example:

"https://domain.edu/course/123"

launch
object

Optional (design 2026-09-28 D3/D5). A freshly signed SDK launch (params/launch_token/nonce/timestamp, as verified by /api/auth/sdk-verify) proving who is asking, for the unavailable/hidden answers below. Only a VERIFIED launch or the ticket of one counts — never the body's email.

ticket
string

A course ticket (from a prior answer here or from sdk-hide) in place of launch. The ticket wins when both are sent.

Response

200 - application/json

Institutions retrieved successfully

command
enum<string>

login — a usable twin already holds this course, sign the caller in. hidden — the course was hidden via /api/auth/sdk-hide. unavailable — a marker (never offered as a choice): the course's only holder(s) are disabled twins. existing — a twin the caller already belongs to. contact — a twin whose contactEmail matches the caller.

Available options:
login,
hidden,
unavailable,
existing,
contact
publicId
string

Digital Twin public id (login, existing, contact).

name
string

Institution name (existing, contact).

ainame
string

Digital Twin display name (existing, contact; also the unavailable marker's disabled twin name).

picture
string

Institution picture URL (existing, contact).

credits
integer

Remaining credits (existing, contact).

accountName
string

Parent account name, when the institution has one (existing, contact).

reason
enum<string>

Marker only (unavailable) — why the disabled holder can't be used.

Available options:
institution_inactive,
account_inactive
count
integer

Marker only (unavailable) — how many disabled twins hold this course.

canManage
boolean

unavailable/hidden only — the caller proved (by launch or ticket) it may manage this course. For unavailable (a held course) that is the SCREEN_TRUST level (design 2026-09-28 D3); for hidden (no holder) it is ANY validly signed teacher launch (usertype > 1) or its ticket — the Hide gate's own level.

unavailable only, and only when canManage is true — the caller may disconnect the disabled twin via /api/auth/sdk-unlink-course under UNLINK_TRUST (never wider than SCREEN_TRUST).

hidden
boolean

unavailable, canManage only — the held course is ALSO hidden.

ticket
string | null

unavailable/hidden, canManage only — a 4-hour course ticket for /api/auth/sdk-unlink-course and /api/auth/sdk-hide, so the manager need not re-launch from Canvas. The SAME ticket is handed back when the caller already authenticated by ticket (never renewed).