Overview
Read-only JSON endpoint that returns the students in your school with their classes, custom fields and related contacts — the same records as the student list in the app.
Authentication
Authenticate with the school's API key. Pass it either way:
Header: X-API-KEY: <school_api_key>
Query: ?apikey=<school_api_key>
The key identifies the school. Responses are automatically scoped to that school; there is no school_id parameter. We recommend the header form: keys passed in a URL can end up in server or proxy logs.
See Getting and using your API key if you don't have a key yet.
Endpoint
POST /api/v1/student
The older path /globalApis/student_list still works and returns the same response.
Parameters go in the request body, not the query string. Only the API key can be passed as a query parameter.
Parameters
Param | Type | Notes |
| integer | One student id. Omit → all students. |
| integer |
|
| string | Matches name, identification number, gender, email, phone, country or payment method. |
| integer | Records per page. Default 20. |
| integer | Page number. Default 1. |
Archived students are never returned.
Example
curl -H "X-API-KEY: YOUR_KEY" -d "per_page=25&active=1" "https://app.teachngo.com/api/v1/student"
Response
{
"status": "success",
"totalRecords": 245,
"limit": 25,
"page": 1,
"totalPages": 10,
"next": 2,
"previous": null,
"data": [
{
"id": 12345,
"identification_number": "S-0042",
"fname": "Jane",
"lname": "Doe",
"email_address": "jane@example.com",
"street_name_and_number": "1 Example Street",
"area": "Example Area",
"city": "Example City",
"postcode": "A00 B1C2",
"country_code": "IE",
"whole_address": "1 Example Street, Example Area, Example City, A00 B1C2, Ireland",
"custom_fields": {"Year group": "Senior"},
"classes": [],
"related_contacts": [
{
"id": 67890,
"fname": "Mary",
"lname": "Doe",
"relationship": "guardian",
"email_address": "mary@example.com",
"mobile_phonecode": "353",
"mobile_phone": "871234567",
"subscribed_to_notifications": true
}
]
}
]
}
Field reference
The address is returned as separate components as well as one combined string, so you can report on any part of it.
Field | Meaning |
| The student's Teach 'n Go id |
| Your own student reference, if your school uses them |
| Address lines |
| Area or district — this is where a county is usually recorded |
| Town or city |
| Postcode or Eircode |
| Two-letter country code, for example |
| All of the above joined into one string |
| Your school's custom fields, keyed by field name |
| The classes the student is enrolled in, with enrolment and unenrolment dates |
| The contacts linked to this student — see below |
| How many classes are in |
Related contacts
Each student carries a related_contacts list. A student can have several, so this is always an array — empty if the student has none.
Field | Meaning |
| The related contact's Teach 'n Go id — stable, use it to match across calls |
| How they relate to the student, for example |
| The contact's name |
| Your own contact reference, if used |
| Contact details, with |
| Company name, if recorded |
| The contact's address as one string |
| Free-text notes on the contact |
|
|
Tracking equipment or assets? Some schools create a student record per item, set a custom field such as Profile Type to Asset, and use the related contact to record who currently holds it. The related_contacts list is what tells you that.
Pagination and errors
The response wraps the records in totalRecords, limit, page, totalPages, next and previous. See API error codes and pagination.