Register your REST integration in the Blackboard developer portal at developer.blackboard.com to obtain a client application key and secret; then install the integration on the target Learn instance from the administrator panel.
Obtain an OAuth 2.0 access token by POSTing to /learn/api/public/v1/oauth2/token with Content-Type: application/x-www-form-urlencoded, a Basic Authorization header containing your base64-encoded key:secret, and body grant_type=client_credentials.
Pass the returned access_token as a Bearer token in subsequent calls; tokens are valid for one hour — implement token refresh logic before expiry rather than waiting for a 401 response.
Create a course enrollment by POSTing to /learn/api/public/v1/courses/:courseId/users/:userId with body {courseRoleId: 'Student', availability: {available: 'Yes'}}; the courseId and userId can be Blackboard internal IDs or prefixed SIS IDs (e.g., externalId:SIS_CODE).
List enrollments for a course via GET /learn/api/public/v1/courses/:courseId/users; use offset and limit query parameters to paginate and check the paging.nextPage field in the response envelope for the next page URL.
Delete an enrollment via DELETE /learn/api/public/v1/courses/:courseId/users/:userId; a 204 response indicates success.
Known gotchas
Blackboard REST API permissions are controlled by entitlements defined in the application registration; if a POST or DELETE returns 403, the application likely lacks the course.user.MODIFY or course.user.DELETE entitlement — update the registration and reinstall the integration.
SIS ID-prefixed identifiers (externalId:value) work in URL path segments, but the colon and prefix must not be URL-encoded when used in paths — some HTTP clients encode the colon and cause 404 responses.
The Blackboard REST API coexists with Building Blocks (LTI/Java plugins) and the SIS Framework; changes made via the REST API bypass any Building Block business logic hooks, which can cause data inconsistencies if both interfaces are active.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp