Teachers
Teachers are users who use ManageBac to delivery curriculum
Updates or replaces a teacher's avatar image. Accepts either a remote URL or a direct file upload.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for a teacher.
Success
Unauthorized
Not Found
Bad Request
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"
}Deletes a teacher's avatar image. This action cannot be undone.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for a teacher.
Success
Unauthorized
Not Found
DELETE /v2/teachers/{id}/avatar HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"status": "ok"
}Retrieves all teacher records for the school. Returns personal details, contact information, and program assignments. Results are paginated.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Return only records with the given IDs.
Return only archived (1) or only active (0) teachers. If value is not specified, all teachers are returned.
An ISO 8601 timestamp to filter results by modification date. Only records updated at or after this time are returned.
An integer defining which page to display. Defaults to 1.
An integer defining the number of records to display per page. Defaults to 100.
An ISO 8601 timestamp to filter by deletion date. Returns soft-deleted records removed at or after this time.
A search string matched against first name, last name, middle name, nickname, other name, and email.
Success
Unauthorized
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
}
}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.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Success
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
}
}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"
}
}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.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for a teacher.
Success
Unauthorized
Not Found
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"
}
}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.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the teacher to update.
Success
Unauthorized
Not Found
Unprocessable Content
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"
}
}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.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the teacher to archive.
Success
Unauthorized
Not Found
PUT /v2/teachers/{id}/archive HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"status": "ok"
}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.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the teacher to unarchive.
Success
Unauthorized
Not Found
PUT /v2/teachers/{id}/unarchive HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"status": "ok"
}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.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the teacher.
Filter by whether the teacher is shown on reports for each class. Defaults to true.
trueFilter by class archived status. Defaults to false (active classes only).
falseSuccess
Unauthorized
Not Found
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
}
]
}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.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for the teacher.
Filter by group archived status. Defaults to false (active groups only).
falseSuccess
Unauthorized
Not Found
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
}
]
}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.
OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as Bearer <token>.
Unique identifier for a teacher.
No Content
No content
Unauthorized
Not Found
POST /v2/teachers/{id}/welcome_email HTTP/1.1
Host: api.managebac.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Last updated