Coursework
This group refers to entities tied to student learning delivery or feedback, such as Tasks and Grades.
Get all Grades for a Class during an Academic Term
Retrieves all gradebook grades for every student in a class during a specific academic term. Each student's response includes an array of task assignments with their scores, comments, and grade conversions.
Returned fields for each task include:
group_mark: The percentage achieved on the task, converted using the grade scale set for the program.score: The raw number of points a student achieved.max_points: The total available points for the task.dropbox_status: Upload status of the student submission. Only present if Dropbox Coursework Submission is enabled for the task. Values:waiting,early,on_time,late.binary: Completion status for binary-graded tasks. Values:completed,incompleted.due_date_extension_days: Number of extra days granted to the student for this task. Only present if an extension was given.created_at: The earliest creation timestamp stored across the grade's parts, as an ISO 8601 timestamp.updated_at: The latest modification timestamp stored across the grade's parts, as an ISO 8601 timestamp.
A grade can be made up of several parts (points, criteria, completion, comment), and the pair is taken across all of them rather than being a single record's own timestamps. Both report what is stored on those parts; they are not a log of grading activity, and bulk operations such as imports can move updated_at.
Either field is omitted entirely, never null, when no stored date exists: an ungraded task, or an IB MYP summative grade that is a comment only. A missing created_at usually means no recorded grade. The two are omitted independently, so check for each rather than assuming one implies the other.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the class.
Unique identifier for the academic term.
Filter results to specific students. Accepts repeated params or a comma-separated string.
student_ids=1,2,3 OR student_ids[]=1&student_ids[]=2When true, includes students who have been archived (graduated or withdrawn). Defaults to false.
Success
Unauthorized
Not Found
GET /v2p0/classes/{class_id}/assessments/term/{term_id}/grades HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"students": [
{
"id": 12068821,
"name": "Epelbaum, Chloe",
"assignments": [
{
"id": 18376636,
"name": "Short Story Analysis Quiz",
"group_mark": 5,
"dropbox_status": "waiting",
"due_date_extension_days": 2,
"due_date": "2023-04-25T14:05:00.000Z",
"created_at": "2023-04-28T09:12:33.000Z",
"updated_at": "2023-05-02T16:41:07.000Z",
"comment": null,
"score": 22,
"max_points": 32
},
{
"id": 18376694,
"name": "Write a Short Story Themed on Katharine Mansfield",
"group_mark": 7,
"dropbox_status": "waiting",
"due_date": "2023-04-25T14:05:00.000Z",
"created_at": "2023-04-28T09:12:33.000Z",
"updated_at": "2023-05-02T16:41:07.000Z",
"comment": null,
"score": 5,
"max_points": 5
},
{
"id": 18376845,
"name": "Read a Selected Short Story by Anton Chekhov",
"group_mark": 7,
"dropbox_status": "early",
"due_date": "2023-04-25T14:05:00.000Z",
"created_at": "2023-04-28T09:12:33.000Z",
"updated_at": "2023-05-02T16:41:07.000Z",
"comment": "Great analysis, the improvement is noticeable",
"score": 11,
"max_points": 12
},
{
"id": 18376852,
"name": "Gwendolyn Brooks Seminar",
"group_mark": 7,
"dropbox_status": "early",
"due_date": "2023-04-25T14:05:00.000Z",
"created_at": "2023-04-28T09:12:33.000Z",
"updated_at": "2023-05-02T16:41:07.000Z",
"comment": "Your presentation included insightful analysis of The Near-Johannesburg Boy",
"score": 19,
"max_points": 20
},
{
"id": 18376858,
"name": "Practice Commentary",
"group_mark": 4,
"dropbox_status": "early",
"due_date": "2023-04-25T14:05:00.000Z",
"created_at": "2023-04-28T09:12:33.000Z",
"updated_at": "2023-05-02T16:41:07.000Z",
"comment": "Your commentary shows a lack of understanding about how form is used to convey the message of the extract",
"score": 14,
"max_points": 21
}
]
},
{
"id": 12068757,
"name": "Evans, Raymond",
"assignments": [
{
"id": 18376636,
"name": "Short Story Analysis Quiz",
"group_mark": 7,
"comment": "Impressive analysis.",
"due_date": "2023-04-25T14:05:00.000Z",
"created_at": "2023-04-28T09:12:33.000Z",
"updated_at": "2023-05-02T16:41:07.000Z",
"score": 29,
"max_points": 32,
"binary": "completed"
},
{
"id": 18376694,
"name": "Write a Short Story Themed on Katharine Mansfield",
"group_mark": 7,
"comment": null,
"due_date": "2023-04-25T14:05:00.000Z",
"created_at": "2023-04-28T09:12:33.000Z",
"updated_at": "2023-05-02T16:41:07.000Z",
"score": 5,
"max_points": 5,
"binary": "completed"
},
{
"id": 18376845,
"name": "Read a Selected Short Story by Anton Chekhov",
"group_mark": 5,
"comment": null,
"due_date": "2023-04-25T14:05:00.000Z",
"created_at": "2023-04-28T09:12:33.000Z",
"updated_at": "2023-05-02T16:41:07.000Z",
"score": 9,
"max_points": 12,
"binary": "incompleted"
},
{
"id": 18376852,
"name": "Gwendolyn Brooks Seminar",
"group_mark": 5,
"comment": null,
"due_date": "2023-04-25T14:05:00.000Z",
"created_at": "2023-04-28T09:12:33.000Z",
"updated_at": "2023-05-02T16:41:07.000Z",
"score": 16,
"max_points": 21,
"binary": "completed"
}
]
}
],
"meta": {
"current_page": 1,
"total_pages": 1,
"total_count": 2,
"per_page": 10
}
}Retrieves all term grades for a class during a specific academic term. The response shape varies depending on the program type of the class:
IB Diploma, Career Programme, Cambridge, Advanced Placement, and other programs: Returns a grade (letter or number), optional exam_grade (if exam grades are enabled for the term), a computed average with percentage and grade, comments, and an array of custom rubrics.
IB Middle Years Programme (MYP): Returns criterion-based grades as a hash mapping criterion letters (A, B, C, D) to numeric values (1-8), a sum of all criterion grades, optional id_grades and id_sum for Interdisciplinary Unit assessment, optional atl_skills for Approaches to Learning, comments, and custom rubrics.
IB Primary Years Programme (PYP): Returns the most detailed structure including learner_profile with standards and criteria, subjects with phases, strands, and overall assessments, units with transdisciplinary themes and subject-specific assessments, optional atl_assessment, comments, and custom rubrics.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the class.
Unique identifier for the academic term.
Filter results to specific students. Accepts repeated params or a comma-separated string.
When true, includes students who have been archived (graduated or withdrawn). Defaults to false.
When true, returns only term grades for students who are no longer enrolled in the class but still have grade records. Useful for retrieving historical data after student transfers.
Success
Unauthorized
Not Found
GET /v2p0/classes/{class_id}/assessments/term/{term_id}/term-grades HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"students": [
{
"id": 12068821,
"name": "Epelbaum, Chloe",
"term_grade": {
"grade": 6,
"exam_grade": 5,
"average": {
"percent": 85,
"grade": 6
},
"comments": "Your class participation and determination to help your peers is remarkable.",
"rubrics": [
{
"id": 11181,
"title": "Class Participation",
"grade": "Excellent"
}
]
}
},
{
"id": 12068757,
"name": "Evans, Raymond",
"term_grade": {
"grade": 5,
"average": {
"percent": 86.5,
"grade": "5"
},
"comments": "You've managed to meet expectations.",
"rubrics": [
{
"id": 11181,
"title": "Class Participation",
"grade": "Satisfactory"
}
]
}
}
],
"meta": {
"current_page": 1,
"total_pages": 1,
"total_count": 2,
"per_page": 10
}
}This endpoint retrieves all criteria belonging to the class as specified by ID.
Criteria define the assessment dimensions used when grading tasks. Each criterion includes a title and a list of descriptors with their corresponding values.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for class.
Success
Unauthorized
Not Found
GET /v2p0/classes/{id}/criteria HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"criteria": [
{
"id": 25324,
"title": "Criteria Title",
"descriptors": [
{
"value": "Good",
"descriptor": "The student demonstrates a good understanding of the concept."
}
]
}
]
}This endpoint retrieves task categories for a class specified by class ID.
Task categories are used to organize tasks within a class (e.g. Quiz, Homework, Essay). Each category includes a display color and a weight used for grade calculations.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for class.
Success
Unauthorized
Not Found
GET /v2p0/classes/{id}/task_categories HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"task_categories": [
{
"id": 1,
"name": "Quiz",
"background_color": "#205C00",
"color": "#fff",
"weight": 10
},
{
"id": 2,
"name": "Homework",
"background_color": "#2175C6",
"color": "#fff",
"weight": 10
},
{
"id": 3,
"name": "Essay",
"background_color": "#33C",
"color": "#fff",
"weight": 10
},
{
"id": 6,
"name": "Paper",
"background_color": "#A2C400",
"color": "#fff",
"weight": 10
},
{
"id": 7,
"name": "Test",
"background_color": "#FFAD3A",
"color": "#fff",
"weight": 10
}
]
}Download a Submission File
Redirects to a short-lived signed URL for the requested submission file. Follow the redirect to retrieve the file content. The four IDs in the path must be consistent: the asset must belong to that student's submission for that task on that class.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the class.
Unique identifier for the task.
Unique identifier for the student.
Unique identifier for the file.
Redirect to signed file URL
No content
Unauthorized
Not Found
GET /v2p0/classes/{class_id}/tasks/{task_id}/submissions/{student_id}/files/{asset_id} HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Returns one submission entry per student who has work attached to the task, across both submission mechanisms (Dropbox upload and Google Drive). Designed for incremental sync: pass modified_since to receive only submissions whose underlying file or task work was updated after a given time.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the class.
Unique identifier for the task.
ISO 8601 timestamp; returns only submissions whose underlying file or task work was updated strictly after this time.
Page number (default 1).
Items per page (default 100, min 1, max 500).
Success
Bad Request
Unauthorized
Not Found
GET /v2p0/classes/{class_id}/tasks/{task_id}/submissions HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"submissions": [
{
"id": "12345-678",
"task_id": 12345,
"student_id": 678,
"mechanism": "dropbox",
"submitted_at": "2026-04-30T18:14:01Z",
"updated_at": "2026-04-30T18:14:01Z",
"locked": false,
"status": "submitted",
"files": [
{
"id": 9988,
"filename": "essay-final.pdf",
"file_size": 4823910,
"content_type": "application/pdf",
"uploaded_at": "2026-04-30T18:14:01Z",
"turnitin_score": 7,
"download_path": "/v2/classes/42/tasks/12345/submissions/678/files/9988"
}
]
}
],
"meta": {
"current_page": 1,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"modified_since": null
}
}Returns the submission for a single student on a class task, in the same shape as one element of the list endpoint's response. Returns 404 if the student has no work attached to the task.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the class.
Unique identifier for the task.
Unique identifier for the student.
Success
Unauthorized
Not Found
GET /v2p0/classes/{class_id}/tasks/{task_id}/submissions/{student_id} HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"submission": {
"id": "12345-678",
"task_id": 12345,
"student_id": 678,
"mechanism": "dropbox",
"submitted_at": "2026-04-30T18:14:01Z",
"updated_at": "2026-04-30T18:14:01Z",
"locked": false,
"status": "submitted",
"files": [
{
"id": 9988,
"filename": "essay-final.pdf",
"file_size": 4823910,
"content_type": "application/pdf",
"uploaded_at": "2026-04-30T18:14:01Z",
"turnitin_score": 7,
"download_path": "/v2/classes/42/tasks/12345/submissions/678/files/9988"
}
]
}
}This endpoint retrieves all tasks belonging to the class as specified by ID. If term ID is not specified, all tasks that the term class covers will be returned.
Each task includes its assessment type, category, and scoring configuration.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for class.
Unique identifier for term.
Success
Unauthorized
Not Found
GET /v2p0/classes/{id}/tasks HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"tasks": [
{
"id": 10277631,
"name": "Accelerated Motion Lab",
"notes": "",
"draft": false,
"task_type": "formative",
"task_type_name": "Formative",
"linked_to": {
"class_id": 10299022,
"task_id": 11921323
},
"dropbox": false,
"google_drive_dropbox": true,
"task_work_templates": [
{
"id": 60,
"name": "Lab Report",
"details": "Complete the given lab report template based on the in-class lab that was held on Monday."
},
{
"id": 61,
"name": "Post-Lab Reflection",
"details": "After completing your lab report, answer the questions in the post-lab reflection."
}
],
"turnitin": false,
"hide_assessment_results": false,
"due_date": "2018-04-27T04:00:00+03:00",
"unit": {
"id": 67396,
"title": "Dynamics & Kinematics"
},
"hl": true,
"sl": true,
"category": {
"id": 11484803,
"name": "Lab Reports",
"weight": 25
},
"assessment_types": {
"comments": {},
"points": {
"max_score": 7
}
}
},
{
"id": 20018084,
"name": "Chapter 2.1 HW",
"notes": "",
"draft": false,
"task_type": "summative",
"task_type_name": "Summative",
"linked_to": {
"class_id": 10299022,
"task_id": 11921323
},
"dropbox": false,
"google_drive_dropbox": false,
"turnitin": false,
"hide_assessment_results": false,
"due_date": "2018-05-13T04:00:00+03:00",
"unit": {
"id": 67396,
"title": "Dynamics & Kinematics"
},
"hl": true,
"sl": true,
"category": {
"id": 11484801,
"name": "Homework",
"weight": 10
},
"assessment_types": {
"comments": {},
"points": {
"max_score": 10
}
}
},
{
"id": 19942197,
"name": "Dynamics Unit Test",
"notes": "Prepare for the test by completing all homework questions for Chapter 2.",
"draft": false,
"task_type": "custom",
"task_type_name": "Custom Name",
"linked_to": {
"class_id": 10299022,
"task_id": 11921323
},
"dropbox": false,
"google_drive_dropbox": true,
"task_work_templates": false,
"turnitin": false,
"hide_assessment_results": false,
"due_date": "2018-05-18T04:00:00+03:00",
"unit": {
"id": 67396,
"title": "Test"
},
"hl": true,
"sl": true,
"category": {
"id": 11484802,
"name": "Unit Tests",
"weight": 20
},
"assessment_types": {
"comments": {},
"points": {
"max_score": 7
}
}
}
],
"meta": {
"current_page": 1,
"total_pages": 1,
"total_count": 4,
"per_page": 100
}
}This endpoint retrieves a task as specified by task ID and class ID.
Returns the full detail for a single task including its assessment configuration, category, unit association, and dropbox settings.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for task.
Unique identifier for class.
Success
Unauthorized
Not Found
GET /v2p0/classes/{class_id}/tasks/{id} HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"task": {
"id": 10277631,
"name": "Accelerated Motion Lab",
"notes": "The lab will allow you to work in groups to create and test a hypothesis related to Newton's Laws of Motion.",
"draft": false,
"task_type": "formative",
"task_type_name": "Formative",
"linked_to": {
"class_id": 10299022,
"task_id": 11921323
},
"dropbox": false,
"google_drive_dropbox": true,
"task_work_templates": [
{
"id": 60,
"name": "Lab Report",
"details": "Complete the given lab report template based on the in-class lab that was held on Monday."
},
{
"id": 61,
"name": "Post-Lab Reflection",
"details": "After completing your lab report, answer the questions in the post-lab reflection."
}
],
"turnitin": false,
"hide_assessment_results": false,
"due_date": "2018-04-27T04:00:00+03:00",
"unit": {
"id": 67396,
"title": "Dynamics & Kinematics"
},
"hl": true,
"sl": true,
"category": {
"id": 11484803,
"name": "Lab Reports",
"weight": 20
},
"assessment_types": {
"comments": {},
"points": {
"max_score": 7
}
}
}
}This endpoint retrieves all assessment result scores belonging to a class as specified by ID. If term ID is not specified, all assessed tasks that the term class covers will be returned.
Optional properties:
Assessments:
dropbox_status- Student Dropbox Submission status for a task if enabledcriteria- per-criterion results for criteria-based tasks (MYP criteria, rubric criteria, IB Assessment criteria filtered by the student's HL/SL level). Each item carriesid,label(criterion letter; empty when the title has no letter prefix),criterion(title),score(nulluntil graded,"N/A"when not applicable) andnot_applicable.criteriondiffers by system: on rubric criteria it is the full title as the school entered it, so it usually still includes the letter inlabel(criterion: "Criterion A: Knowledge and understanding"), while MYP and IB Assessment titles have that letter stripped (criterion: "Analysing"). Joininglabelandcriteriontherefore repeats the letter on rubric tasks. Every criterion currently selected on the task is listed, including assessments archived after being mapped; un-selecting a criterion on the task removes it from this response for every student, though a grade already recorded against it is kept.idis the criterion's id, shared with/classes/{id}/criteriafor MYP and rubric criteria whenever that endpoint lists the criterion; IB Assessment items carry the IB criterion id, which that endpoint never lists.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for task.
Unique identifier for class.
List of student ids. Accepts repeated params or a comma-separated string.
student_ids=1,2,3 OR student_ids[]=1&student_ids[]=2Success
Unauthorized
Not Found
GET /v2p0/classes/{class_id}/tasks/{id}/students HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"students": [
{
"id": 10752610,
"name": "Epelbaum, Chloe",
"task_works": [
{
"id": 11861277,
"template_id": 54,
"submission_status": "submitted"
},
{
"id": 11861277,
"template_id": 55,
"submission_status": "late"
}
],
"assessments": {
"dropbox_status": "waiting",
"comments": "Chloe has done a great job on both portions of the task",
"points": {
"score": 6,
"max_score": 7
},
"criteria": [
{
"id": 4411203,
"label": "A",
"criterion": "Criterion A: Knowledge and understanding",
"score": "Good",
"not_applicable": false
},
{
"id": 4411204,
"label": "B",
"criterion": "Criterion B: Application",
"score": "N/A",
"not_applicable": true
},
{
"id": 4411205,
"label": "C",
"criterion": "Criterion C: Communication",
"score": null,
"not_applicable": false
}
],
"binary": 0
}
},
{
"id": 12068799,
"name": "Bailey, Jenna",
"task_works": [
{
"id": 11861277,
"template_id": 55,
"submission_status": "waiting"
}
],
"assessments": {
"comments": null,
"points": {
"score": null,
"max_score": 7
},
"binary": 1
}
},
{
"id": 10851648,
"name": "Francisco, Lewis",
"task_works": [
{
"id": 11861277,
"template_id": 55,
"submission_status": "late"
}
],
"assessments": {
"comments": "Lewis submitted his task late and did not meet expectations",
"points": {
"score": 4,
"max_score": 7
}
}
},
{
"id": 10866190,
"name": "Lucy, Jasmine",
"task_works": [
{
"id": 11861277,
"template_id": 54,
"submission_status": "submitted"
},
{
"id": 11861277,
"template_id": 55,
"submission_status": "submitted"
}
],
"assessments": {
"comments": "Great improvement Jasmine. Your hard work is showing.",
"points": {
"score": 5,
"max_score": 7
}
}
},
{
"id": 10813990,
"name": "Bowen, James",
"task_works": [
{
"id": 11861277,
"template_id": 54,
"submission_status": "submitted"
},
{
"id": 11861277,
"template_id": 55,
"submission_status": "submitted"
}
],
"assessments": {
"comments": "Great analysis, but your writing needs to be more concise.",
"points": {
"score": 5,
"max_score": 7
}
}
},
{
"id": 11183705,
"name": "Howard, Jessica",
"task_works": [
{
"id": 11861277,
"template_id": 54,
"submission_status": "waiting"
},
{
"id": 11861277,
"template_id": 55,
"submission_status": "submitted"
}
],
"assessments": {
"comments": null,
"points": {
"score": null,
"max_score": 7
}
}
},
{
"id": 12068760,
"name": "Boyd, Keith",
"task_works": [],
"assessments": {
"comments": null,
"points": {
"score": null,
"max_score": 7
}
}
},
{
"id": 12472028,
"name": "McNeil, Ian",
"task_works": [],
"assessments": {
"comments": null,
"points": {
"score": null,
"max_score": 7
}
}
}
]
}Destroys a grade for a specific student on a given task. There is no undo. Applies to all Students if no student_ids are provided.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for a task.
List of student IDs whose grades and submissions will be reset
Success
Unique identifier for a student in ManageBac
12343Response status for a student
unprocessable_entityError details if any
Unauthorized
Not Found
DELETE /v2p0/tasks/{task_id}/students HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 29
{
"student_ids": [
12345,
67890
]
}[
{
"id": 12343,
"status": "unprocessable_entity",
"error": {}
}
]Last updated