Attendance

This group describes all the APIs relating to attendance records

Get Attendance for a Class during an Academic Term

get

This endpoint retrieves summary attendance data for all students within a class as specified by class ID for an academic term as specified by term ID.

Authorizations
Path parameters
idintegerRequired

Unique identifier for class.

term_idintegerRequired

Unique identifier for academic term.

Query parameters
archived_studentsbooleanOptional

Filter students by archived status

Default: false
Responses
200

Success

application/json
get
GET /v2/classes/{id}/attendance/term/{term_id} HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Accept: */*
200

Success

{
  "students": [
    {
      "id": 10193652,
      "attendance": {
        "Present": 91,
        "Absent": 3,
        "Late": 2
      },
      "attendance_categories": [
        {
          "label": "Present",
          "status": 1,
          "value": 90
        },
        {
          "label": "Absent",
          "status": 0,
          "value": 3
        },
        {
          "label": "Late",
          "status": 2,
          "value": 2
        },
        {
          "label": "Present",
          "status": -1,
          "value": 1
        }
      ]
    },
    {
      "id": 10193654,
      "attendance": {
        "Present": 96
      },
      "attendance_categories": [
        {
          "label": "Present",
          "status": 1,
          "value": 95
        },
        {
          "label": "Present",
          "status": -1,
          "value": 1
        }
      ]
    }
  ],
  "timetable": {
    "period_starts_count_from": 0,
    "period_offset": -1
  }
}

Get Class Attendance for a Date

get

This endpoint retrieves summary attendance data for all students on a given date, as specified by class ID. Note, the specified date must be between the class’s start and end dates. A student’s attendance is returned as a sparse array of attendance periods. For further information, see the help article.

Authorizations
Path parameters
idintegerRequired

Unique identifier for class.

datestringRequired

A date string to define required day as yyyy-mm-dd.

Responses
200

Success

application/json
get
GET /v2/classes/{id}/attendance/date/{date} HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Accept: */*
200

Success

{
  "students": [
    {
      "id": 10193652,
      "attendance": {
        "1": {
          "status": "Present",
          "note": "",
          "category": {
            "status": 1
          }
        },
        "5": {
          "status": "Absent",
          "note": "Chloe left after the first period for an appointment.",
          "category": {
            "status": 0
          }
        }
      }
    },
    {
      "id": 10193615,
      "attendance": {
        "1": {
          "status": "Present",
          "note": "",
          "category": {
            "status": 1
          }
        },
        "5": {
          "status": "Present",
          "note": "",
          "category": {
            "status": 1
          }
        }
      }
    }
  ],
  "timetable": {
    "period_starts_count_from": 0,
    "period_offset": -1
  }
}

Get Class Timetable

get

This endpoint retrieves a class timetable specified by class ID.

Authorizations
Path parameters
idintegerRequired

Unique identifier for class.

Query parameters
include_disabledbooleanOptional

Configure response to include or exclude disabled slots.

Responses
200

Success

application/json
get
GET /v2/classes/{id}/timetable HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Accept: */*
200

Success

{
  "timetable": {
    "academic_years": [
      {
        "id": 19,
        "name": "December 2021 – July 2022",
        "start_date": "2021-12-22",
        "end_date": "2022-07-22",
        "period_starts_count_from": 1,
        "slots": [
          {
            "day": 2,
            "period": 1,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 1,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 1,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 1,
            "location": "Classroom E",
            "enabled": true
          },
          {
            "day": 1,
            "period": 3,
            "location": "Classroom A",
            "enabled": true
          },
          {
            "day": 2,
            "period": 3,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 3,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 3,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 3,
            "location": "Classroom E",
            "enabled": true
          },
          {
            "day": 1,
            "period": 4,
            "location": "Classroom A",
            "enabled": true
          },
          {
            "day": 2,
            "period": 4,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 4,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 4,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 4,
            "location": "Classroom E",
            "enabled": true
          },
          {
            "day": 1,
            "period": 5,
            "location": "Classroom A",
            "enabled": true
          },
          {
            "day": 2,
            "period": 5,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 5,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 5,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 5,
            "location": "Classroom E",
            "enabled": true
          },
          {
            "day": 1,
            "period": 6,
            "location": "Classroom A",
            "enabled": true
          },
          {
            "day": 2,
            "period": 6,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 6,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 6,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 6,
            "location": "Classroom E",
            "enabled": true
          }
        ]
      },
      {
        "id": 20,
        "name": "August 2022 – July 2023",
        "start_date": "2022-08-01",
        "end_date": "2023-07-31",
        "period_starts_count_from": 0,
        "slots": [
          {
            "day": 2,
            "period": 0,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 0,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 0,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 0,
            "location": "Classroom E",
            "enabled": true
          },
          {
            "day": 1,
            "period": 1,
            "location": "Classroom A",
            "enabled": true
          },
          {
            "day": 2,
            "period": 1,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 1,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 1,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 1,
            "location": "Classroom E",
            "enabled": true
          },
          {
            "day": 1,
            "period": 3,
            "location": "Classroom A",
            "enabled": true
          },
          {
            "day": 2,
            "period": 3,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 3,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 3,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 3,
            "location": "Classroom E",
            "enabled": true
          },
          {
            "day": 1,
            "period": 4,
            "location": "Classroom A",
            "enabled": true
          },
          {
            "day": 2,
            "period": 4,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 4,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 4,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 4,
            "location": "Classroom E",
            "enabled": true
          },
          {
            "day": 1,
            "period": 5,
            "location": "Classroom A",
            "enabled": true
          },
          {
            "day": 2,
            "period": 5,
            "location": "Classroom B",
            "enabled": true
          },
          {
            "day": 3,
            "period": 5,
            "location": "Classroom C",
            "enabled": true
          },
          {
            "day": 4,
            "period": 5,
            "location": "Classroom D",
            "enabled": true
          },
          {
            "day": 5,
            "period": 5,
            "location": "Classroom E",
            "enabled": true
          }
        ]
      }
    ]
  }
}

Get Homeroom Attendance for a Year Group and Term

get

This endpoint retrieves homeroom attendance for students belonging to a year group. Attendance is retrieved by academic term, as specified by academic term ID.

Authorizations
Path parameters
year_group_idintegerRequired

Unique identifier for year group.

term_idintegerRequired

Unique identifier for academic term.

Query parameters
archived_studentsbooleanOptional

Filter students by archived status

Default: false
Responses
200

Success

application/json
get
GET /v2/year-groups/{year_group_id}/homeroom/attendance/term/{term_id} HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Accept: */*
200

Success

{
  "students": [
    {
      "id": 10193652,
      "attendance": {
        "Present": 57,
        "Late": 2,
        "Absent": 1
      },
      "attendance_categories": [
        {
          "label": "Present",
          "status": 1,
          "value": 56
        },
        {
          "label": "Absent",
          "status": 0,
          "value": 1
        },
        {
          "label": "Late",
          "status": 2,
          "value": 2
        },
        {
          "label": "Present",
          "status": -1,
          "value": 1
        }
      ]
    },
    {
      "id": 12449380,
      "attendance": {
        "Present": 60
      },
      "attendance_categories": [
        {
          "label": "Present",
          "status": 1,
          "value": 59
        },
        {
          "label": "Present",
          "status": -1,
          "value": 1
        }
      ]
    }
  ]
}

Get Homeroom Attendance for a Year Group by Date

get

This endpoint retrieves homeroom attendance for students as specified by year group ID and date.

Authorizations
Path parameters
year_group_idintegerRequired

Unique identifier for year group.

datestringRequired

A date string

Responses
200

Success

application/json
get
GET /v2/year-groups/{year_group_id}/homeroom/attendance/date/{date} HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Accept: */*
200

Success

{
  "students": [
    {
      "id": 10193652,
      "attendance": {
        "status": "Present",
        "note": "",
        "category": {
          "status": -1
        }
      }
    },
    {
      "id": 12449380,
      "attendance": {
        "status": "Absent",
        "note": "Chloe was absent due to a dentist appointment.",
        "category": {
          "status": 0
        }
      }
    }
  ]
}

Get Homeroom Attendance Adjustments for a Year Group and Term

get

This endpoint retrieves Year Group Attendance Adjustments for a reporting term. Attendance adjustments is retrieved by academic term, as specified by academic term ID.

Authorizations
Path parameters
year_group_idintegerRequired

Unique identifier for year group.

term_idintegerRequired

Unique identifier for academic term.

Responses
200

Success

application/json
get
GET /v2/year-groups/{year_group_id}/homeroom/attendance/term/{term_id}/adjustments HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Accept: */*
200

Success

{
  "students": [
    {
      "id": 10949004,
      "attendance_adjustments": [
        {
          "id": 29863,
          "name": "Present",
          "adjustment": 3
        }
      ]
    },
    {
      "id": 10752628,
      "attendance_adjustments": [
        {
          "id": 29870,
          "name": "Absent",
          "adjustment": 2
        },
        {
          "id": 29871,
          "name": "Present",
          "adjustment": 1
        },
        {
          "id": 29872,
          "name": "Late",
          "adjustment": 3
        }
      ]
    }
  ]
}

Get all Attendance Excusals for a student

get

Retrieve Attendance Excusals submitted by a parent for their child. Responses include dates the excusal applies to and comment given as submitted.

Authorizations
Path parameters
student_idintegerRequired

Unique identifier for a student.

Query parameters
applies_onstringOptional

A date string to define required day as yyyy-mm-dd.

pagestringOptional

An integer defining which page to display.

per_pagestringOptional

An integer defining the number of records to display per page.

Responses
200

Success

application/json
get
GET /v2/students/{student_id}/excusals HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Accept: */*
200

Success

{
  "excusals": [
    {
      "id": 1,
      "student_id": 210,
      "parent_id": 176,
      "start_date": "2024-11-28",
      "end_date": "2024-11-28",
      "duration": 1,
      "comment": "Chloe was sick.",
      "created_at": "2024-11-29T10:45:10.000Z",
      "updated_at": "2024-11-29T10:45:10.000Z"
    },
    {
      "id": 2,
      "student_id": 210,
      "parent_id": 176,
      "start_date": "2024-11-27",
      "end_date": "2024-11-29",
      "duration": 3,
      "comment": "Need to travel for a family event",
      "created_at": "2024-11-29T13:40:10.000Z",
      "updated_at": "2024-11-29T18:22:10.000Z"
    },
    {
      "id": 3,
      "student_id": 210,
      "parent_id": 175,
      "start_date": "2025-01-29",
      "end_date": "2025-01-29",
      "duration": 1,
      "comment": "Chloe has a dentist appointment and will be out of school the entire day.",
      "created_at": "2025-01-29T15:56:10.000Z",
      "updated_at": "2025-01-30T12:30:10.000Z"
    }
  ],
  "meta": {
    "current_page": 1,
    "total_pages": 1,
    "total_count": 3,
    "per_page": 100
  }
}

Create Excusal for a Student

post

This endpoint creates an Attendance Excusal for a Student. It returns created Attendance Excusal.

Authorizations
Path parameters
student_idintegerRequired

Unique identifier for a student.

Body
Responses
201

Created

application/json
post
POST /v2/students/{student_id}/excusals HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 112

{
  "excusal": {
    "parent_id": 456,
    "start_date": "2024-06-17",
    "end_date": "2024-06-19",
    "comment": "Doctor's appointment"
  }
}
{
  "excusal": {
    "id": 1,
    "student_id": 210,
    "parent_id": 175,
    "start_date": "2025-01-01",
    "end_date": "2025-01-01",
    "duration": 1,
    "comment": "Chloe was sick.",
    "created_at": "2025-01-01T15:56:10.000Z",
    "updated_at": "2025-01-01T12:30:10.000Z"
  }
}

Delete Excusal for a Student

delete

This endpoint deletes an Attendance Excusal for a Student. It returns deleted Attendance Excusal.

Authorizations
Path parameters
student_idintegerRequired

Unique identifier for a student.

idintegerRequired

Unique identifier for an excusal.

Responses
200

Success

application/json
delete
DELETE /v2/students/{student_id}/excusals/{id} HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Accept: */*
200

Success

{
  "excusal": {
    "id": 1,
    "student_id": 210,
    "parent_id": 175,
    "start_date": "2025-01-01",
    "end_date": "2025-01-01",
    "duration": 1,
    "comment": "Chloe was sick.",
    "created_at": "2025-01-01T15:56:10.000Z",
    "updated_at": "2025-01-01T12:30:10.000Z"
  }
}

Update Excusal for a Student

patch

This endpoint updates an Attendance Excusal for a Student. It returns updated Attendance Excusal.

Authorizations
Path parameters
student_idintegerRequired

Unique identifier for a student.

idintegerRequired

Unique identifier for an excusal.

Body
Responses
200

Success

application/json
patch
PATCH /v2/students/{student_id}/excusals/{id} HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 70

{
  "excusal": {
    "end_date": "2024-06-19",
    "comment": "Doctor's appointment"
  }
}
{
  "excusal": {
    "id": 1,
    "student_id": 210,
    "parent_id": 175,
    "start_date": "2025-01-01",
    "end_date": "2025-01-01",
    "duration": 1,
    "comment": "Chloe was sick.",
    "created_at": "2025-01-01T15:56:10.000Z",
    "updated_at": "2025-01-01T12:30:10.000Z"
  }
}

Set student homeroom attendance

put

Sets student homeroom attendance record. If record doesn't exist, it will be created.

Authorizations
Path parameters
idintegerRequired

Unique identifier for a student.

Body
datestring · dateOptional

Attendance date

statusinteger · enumOptional

Available statuses:
0 - Absent
1 - Present
2 - Late
3 - Dress Code
4 - Late & Dress Code
5 - Dismissed
10 - Health
11 - Sports
12 - Fieldtrip
13 - Excused
14 - Other
15 - Custom 1
16 - Custom 2
17 - Custom 3
18 - Custom 4

Possible values:
notesstringOptional

Attendance notes

Responses
200

Success

application/json
put
PUT /v2/students/{id}/set_homeroom_attendance HTTP/1.1
Host: api.managebac.com
auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 47

{
  "date": "2025-10-06",
  "status": 0,
  "notes": "text"
}
200

Success

{
  "status": "ok"
}

Was this helpful?