Overview
Read-only, pollable JSON endpoint that returns each active teacher's availability windows and the recurring weekly time slots within them.
Authentication
Authenticate with the school's API key (the same key the existing students_attendance endpoint uses). Pass it either way:
Header: X-API-KEY: <school_api_key> Query: ?apikey=<school_api_key>
The key identifies the school, so every response is automatically scoped to that school — there is no school_id parameter and no cross-school data leakage.
Endpoint
GET /globalApis/teacher_availability
There is no webhook/push — polling is the supported pattern (see below).
Parameters
Param | Type | Notes |
| string | One or comma-separated. Omit → all active teachers. Invalid → empty. |
| YYYY-MM-DD | Optional. Window-overlap filter (NULL-tolerant for open-ended windows). |
| YYYY-MM-DD | Optional. |
| YYYY-MM-DD HH:MM:SS | Optional. Returns only teachers whose window or one of its slots changed since this time. |
Examples
# Full pull curl -H "X-API-KEY: YOUR_KEY" \ "https://app.teachngo.com/globalApis/teacher_availability?teacher_id=678"# Incremental: reuse the previous response's meta.server_time curl -H "X-API-KEY: YOUR_KEY" \ "https://app.teachngo.com/globalApis/teacher_availability?modified_since=2026-06-26%2009:00:00"
Response
{
"status": "success",
"meta": { "server_time": "2026-06-26 10:15:03" },
"data": [{
"date_id": 55,
"teacher_id": 678,
"teacher_name": "John Smith",
"start_date": "2026-06-01",
"end_date": null,
"created": "2026-06-01 08:00:00",
"modified": "2026-06-20 11:30:00",
"times": [{
"id": 91,
"day": "Monday",
"day_no": 1,
"start_time": "09:00",
"end_time": "12:00",
"modified": "2026-06-20 11:30:00"
}]
}]
}
Field Reference
Field | Meaning |
| Availability window id |
| The teacher |
| Window range ( |
| Window audit timestamps |
| Recurring weekly slots in the window |
| Weekday name and number (1 = Monday) |
| Slot time (HH:MM) |
Polling Pattern
First call with no
modified_since→ storemeta.server_timefrom the response.Next call pass
modified_since=<that server_time>→ only changed teachers come back.
Caveat: a hard-deleted slot is not detectable via modified_since alone. When a teacher appears in a delta response, re-fetch that teacher's full window to reconcile any removed slots.