For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

get
/v2/classes/{class_id}/assessments/term/{term_id}/grades

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.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
class_idintegerRequired

Unique identifier for the class.

term_idintegerRequired

Unique identifier for the academic term.

Query parameters
student_idsinteger[]Optional

Filter results to specific students. Accepts repeated params or a comma-separated string.

Example: student_ids=1,2,3 OR student_ids[]=1&student_ids[]=2
include_archived_studentsbooleanOptional

When true, includes students who have been archived (graduated or withdrawn). Defaults to false.

Responses
200

Success

application/json
get/v2/classes/{class_id}/assessments/term/{term_id}/grades
GET /v2/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
  }
}

Get Term Grades for a Class

get
/v2/classes/{class_id}/assessments/term/{term_id}/term-grades

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.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
class_idintegerRequired

Unique identifier for the class.

term_idintegerRequired

Unique identifier for the academic term.

Query parameters
student_idsinteger[]Optional

Filter results to specific students. Accepts repeated params or a comma-separated string.

include_archived_studentsbooleanOptional

When true, includes students who have been archived (graduated or withdrawn). Defaults to false.

unenrolled_onlybooleanOptional

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.

Responses
200

Success

application/json
get/v2/classes/{class_id}/assessments/term/{term_id}/term-grades
GET /v2/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
  }
}

Get Criteria for a Class

get
/v2/classes/{id}/criteria

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.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
idintegerRequired

Unique identifier for class.

Responses
200

Success

application/json
get/v2/classes/{id}/criteria
GET /v2/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."
        }
      ]
    }
  ]
}

Get Task Categories for Class

get
/v2/classes/{id}/task_categories

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.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
idintegerRequired

Unique identifier for class.

Responses
200

Success

application/json
get/v2/classes/{id}/task_categories
GET /v2/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

get
/v2/classes/{class_id}/tasks/{task_id}/submissions/{student_id}/files/{asset_id}

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.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
class_idintegerRequired

Unique identifier for the class.

task_idintegerRequired

Unique identifier for the task.

student_idintegerRequired

Unique identifier for the student.

asset_idintegerRequired

Unique identifier for the file.

Responses
302

Redirect to signed file URL

No content

get/v2/classes/{class_id}/tasks/{task_id}/submissions/{student_id}/files/{asset_id}
GET /v2/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

List Student Submissions for a Task

get
/v2/classes/{class_id}/tasks/{task_id}/submissions

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.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
class_idintegerRequired

Unique identifier for the class.

task_idintegerRequired

Unique identifier for the task.

Query parameters
modified_sincestringOptional

ISO 8601 timestamp; returns only submissions whose underlying file or task work was updated strictly after this time.

pageintegerOptional

Page number (default 1).

per_pageintegerOptional

Items per page (default 100, min 1, max 500).

Responses
200

Success

application/json
get/v2/classes/{class_id}/tasks/{task_id}/submissions
GET /v2/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
  }
}

Get a Single Student Submission

get
/v2/classes/{class_id}/tasks/{task_id}/submissions/{student_id}

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.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
class_idintegerRequired

Unique identifier for the class.

task_idintegerRequired

Unique identifier for the task.

student_idintegerRequired

Unique identifier for the student.

Responses
200

Success

application/json
get/v2/classes/{class_id}/tasks/{task_id}/submissions/{student_id}
GET /v2/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"
      }
    ]
  }
}

Get Tasks for a Class

get
/v2/classes/{id}/tasks

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, assigned students, and scoring configuration.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
idintegerRequired

Unique identifier for class.

Query parameters
term_idintegerOptional

Unique identifier for term.

Responses
200

Success

application/json
get/v2/classes/{id}/tasks
GET /v2/classes/{id}/tasks HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "tasks": [
    {
      "id": 22301859,
      "name": "Test Task #1",
      "notes": "",
      "author": {
        "id": 10193613
      },
      "enable_dropbox": true,
      "draft": false,
      "assessment_type": {
        "id": 17,
        "kind": "summative",
        "name": "Summative"
      },
      "category": {
        "id": 1848,
        "name": "Homework"
      },
      "dropbox_id": 11099399,
      "google_drive_dropbox": false,
      "ib_class_id": 10342450460,
      "assigned_students": [
        11084604,
        10193652,
        10241839
      ],
      "due_date": "2025-05-08T21:10:00+03:00",
      "turnitin": false,
      "hide_assessment_results": false,
      "assessments": {
        "points": {
          "title": "Points",
          "max_points": 10
        }
      }
    },
    {
      "id": 22301866,
      "name": "Test Task #2",
      "notes": "",
      "author": {
        "id": 10193613
      },
      "enable_dropbox": false,
      "draft": false,
      "assessment_type": {
        "id": 17,
        "kind": "summative",
        "name": "Summative"
      },
      "category": {
        "id": 1848,
        "name": "Homework"
      },
      "google_drive_dropbox": false,
      "ib_class_id": 10342450460,
      "assigned_students": [],
      "due_date": "2025-05-22T16:00:00+03:00",
      "turnitin": false,
      "hide_assessment_results": false,
      "assessments": {
        "points": {
          "title": "Points",
          "max_points": 12
        }
      }
    },
    {
      "id": 22301867,
      "name": "Test Task #3",
      "notes": "Test",
      "author": {
        "id": 10193613
      },
      "enable_dropbox": false,
      "draft": false,
      "assessment_type": {
        "id": 18,
        "kind": "formative",
        "name": "Formative"
      },
      "category": {
        "id": 1884,
        "name": "Homework"
      },
      "google_drive_dropbox": false,
      "ib_class_id": 10342450460,
      "assigned_students": [],
      "due_date": "2025-05-23T15:10:00+03:00",
      "turnitin": true,
      "hide_assessment_results": false,
      "assessments": {
        "binary": {
          "title": "Binary"
        },
        "points": {
          "title": "Points",
          "max_points": 150
        },
        "criteria": {
          "title": "Criteria",
          "criterions": [
            24
          ]
        }
      }
    }
  ],
  "meta": {
    "current_page": 1,
    "total_pages": 1,
    "total_count": 3,
    "per_page": 100
  }
}

Get a Task for a Class

get
/v2/classes/{class_id}/tasks/{id}

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, and assigned students.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
idintegerRequired

Unique identifier for task.

class_idintegerRequired

Unique identifier for class.

Responses
200

Success

application/json
get/v2/classes/{class_id}/tasks/{id}
GET /v2/classes/{class_id}/tasks/{id} HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "task": {
    "id": 22301867,
    "name": "Test Task #3",
    "notes": "Test",
    "draft": false,
    "task_type": "formative",
    "task_type_name": "Formative",
    "linked_to": {
      "class_id": 10299022,
      "task_id": 11921323
    },
    "dropbox": false,
    "google_drive_dropbox": false,
    "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": true,
    "hide_assessment_results": false,
    "due_date": "2025-05-23T15:10:00+03:00",
    "unit": {
      "id": 67396,
      "title": "Dynamics & Kinematics"
    },
    "hl": true,
    "sl": true,
    "category": {
      "id": 1884,
      "name": "Homework",
      "weight": 20
    },
    "assessment_types": {
      "comments": {},
      "points": {
        "max_score": 7
      }
    },
    "author": {
      "id": 10193613
    },
    "enable_dropbox": false,
    "assessment_type": {
      "id": 18,
      "kind": "formative",
      "name": "Formative"
    },
    "ib_class_id": 10342450460,
    "assigned_students": [],
    "assessments": {
      "binary": {
        "title": "Binary"
      },
      "points": {
        "title": "Points",
        "max_points": 150
      },
      "criteria": {
        "title": "Criteria",
        "criterions": [
          24
        ]
      }
    }
  }
}

Update a Task for a Class

put
/v2/classes/{class_id}/tasks/{id}

This endpoint updates a task for a class as specified by class ID and task ID.

All task attributes can be modified including assessment configurations, assigned students, dropbox settings, and unit associations.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
class_idintegerRequired

Unique identifier for class.

idintegerRequired

Unique identifier for task.

Body
Responses
200

Success

application/json
put/v2/classes/{class_id}/tasks/{id}
PUT /v2/classes/{class_id}/tasks/{id} HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 601

{
  "core_task": {
    "author_id": 42,
    "name": "Math Assignment #1",
    "due_date": "2025-10-01T12:00:00",
    "assessment_type_id": 3,
    "task_category_id": 5,
    "notify_group": true,
    "notify_parents": false,
    "unit_id": 101,
    "lesson_experience_id": 202,
    "hl": true,
    "sl": false,
    "notes": "This is a note for the task.",
    "enable_dropbox": true,
    "enable_turnitin": true,
    "dropbox_opening_days": 3,
    "assigned_student_ids": [
      12345
    ],
    "draft": false,
    "hide_assessment_results": false,
    "phase": 1,
    "assessments": {
      "criteria": {
        "enabled": true,
        "criterion_ids": [
          25324
        ]
      },
      "points": {
        "enabled": true,
        "max_points": 100
      },
      "binary": {
        "enabled": false
      },
      "comment": {
        "enabled": true
      }
    }
  }
}
{
  "task": {
    "id": 22301936,
    "name": "Updated Test Task #3",
    "notes": "This is an updated task.",
    "author": {
      "id": 10193613
    },
    "dropbox_opening_days": 3,
    "enable_dropbox": true,
    "draft": false,
    "assessment_type": {
      "id": 18,
      "kind": "formative",
      "name": "Formative"
    },
    "category": {
      "id": 1884,
      "name": "Homework"
    },
    "dropbox_id": 11099448,
    "google_drive_dropbox": false,
    "ib_class_id": 10342450460,
    "unit_id": 172,
    "lesson_experience_id": 22,
    "assigned_students": [
      11084385
    ],
    "due_date": "2025-05-23T15:10:00+03:00",
    "turnitin": true,
    "hide_assessment_results": false,
    "assessments": {
      "points": {
        "title": "Points",
        "max_points": 50
      },
      "criteria": {
        "title": "Criteria",
        "criterions": [
          24
        ]
      },
      "comment": {
        "title": "Comment"
      }
    }
  }
}

Delete a Task for a Class

delete
/v2/classes/{class_id}/tasks/{id}

This endpoint deletes a task for a class as specified by class ID and task ID.

Once deleted, the task and all associated assessment data are permanently removed.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
class_idintegerRequired

Unique identifier for class.

idintegerRequired

Unique identifier for task.

Responses
204

No Content

No content

delete/v2/classes/{class_id}/tasks/{id}
DELETE /v2/classes/{class_id}/tasks/{id} HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*

No content

Partially Update a Task for a Class

patch
/v2/classes/{class_id}/tasks/{id}

This endpoint partially updates a task. Only fields present in the request body are changed; omitted fields retain their current values. Send a field as null to explicitly clear it.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
class_idintegerRequired

Unique identifier for class.

idintegerRequired

Unique identifier for task.

Body
Responses
200

Omitting required fields succeeds on PATCH

application/json
patch/v2/classes/{class_id}/tasks/{id}
PATCH /v2/classes/{class_id}/tasks/{id} HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 601

{
  "core_task": {
    "author_id": 42,
    "name": "Math Assignment #1",
    "due_date": "2025-10-01T12:00:00",
    "assessment_type_id": 3,
    "task_category_id": 5,
    "notify_group": true,
    "notify_parents": false,
    "unit_id": 101,
    "lesson_experience_id": 202,
    "hl": true,
    "sl": false,
    "notes": "This is a note for the task.",
    "enable_dropbox": true,
    "enable_turnitin": true,
    "dropbox_opening_days": 3,
    "assigned_student_ids": [
      12345
    ],
    "draft": false,
    "hide_assessment_results": false,
    "phase": 1,
    "assessments": {
      "criteria": {
        "enabled": true,
        "criterion_ids": [
          25324
        ]
      },
      "points": {
        "enabled": true,
        "max_points": 100
      },
      "binary": {
        "enabled": false
      },
      "comment": {
        "enabled": true
      }
    }
  }
}
{
  "task": {
    "id": 22301936,
    "name": "Updated Test Task #3",
    "notes": "This is an updated task.",
    "author": {
      "id": 10193613
    },
    "dropbox_opening_days": 3,
    "enable_dropbox": true,
    "draft": false,
    "assessment_type": {
      "id": 18,
      "kind": "formative",
      "name": "Formative"
    },
    "category": {
      "id": 1884,
      "name": "Homework"
    },
    "dropbox_id": 11099448,
    "google_drive_dropbox": false,
    "ib_class_id": 10342450460,
    "unit_id": 172,
    "lesson_experience_id": 22,
    "assigned_students": [
      11084385
    ],
    "due_date": "2025-05-23T15:10:00+03:00",
    "turnitin": true,
    "assessments": {
      "points": {
        "title": "Points",
        "max_points": 50
      },
      "criteria": {
        "title": "Criteria",
        "criterions": [
          24
        ]
      },
      "comment": {
        "title": "Comment"
      }
    }
  }
}

Get Student Assessment Results for a Task and Class

get
/v2/classes/{class_id}/tasks/{id}/students

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 enabled

  • criteria - per-criterion results for criteria-based tasks (MYP criteria, rubric criteria, IB Assessment criteria filtered by the student's HL/SL level). Each item carries id, label (criterion letter; empty when the title has no letter prefix), criterion (title), score (null until graded, "N/A" when not applicable) and not_applicable. criterion differs by system: on rubric criteria it is the full title as the school entered it, so it usually still includes the letter in label (criterion: "Criterion A: Knowledge and understanding"), while MYP and IB Assessment titles have that letter stripped (criterion: "Analysing"). Joining label and criterion therefore 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. id is the criterion's id, shared with /classes/{id}/criteria for MYP and rubric criteria whenever that endpoint lists the criterion; IB Assessment items carry the IB criterion id, which that endpoint never lists.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
idintegerRequired

Unique identifier for task.

class_idintegerRequired

Unique identifier for class.

Query parameters
student_idsinteger[]Optional

List of student ids. Accepts repeated params or a comma-separated string.

Example: student_ids=1,2,3 OR student_ids[]=1&student_ids[]=2
Responses
200

Success

application/json
get/v2/classes/{class_id}/tasks/{id}/students
GET /v2/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
        }
      }
    }
  ]
}

Bulk Delete Grades for Students for a Task

delete
/v2/tasks/{task_id}/students

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.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
task_idintegerRequired

Unique identifier for a task.

Body
student_idsinteger[]Optional

List of student IDs whose grades and submissions will be reset

Responses
200

Success

application/json
idintegerOptional

Unique identifier for a student in ManageBac

Example: 12343
statusstringOptional

Response status for a student

Example: unprocessable_entity
errorobjectOptional

Error details if any

delete/v2/tasks/{task_id}/students
DELETE /v2/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": {}
  }
]

Create a Task for a Class

post
/v2/classes/{class_id}/tasks

This endpoint creates a task for a class as specified by class ID.

The request body must include the task attributes such as author, due date, assessment type, and category. Optionally, assigned students and assessment configurations (points, criteria, binary, comment) can be specified.

Authorizations
AuthorizationstringRequired

OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.

Path parameters
class_idintegerRequired

Unique identifier for class.

Body
Responses
201

Created

application/json
post/v2/classes/{class_id}/tasks
POST /v2/classes/{class_id}/tasks HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 601

{
  "core_task": {
    "author_id": 42,
    "name": "Math Assignment #1",
    "due_date": "2025-10-01T12:00:00",
    "assessment_type_id": 3,
    "task_category_id": 5,
    "notify_group": true,
    "notify_parents": false,
    "unit_id": 101,
    "lesson_experience_id": 202,
    "hl": true,
    "sl": false,
    "notes": "This is a note for the task.",
    "enable_dropbox": true,
    "enable_turnitin": true,
    "dropbox_opening_days": 3,
    "assigned_student_ids": [
      12345
    ],
    "draft": false,
    "hide_assessment_results": false,
    "phase": 1,
    "assessments": {
      "criteria": {
        "enabled": true,
        "criterion_ids": [
          25324
        ]
      },
      "points": {
        "enabled": true,
        "max_points": 100
      },
      "binary": {
        "enabled": false
      },
      "comment": {
        "enabled": true
      }
    }
  }
}
{
  "task": {
    "id": 22301936,
    "name": "Test Task #3",
    "notes": "This is a created task.",
    "author": {
      "id": 10193613
    },
    "dropbox_opening_days": 0,
    "enable_dropbox": true,
    "draft": false,
    "assessment_type": {
      "id": 18,
      "kind": "formative",
      "name": "Formative"
    },
    "category": {
      "id": 1884,
      "name": "Homework"
    },
    "dropbox_id": 11099448,
    "google_drive_dropbox": false,
    "ib_class_id": 10342450460,
    "assigned_students": [
      11084385,
      10734007
    ],
    "due_date": "2025-05-23T15:10:00+03:00",
    "turnitin": true,
    "hide_assessment_results": false,
    "assessments": {
      "binary": {
        "title": "Binary"
      },
      "points": {
        "title": "Points",
        "max_points": 25
      },
      "criteria": {
        "title": "Criteria",
        "criterions": [
          24
        ]
      },
      "comment": {
        "title": "Comment"
      }
    }
  }
}

Last updated