Blackboard API Reference
This page documents the Blackboard REST API endpoints that the toolkit uses, including version information, required parameters, and response structures.
Authentication
OAuth2 Token
| Method |
Endpoint |
Description |
POST |
/learn/api/public/v1/oauth2/token |
Obtain an access token using client credentials |
Request Body
grant_type=client_credentials
client_id={client_id}
client_secret={client_secret}
Response
{
"access_token": "string",
"token_type": "Bearer",
"expires_in": 3600
}
Users (v1)
List Users
| Method |
Endpoint |
Description |
GET |
/learn/api/public/v1/users |
Get a paginated list of users |
Query Parameters
| Parameter |
Type |
Description |
limit |
integer |
Number of results per page (default: 100, max: 1000) |
offset |
integer |
Pagination offset |
userName |
string |
Filter by username (exact match) |
active |
boolean |
Filter by active status |
Response
{
"results": [
{
"id": "string",
"userName": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"active": true,
"created": "2023-01-01T00:00:00Z",
"modified": "2023-01-01T00:00:00Z"
}
],
"totalCount": 100
}
Get User
| Method |
Endpoint |
Description |
GET |
/learn/api/public/v1/users/{userId} |
Get a specific user by ID |
Update User
| Method |
Endpoint |
Description |
PATCH |
/learn/api/public/v1/users/{userId} |
Update user fields |
Request Body
{
"userName": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"active": true
}
Create User
| Method |
Endpoint |
Description |
POST |
/learn/api/public/v1/users |
Create a new user |
Request Body
{
"userName": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"active": true
}
Delete User
| Method |
Endpoint |
Description |
DELETE |
/learn/api/public/v1/users/{userId} |
Delete a user |
Courses (v3)
Important: The toolkit uses v3 of the Courses API for the latest features.
List Courses
| Method |
Endpoint |
Description |
GET |
/learn/api/public/v3/courses |
Get a paginated list of courses |
Query Parameters
| Parameter |
Type |
Description |
limit |
integer |
Number of results per page (default: 100, max: 1000) |
offset |
integer |
Pagination offset |
courseId |
string |
Filter by course ID (exact match) |
userId |
string |
Filter courses a user is enrolled in |
Response
{
"results": [
{
"id": "string",
"name": "string",
"courseId": "string",
"description": "string",
"available": true,
"startDate": "2023-09-01T00:00:00Z",
"endDate": "2023-12-15T00:00:00Z",
"term": {
"name": "string"
},
"created": "2023-08-01T00:00:00Z",
"modified": "2023-08-15T00:00:00Z"
}
],
"totalCount": 100
}
Get Course
| Method |
Endpoint |
Description |
GET |
/learn/api/public/v3/courses/{courseId} |
Get a specific course by ID |
Update Course
| Method |
Endpoint |
Description |
PATCH |
/learn/api/public/v3/courses/{courseId} |
Update course fields |
Request Body
{
"name": "string",
"courseId": "string",
"description": "string",
"available": true
}
Create Course
| Method |
Endpoint |
Description |
POST |
/learn/api/public/v3/courses |
Create a new course |
Request Body
{
"name": "string",
"courseId": "string",
"description": "string",
"available": true
}
Delete Course
| Method |
Endpoint |
Description |
DELETE |
/learn/api/public/v3/courses/{courseId} |
Delete a course |
Enrollments (v1)
List Enrollments by Course
| Method |
Endpoint |
Description |
GET |
/learn/api/public/v1/courses/{courseId}/enrollments |
Get all enrollments for a course |
Query Parameters
| Parameter |
Type |
Description |
limit |
integer |
Number of results per page |
offset |
integer |
Pagination offset |
active |
boolean |
Filter by active status |
Response
{
"results": [
{
"userId": "string",
"role": "student|instructor|ta|auditor",
"active": true,
"created": "2023-01-01T00:00:00Z"
}
],
"totalCount": 100
}
Create Enrollment
| Method |
Endpoint |
Description |
POST |
/learn/api/public/v1/courses/{courseId}/enrollments |
Enroll a user in a course |
Request Body
{
"userId": "string",
"role": "student"
}
Delete Enrollment
| Method |
Endpoint |
Description |
DELETE |
/learn/api/public/v1/courses/{courseId}/enrollments/{userId} |
Remove a user from a course |
Assignments (v1)
Note: Assignment creation uses a different endpoint in newer Blackboard versions (3900.98+).
List Assignments
| Method |
Endpoint |
Description |
GET |
/learn/api/public/v1/courses/{courseId}/assignments |
Get all assignments for a course |
Response
{
"results": [
{
"id": "string",
"name": "string",
"description": "string",
"dueDate": "2023-09-15T23:59:59Z",
"points": {
"possible": 100
},
"created": "2023-09-01T00:00:00Z",
"modified": "2023-09-01T00:00:00Z"
}
],
"totalCount": 100
}
Create Assignment (Modern)
| Method |
Endpoint |
Description |
POST |
/learn/api/public/v1/courses/{courseId}/contents/createAssignment |
Create a new assignment via content API |
Request Body
{
"name": "string",
"description": "string",
"dueDate": "2023-09-15T23:59:59Z",
"points": {
"possible": 100
}
}
Update Assignment
| Method |
Endpoint |
Description |
PATCH |
/learn/api/public/v1/courses/{courseId}/assignments/{assignmentId} |
Update assignment fields |
Request Body
{
"name": "string",
"description": "string",
"dueDate": "2023-09-15T23:59:59Z",
"points": {
"possible": 100
}
}
Gradebook (v2)
Get Gradebook Columns
| Method |
Endpoint |
Description |
GET |
/learn/api/public/v2/courses/{courseId}/gradebook/columns |
Get all grade columns for a course |
Note: This endpoint is currently a stub in the toolkit. Full gradebook support will be added in a future release.
API Version Summary
| Resource |
API Version |
Endpoint Base |
| Users |
v1 |
/learn/api/public/v1/users |
| Courses |
v3 |
/learn/api/public/v3/courses |
| Enrollments |
v1 |
/learn/api/public/v1/courses/{id}/enrollments |
| Assignments (List) |
v1 |
/learn/api/public/v1/courses/{id}/assignments |
| Assignments (Create) |
v1 |
/learn/api/public/v1/courses/{id}/contents/createAssignment |
| Gradebook |
v2 |
/learn/api/public/v2/courses/{id}/gradebook/columns |
| Token |
v1 |
/learn/api/public/v1/oauth2/token |
| Toolkit Method |
Blackboard API Endpoint |
Method |
client.students.get() |
/users/{id} |
GET |
client.students.list() |
/users |
GET |
client.students.save() (create) |
/users |
POST |
client.students.save() (update) |
/users/{id} |
PATCH |
client.students.delete() |
/users/{id} |
DELETE |
client.courses.get() |
/v3/courses/{id} |
GET |
client.courses.list() |
/v3/courses |
GET |
client.courses.save() (create) |
/v3/courses |
POST |
client.courses.save() (update) |
/v3/courses/{id} |
PATCH |
client.courses.delete() |
/v3/courses/{id} |
DELETE |
client.enrollments.list_by_course() |
/v1/courses/{id}/enrollments |
GET |
client.enrollments.save() |
/v1/courses/{id}/enrollments |
POST |
client.enrollments.delete() |
/v1/courses/{id}/enrollments/{userId} |
DELETE |
client.assignments.list_by_course() |
/v1/courses/{id}/assignments |
GET |
client.assignments.save() (create) |
/v1/courses/{id}/contents/createAssignment |
POST |
client.assignments.save() (update) |
/v1/courses/{id}/assignments/{id} |
PATCH |
This reference is generated from the latest Blackboard API documentation (version 4001.1.0) and the toolkit's implementation.