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

Teachers

Teachers are users who use ManageBac to delivery curriculum

Update Teacher Avatar

put
/v2/teachers/{id}/avatar

Updates or replaces a teacher's avatar image. Accepts either a remote URL or a direct file upload.

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 a teacher.

Body
avatarany ofOptional
or
Responses
200

Success

application/json
put/v2/teachers/{id}/avatar
PUT /v2/teachers/{id}/avatar HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 37

{
  "avatar": {
    "remote_file_url": "text"
  }
}
{
  "status": "ok"
}

Delete Teacher Avatar

delete
/v2/teachers/{id}/avatar

Deletes a teacher's avatar image. This action cannot be undone.

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 a teacher.

Responses
200

Success

application/json
delete/v2/teachers/{id}/avatar
DELETE /v2/teachers/{id}/avatar HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "ok"
}

Get all Teachers

get
/v2/teachers

Retrieves all teacher records for the school. Returns personal details, contact information, and program assignments. Results are paginated.

Authorizations
AuthorizationstringRequired

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

Query parameters
ids[]integer[]Optional

Return only records with the given IDs.

archivedbooleanOptional

Return only archived (1) or only active (0) teachers. If value is not specified, all teachers are returned.

modified_sincestringOptional

An ISO 8601 timestamp to filter results by modification date. Only records updated at or after this time are returned.

pagestringOptional

An integer defining which page to display. Defaults to 1.

per_pagestringOptional

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

deleted_sincestringOptional

An ISO 8601 timestamp to filter by deletion date. Returns soft-deleted records removed at or after this time.

qstringOptional

A search string matched against first name, last name, middle name, nickname, other name, and email.

Responses
200

Success

application/json
get/v2/teachers
GET /v2/teachers HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "teachers": [
    {
      "id": 2139,
      "email": "396-bhudson@photobean.edu",
      "first_name": "Kevin",
      "last_name": "Reyes",
      "archived": false,
      "ui_language": "en",
      "gender": "Male",
      "timezone": "Europe/Kyiv",
      "last_accessed_at": "2021-02-25T08:13:03.000-08:00",
      "street_address": "5 Dovetail Crossing",
      "city": "Montclair",
      "state": "18956",
      "zipcode": "73571-3710",
      "country": "SY",
      "programs": [],
      "nationalities": [],
      "languages": [],
      "role": "Advisor",
      "identifier": "AA1001"
    }
  ],
  "meta": {
    "current_page": 1,
    "total_pages": 1,
    "total_count": 1,
    "per_page": 100
  }
}

Create New Teacher

post
/v2/teachers

This endpoint creates a new teacher record. Note, the Content-Type header must be set to application/json, and the request body should contain the field structure as a JSON payload. Only users with admin role are able to create users. Pass options[send_welcome_email]: true to enqueue a welcome email (with password-set link) to the new teacher. Defaults to false.

Authorizations
AuthorizationstringRequired

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

Body
Responses
201

Success

application/json
teacherany ofOptional
or
post/v2/teachers
POST /v2/teachers HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 563

{
  "teacher": {
    "email": "richard.chandler@eduvo.com",
    "first_name": "Richard",
    "middle_name": "David",
    "password": "qwerty9876",
    "last_name": "Chandler",
    "nickname": "Ricky",
    "other_name": "",
    "identifier": "AA1001",
    "gender": "Male",
    "birthday": "1972-10-24",
    "phone_number": "977 840-2231",
    "mobile_phone_number": "977 840-2231",
    "street_address": "301 Massachusetts Ave",
    "street_address_ii": "",
    "city": "Lunenburg",
    "state": "Virginia",
    "zipcode": "1462",
    "country": "United States",
    "nationalities": [
      "US",
      "GB"
    ],
    "languages": [
      "ENG"
    ],
    "timezone": "Europe/Kyiv"
  },
  "options": {
    "send_welcome_email": false
  }
}
201

Success

{
  "teacher": {
    "id": 2144,
    "email": "john.epelbaum@eduvo.com",
    "first_name": "John",
    "last_name": "Epelbaum",
    "archived": false,
    "ui_language": "en",
    "programs": [],
    "nationalities": [],
    "languages": [],
    "role": "Advisor",
    "identifier": "AA1001"
  },
  "options": {
    "welcome_email": "enqueued"
  }
}

Get a Teacher

get
/v2/teachers/{id}

Retrieves a single teacher record by ID. Returns personal details, contact information, and program assignments. Fields with null values are omitted from the response, but empty arrays (such as programs, languages, nationalities) are always included.

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 a teacher.

Responses
200

Success

application/json
teacherany ofOptional
or
get/v2/teachers/{id}
GET /v2/teachers/{id} HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "teacher": {
    "id": 2142,
    "email": "399-kalexander@voomm.com",
    "first_name": "Marie",
    "last_name": "Fowler",
    "archived": false,
    "ui_language": "en",
    "gender": "Male",
    "timezone": "Etc/UTC",
    "last_accessed_at": "2021-02-25T08:13:03.000-08:00",
    "street_address": "70 Morning Trail",
    "city": "Livermore",
    "state": "82919-3933",
    "zipcode": "28638",
    "country": "RO",
    "programs": [],
    "nationalities": [],
    "languages": [],
    "role": "Advisor",
    "identifier": "AA1001"
  }
}

Update a Teacher

patch
/v2/teachers/{id}

Updates an existing teacher record by ID. The Content-Type header must be set to application/json, and the request body should contain only the fields you want to update. Only API tokens with admin permissions can update users. The role field is read-only and cannot be changed. The oa_id and sb_id integration fields can only be set by SchoolsBuddy-extension tokens and cannot be changed once set.

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 the teacher to update.

Body
Responses
200

Success

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

{
  "teacher": {
    "email": "richard.chandler@eduvo.com",
    "first_name": "Richard",
    "middle_name": "David",
    "password": "qwerty9876",
    "last_name": "Chandler",
    "nickname": "Ricky",
    "other_name": "",
    "identifier": "AA1001",
    "gender": "Male",
    "birthday": "1972-10-24",
    "phone_number": "977 840-2231",
    "mobile_phone_number": "977 840-2231",
    "street_address": "301 Massachusetts Ave",
    "street_address_ii": "",
    "city": "Lunenburg",
    "state": "Virginia",
    "zipcode": "1462",
    "country": "United States",
    "nationalities": [
      "US",
      "GB"
    ],
    "languages": [
      "ENG"
    ],
    "timezone": "Europe/Kyiv"
  }
}
{
  "teacher": {
    "id": 2147,
    "email": "s.banderad@eduvo.com",
    "first_name": "Sharon",
    "last_name": "Arese",
    "archived": false,
    "ui_language": "en",
    "gender": "Male",
    "timezone": "Etc/UTC",
    "last_accessed_at": "2021-02-25T08:13:03.000-08:00",
    "street_address": "9 Lindbergh Center",
    "city": "Hawthorne",
    "state": "86249",
    "zipcode": "55539",
    "country": "NR",
    "programs": [],
    "nationalities": [],
    "languages": [],
    "role": "Advisor",
    "identifier": "AA1001"
  }
}

Archive a Teacher

put
/v2/teachers/{id}/archive

Archives a teacher record by ID. Archiving removes the teacher from all classes and groups they are members of. The teacher record is retained but marked as archived. To reverse this operation, use the Unarchive endpoint.

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 the teacher to archive.

Responses
200

Success

application/json
put/v2/teachers/{id}/archive
PUT /v2/teachers/{id}/archive HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "ok"
}

Unarchive a Teacher

put
/v2/teachers/{id}/unarchive

Reverses the archive operation on a teacher record by ID. This restores the teacher to active status, but does not automatically re-enroll them in their previous classes or groups.

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 the teacher to unarchive.

Responses
200

Success

application/json
put/v2/teachers/{id}/unarchive
PUT /v2/teachers/{id}/unarchive HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "ok"
}

Get teacher Classes Memberships

get
/v2/teachers/{id}/classes

Retrieves all class memberships for a given teacher. Each class includes the teacher's Show on Reports status for that membership. Results can be filtered by archived status and Show on Reports flag.

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 the teacher.

Query parameters
show_on_reportsbooleanOptional

Filter by whether the teacher is shown on reports for each class. Defaults to true.

Default: true
archivedbooleanOptional

Filter by class archived status. Defaults to false (active classes only).

Default: false
Responses
200

Success

application/json
get/v2/teachers/{id}/classes
GET /v2/teachers/{id}/classes HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "classes": [
    {
      "id": 1,
      "name": "IB DP Class",
      "uniq_id": "QAZWSXEDC",
      "archived": false,
      "start_term_id": 1234,
      "end_term_id": 1235,
      "show_on_reports": true
    }
  ]
}

Get teacher Groups Memberships

get
/v2/teachers/{id}/groups

Retrieves all group memberships for a given teacher. Groups are non-academic collections of students (e.g., advisory groups, extracurricular clubs). The response indicates whether the teacher is a group advisor and whether they are the primary advisor.

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 the teacher.

Query parameters
archivedbooleanOptional

Filter by group archived status. Defaults to false (active groups only).

Default: false
Responses
200

Success

application/json
get/v2/teachers/{id}/groups
GET /v2/teachers/{id}/groups HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "groups": [
    {
      "id": 1,
      "name": "Art Group",
      "archived": false,
      "primary_group_advisor": false,
      "group_advisor": true
    }
  ]
}

Send Welcome Email to a Teacher

post
/v2/teachers/{id}/welcome_email

This endpoint enqueues a welcome email (with password-set link) for an existing teacher. No request body is required. There is no restriction based on whether the teacher has previously logged in. The endpoint is not idempotent — calling it twice enqueues two emails.

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 a teacher.

Responses
204

No Content

No content

post/v2/teachers/{id}/welcome_email
POST /v2/teachers/{id}/welcome_email HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*

No content

Last updated