Introduction
Welcome
The GO 4 schools API allows you to manage school data within the GO 4 Schools application using conventional HTTP requests. The endpoints are extensive and cover the majority of data we use at GO, allowing you to read from GO and eventually write to GO.
Authentication
Authentication is required for all endpoints. Claims needed are specified within the individual requests. The schools data you wish to access will be responsible for handling your authentication and will grant you access using a key, which will be needed in every request.
Errors
Status Code | Error | Error Message | Description |
---|---|---|---|
400 | Bad Request | Invalid School | The school provided does not exist. |
400 | Bad Request | Invalid Academic Year | The school does not have data for the specified academic year. |
400 | Bad Request | Invalid Report ID | The school does not have data for the specified report. |
400 | Bad Request | Invalid Year Group | The school does not have data for this year group. |
400 | Bad Request | Invalid Cursor | The cursor is less than 0. |
400 | Bad Request | Unknown Attendance Mark | The attendance mark ID provided is not in use for the school and academic year. |
400 | Bad Request | Unknown Attendance Alias Mark | The attendance alias mark ID provided is not in use for the school and academic year or is not associated with the attendance mark ID provided. |
400 | Bad Request | Unknown student UPN | The UPN provided does not belong to a student in the school provided. |
400 | Bad Request | Attendance Invalid Mode | The school does not have the correct Attendance Mode to use the endpoint. |
400 | Bad Request | Unknown session type. | The session type provided is not 'AM' or 'PM'. |
400 | Bad Request | Invalid date. | The date provided is not in the correct format or is invalid. |
400 | Bad Request | Student not at this school. | The student provided is not associated with the school. |
400 | Bad Request | Date school not open. | The date provided for the POST session attendance is a date when the school is not open. |
400 | Bad Request | Staff not at the school. | The ID provided is not a member of staff for this school. |
400 | Bad Request | Invalid model state | Invalid data in packet: Could not convert string to DateTime: 2020-15-14. Path 'date'. |
401 | Unauthorized | The API key is invalid. | |
403 | Forbidden | Module Disabled | The school does not have the specific module. |
403 | Forbidden | Embargo Enabled | The school has enabled the embargo. |
403 | Forbidden | Not Enabled For Bromcom | Endpoint not available for Bromcom schools. |
404 | Not found | The resource could not be found. | |
429 | Too Many Request | Too many requests sent in a given amount of time. | |
500 | Internal server | We had a problem with our server. Please try again later. |
Endpoints
Assessment
GET Markbooks
You need the Assessment-Markbook structure (school.assessment.read) permission to view this endpoint.
Returns the structure of markbooks in the chosen academic year, in terms of the marksheets they contain, and the markslots within each marksheet.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/assessment/markbooks
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 111111,
"marksheets": [
{
"id": 111222,
"name": "R1 Art Concepts",
"markslots": [
{
"id": 111333,
"name": "Assessment 1: Materials",
"max": 2
},
...
]
},
...
]
},
...
]
Markbooks Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the markbook. A subject is associated with a single markbook and they share the same Id. |
marksheets | array | The array of marksheets within a markbook. |
| id | integer | The unique identifier for the marksheet. |
| name | string | The name of the marksheet. |
| markslots | array | The array of markslots within a marksheet. |
| id | integer | The unique identifier for the markslot (assessment). |
| name | string | The name of the markslot. |
| max | integer | The max mark of the markslot. |
GET Marksheets
You need the Assessment-Marksheet Grades (students.assessment.marksheets.read) permission to view this endpoint.
Returns details of the grades achieved by students for individual marksheets.
• Use the GET Markbooks to match this to the name of the marksheet.
• Use the GET Students to get the personal details of the student.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/assessment/marksheet-grades
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"marksheets": [
{
"id": 111222,
"grades": [
{
"student_id": 987654,
"grade": "U"
"alias": "W/T Pass"
},
...
]
},
...
],
"has_more": true,
"cursor": 123
}
Marksheets Object
Name | Type | Description |
---|---|---|
marksheets | array | An array of all marksheets. |
| id | integer | The unique identifier for the marksheet. |
| grades | array | An array of student grades for the marksheet. |
| student_id | integer | The unique identifier for a student. |
| grade | string | Name of the grade recorded. |
| alias | string, nullable | School name of the grade. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
GET Marks
You need the Assessment-Student Marks (students.assessment.markslots.read) permission to view this endpoint.
Returns details of the marks achieved by students for individual marks.
• Use the GET Markbooks to match this to the name of the assessment.
• Use the GET Students to get the personal details of the student.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/assessment/marks
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"markslots": [
{
"id": 111333,
"marks": [
{
"student_id": 987654,
"grade": "5",
"alias": "Significantly Above Average",
"mark": "5.00000"
},
...
]
},
...
],
"has_more": true,
"cursor": 123
}
Marks Object
Name | Type | Description |
---|---|---|
markslots | array | An array of markslots (assessments) within a marksheet. |
| id | integer | The unique identifier for the markslot (assessment). |
| marks | array | An array of student plus awarded grade for an assessment. |
| student_id | integer | The unique identifier for a student. |
| grade | string | The grade awarded. |
| alias | string, nullable | School name of the grade. |
| mark | float | The value of the awarded grade. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
Attainment
GET Grade Types
You need the Attainment-School Grade Types (school.attainment.read) permission to view this endpoint.
Returns details of the available types of headline grades.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
yearGroup | string | year group for the requested data, eg. 'Reception', '11' |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attainment/grade-types/year-group/{yearGroup}
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 1,
"name": "External target",
"short_name": "External target",
"description": "External target",
"is_preferred_progress_grade": false,
"is_preferred_target_grade": true,
},
...
]
Grade Types Object
Name | Type | Description |
---|---|---|
id | integer |
The grade type is one of the 10 grade types that can be configured in GO: 1 = External target 2 = Teacher target 3 = Combined target 4 = Current 5 = Projected 6 = Actual 7 = Honest 8 = Aspirational 9 = Additional target 10 = Baseline grade |
name | string | The name of the grade for this year group. |
short_name | string | The short name of the grade for this year group. |
description | string | The grade description for this year group. |
is_preferred_progress_grade | boolean | Is this grade set as the preferred progress grade for this year group. |
is_preferred_target_grade | boolean | Is this grade set as the preferred target grade for this year group. |
GET Grades
You need the Attainment-Student Grades (students.attainment.read) permission to view this endpoint.
Returns details of the headline grades for students.
• Use the GET Grade Types to determine the grade name.
• Use the GET Students to link to student personal details.
• Use the GET Subjects to determine subject details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
yearGroup | string | year group for the requested data, eg. 'Reception', '11' |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attainment/grades/year-group/{yearGroup}
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"grades": [
{
"grade_type_id": 1,
"subject_id": 222222,
"student_id": 987654,
"name": "5",
"alias": "alias",
},
...
]
}
Grades Object
Name | Type | Description |
---|---|---|
grades | array | Array of grades and student marks for a given grade type. |
| grade_type | integer | One of the 10 grade types that can be configured in GO. |
| subject_id | integer | Unique identifier for a subject. |
| student_id | integer | Unique identifier for a student. |
| name | string | Grade name. |
| alias | string | School name for the grade. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
GET Exam Results
You need the Attainment-Student Exam Results (students.attainment.exam-results.read) permission to view this endpoint.
Returns details of the exam results achieved by students.
• Use the GET Students to link to student personal details.
• Use the GET Subjects to determine subject details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
yearGroup | string | year group for the requested data, eg. 'Reception', '11' |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attainment/exam-results/year-group/{yearGroup}
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"student_id": 987654,
"exam_academic_year": 2019,
"qan": "601/4700/3",
"qualification_title": "Pearson Edexcel Level 1/Level 2 GCSE (9-1) in Mathematics",
"exam_date": "2019-01-31T00:00:00Z",
"grade": "3",
"ks123literal": "3+",
"subject_id": 222222,
},
...
]
Exam Results Object
Name | Type | Description |
---|---|---|
student_id | integer | The unique identifier for a student. |
exam_academic_year | integer | The academic year that the exam was taken by the student. |
qan | string | Qualification Accreditation Number. |
qualification_title | string | The title of the qualification. |
exam_date | date, nullable | The date that the exam was taken. |
grade | string | The grade awarded to the student. |
ks123literal | string | The value of the grade awarded. |
subject_id | integer, nullable | The unique identifier for a subject. |
GET Prior Attainment
You need the Students-Prior Attainment (students.prior-attainment.read) permission to view this endpoint.
Returns prior attainment for students.
• Use GET Students to resolve to personal student personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attainment/prior-attainment
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"prior_attainment": [
{
"code": "priorAttainmentKS2",
"name": "Prior Attainment (KS2)",
"values": [
{
"student_id": 987654,
"value" : "MPA",
"academic_year": 2019,
"date": "2019-01-31T00:00:00Z"
},
...
]
},
...
],
"has_more": true,
"cursor": 123
}
Student Prior Attainment Object
Name | Type | Description |
---|---|---|
prior_attainment | array | Array of prior attainment codes and the values held for each for a student. |
| code | string | The unique system code for the attribute. |
| name | string | The name of the prior attainment attribute. |
| values | array | The array of student values for the particular prior attainment attribute. |
| student_id | integer | The unique identifier for the student. |
| value | string | The value recorded for the student. |
| academic_year | string, nullable | Only populated if this value was timestamped against the requested academic year. |
| date | string, nullable | Timestamped date. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
Attendance
GET Attendance Codes
You need the Attendance-Session Summary (school.attendance.read) permission to view this endpoint.
This returns the Attendance codes and any aliases being used for the academic year.
Route parameters
name | type | description |
---|---|---|
academicYear | number | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attendance/codes
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 12,
"code": "/",
"label": "Present (AM)",
"attendance_officer_only": true,
"protect_if_entered_by_attendance_officer": false,
"protect_if_entered_by_school_manager": false,
"protect_if_entered_by_behaviour_manager": false,
"aliases": [
{
"id": 1522,
"alias_code": "IR",
"alias_label": "Isolation Room"
},
...
]
},
...
]
Attendance Codes Object
Name | Type | Description | |
---|---|---|---|
id | int | The unique identifier for the Attendance Code. This is unique for a school and academic year. It will not be unique across a trust. | |
code | string | The attendance code that staff use to record attendance. | |
label | string | The description of the attendance code. | |
attendance_officer_only | string | Only attendance officers can use this mark. | |
protect_if_entered_by_attendance_officer | string | This mark has protected access if entered by an attendance officer - in this case only an attendance officer may edit it. | |
protect_if_entered_by_school_manager | string | This mark has protected access if entered by a school manager - in this case only an attendance officer or school manager may edit it. | |
protect_if_entered_by_behaviour_manager | string | This mark has protected access if entered by a behaviour manager - in this case only an attendance officer, school manager or behaviour manager may edit it. | |
aliases | array | The array of aliases that are associated to this Attendance codes. | |
| id | int | The unique identifier for the alias. | |
| code | string | The alias code. | |
| label | string | The description of the alias. |
GET Student Session Marks
You need the Attendance-Session marks (students.attendance.session.read) permission to view this endpoint.
This returns attendance details for a particular date.
• Use the GET Attendance codes to translate to attendance codes.
• Use the GET students to get the personal details of the student.
Route parameters
name | type | description |
---|---|---|
academicYear | number | academic year for the requested data |
date | date | used to return data for a particular date. Format expected yyyy-mm-dd. |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attendance/student-session-marks/date/{date}
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"date": "2018-12-31T00:00:00Z",
"session": "AM",
"student_id": 987654,
"session_mark_id": 12,
"session_alias_id": 1522,
"session_minutes_late": 10,
"session_notes": "Bus was late"
},
...
]
Attendance Session Marks Object
Name | Type | Description |
---|---|---|
date | date | The date of the session attendance. |
session | string | Determines the session : one of AM or PM. |
student_id | int | The unique identifier for the student. |
session_mark_id | int | The unique identifier of the attendance mark for the particular session. |
session_alias_id | int, nullable | The unique identifier of the attendance alias mark for the particular session. |
session_minutes_late | int, nullable | The number of minutes late the student was for the particular session. |
session_notes | string, nullable | Notes recorded against the particular session. |
GET Student Lesson Marks
You need the Attendance-Lesson marks (students.attendance.lesson.read) permission to view this endpoint.
This returns attendance details for a particular date.
• Use the GET Attendance codes to translate to attendance codes.
• Use the GET Students to get the personal details of the student.
• Use the GET Class ID to get details of timetabled classes.
Route parameters
name | type | description |
---|---|---|
academicYear | number | academic year for the requested data |
date | date | used to return data for a particular date |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attendance/student-lesson-marks/date/{date}
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"date": "2019-06-25T00:00:00Z",
"student_id": 987654,
"class_id": 123456,
"lesson_mark_id": 4,
"lesson_alias_id": 563,
"lesson_minutes_late": 5,
"lesson_notes": "Parent teacher meeting"
},
...
]
Attendance Lesson Marks Object
Name | Type | Description |
---|---|---|
date | date | The date of the lesson attendance. |
student_id | int | The unique identifier for the student. |
class_id | int | The unique identifier for the class. |
lesson_mark_id | int | The unique identifier for the attendance mark for the lesson. |
lesson_alias_id | int, nullable | The unique identifier for the attendance alias mark for the lesson. |
lesson_minutes_late | int, nullable | The number of minutes late for the lesson. |
lesson_notes | string, nullable | Notes against this lesson attendance. |
GET Students Attendance Summary
You need the Attendance-Session Summary (school.attendance.read) permission to view this endpoint.
This returns summary session data for all students for the academic year up to (but not including) today.
• Use the GET Attendance codes to translate to attendance codes.
• Use the GET students to get the details of the student.
Route parameters
name | type | description |
---|---|---|
academicYear | number | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attendance/student-session-summary
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"student_id": 987654,
"possible_sessions": 338,
"present": 149,
"approved_educational_activity": 124,
"authorised_absence": 65,
"unauthorised_absence": 0,
"attendance_not_required": 0,
"missing_mark": 0,
"late": 4
},
...
]
Student Attendance Summary Object
Name | Type | Description |
---|---|---|
student_id | int | The unique idenitifier for the student. |
possible_sessions | int | The total number of possible session marks. |
present | int | The total number of present session marks. |
approved_educational_activity | int | The total number of AEA session marks. |
authorised_absence | int | The total number of authorsied absence session marks. |
unauthorised_absence | int | The total number of unauthorsied absence session marks. |
attendance_not_required | int | The total number of marks where attendance is not required. |
missing_mark | int | The total number of missing marks. |
late | int | The total number of late session marks (before registration closed). |
POST Student Session Attendance
You need the Attendance - Session marks (write) (students.attendance.session.write) permission to view this endpoint.
Saves the detail for one session for a single student.
Route parameters
name | type | description |
---|---|---|
academicYear | number | academic year for the requested data |
Query parameters
A JSON packet as defined below:
Name | Type | Description | |
---|---|---|---|
attendance | object | A single students attendance object. | |
student_upn | string | Students Unique Pupil Number. | |
date | string | Date of the attendance session. | |
session | string | Whether morning / after session: use 'AM', 'PM'. | |
session_mark_id | string | Attendance code id. | |
session_mark_alias_id | string, nullable | Attendance alias id. | |
session_minutes_late | int, nullable | Minutes late | |
session_notes | string, nullable | Comment | |
student_mis_id | string, nullable | Identifier of the student in the MIS. |
Request
curl -X POST
-H "Authorization: Bearer {ApiKey}"
-H "Content-Type: application/json"
-d '{
"student_upn" : "UPN123456789",
"date" : "2019-01-05",
"session" : "AM",
"session_mark_id" : 1,
"session_mark_alias_id" : null,
"session_minutes_late" : null,
"session_notes" : null,
"student_mis_id" : null
}'
"https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attendance/student-session-marks"
Response
200 OK
Behaviour
GET Follow-up Actions
You need the Behaviour-Behaviour Scheme (school.behaviour.read) permission to view this endpoint.
This returns the current definitions for follow up behaviour actions for the supplied academic year.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/behaviour/actions/follow-up
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 123456,
"name": "Remove student from classroom",
"alias": "Remove",
"type": "Standard"
},
...
]
Follow-up Actions Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the immediate action. |
name | string | The name of the immediate action. |
alias | string, nullable | The name displayed to parents and students for the immediate action. |
type | string | The type of this immediate action: one of Standard or Detention. |
GET Immediate Actions
You need the Behaviour-Behaviour Scheme (school.behaviour.read) permission to view this endpoint.
This returns the current definitions for immediate behaviour actions for the supplied academic year.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/behaviour/actions/immediate
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 123456,
"name": "Remove student from classroom",
"alias": "Remove",
"type": "Standard"
},
...
]
Immediate Actions Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the immediate action. |
name | string | The name of the immediate action. |
alias | string, nullable | The name displayed to parents and students for the immediate action. |
type | string | The type of this immediate action: one of Standard or Detention. |
GET Classification
You need the Behaviour-Behaviour Scheme (school.behaviour.read) permission to view this endpoint.
This returns the current behaviour classification groups for the supplied academic year.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/behaviour/classification
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 123456,
"name": "Disruptive behaviour",
"score": 15
"immediate_actions": [
{
"id": 123456,
"completion_type": "Optional"
},
...
],
"follow_up_actions": [
{
"id": 123456,
"completion_type": "Mandatory"
},
...
]
},
...
]
Classification Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the behaviour classification group. |
name | string | The name of the behaviour classification group. |
score | integer | The severity score of the behaviour classification group. |
immediate_actions | array | The array of immediate actions defined for this event type. |
| id | integer | The unique identifier for the immediate action. |
| completion_type | string | Determines whether immediate action is Mandatory, Recommended or Optional. |
follow_up_actions | array | The array of immediate actions defined for this event type. |
| id | integer | The unique identifier for the follow up action. |
| completion_type | string | Determines whether follow up action is Mandatory, Recommended or Optional. |
GET Event Types
You need the Behaviour-Behaviour Scheme (school.behaviour.read) permission to view this endpoint.
This returns the current definition of the behaviour types for the supplied academic year.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/behaviour/event-types
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 123456,
"classification_id": 1234567,
"code": "DB1",
"name": "First Verbal Warning",
"alias": "FVW",
"significance": "Negative",
"prioritise": false
},
...
]
Event Types Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the event type. |
classification_id | integer | The unique identifier for the classification group that the event type belongs to. |
code | string | The code of the event type. |
name | string | The name of the event type. |
alias | string, nullable | The name displayed to parents and students for the event type. |
significance | string | Significance of the event type: one of Positive, Neutral or Negative. |
prioritise | boolean | Flag whether to prioritise for group behaviour. |
GET Events
You need the Behaviour-Student Behaviour (students.behaviour.read) permission to view this endpoint.
This returns lists of events for a particular date within an academic year.
• Use the GET Event Types to get the characteristics of the event.
• Use the GET Students to get the personal details of the student.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
date | date | used to return data for a particular date ( yyyy-mm-dd ) |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/behaviour/events/date/{date}
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"behaviour_events": [
{
"id": 123456,
"event_type_id": 123456,
"event_date": "2019-01-31T12:45:13Z",
"closed": false,
"cancelled": false,
"room_name": "CP1",
"group_name": "11/CP1",
"subject_code": "Comp",
"year_group": "11",
"home_notes": "Made no effort at all to complete the work despite help being given.",
"school_notes": "Made no effort at all to complete the work despite help being given.",
"created_timestamp": "2020-01-01T00:00:00Z",
"created_by": 123456,
"modified_timestamp": "2020-01-01T00:00:00Z",
"modified_by": 123456,
"student_ids": [
987654,
...
],
"event_action_ids": [
4502,
...
],
"event_followup_type_ids": [
2054,
...
]
},
...
],
"has_more": true,
"cursor": 123
}
Events Object
Name | Type | Description |
---|---|---|
behaviour_events | array | Array of events for specified date. |
| id | integer | The unique identifier for the behaviour event. |
| event_type_id | integer | The unique identifier for the type of behaviour event. |
| event_date | date | UTC date of the event. |
| closed | boolean | Flag to determine whether event is closed. |
| cancelled | boolean | Flag to determine whether the event has been cancelled. |
| room_name | string, nullable | The room where the event took place. |
| group_name | string, nullable | The group name logged against the event. |
| subject_code | string, nullable | The subject code logged against the event. |
| year_group | string, nullable | The year group logged against the event. |
| home_notes | string, nullable | Home notes logged against the event. |
| school_notes | string, nullable | School notes logged against the event. |
| created_timestamp | date | UTC date when the event was created. |
| created_by | integer | Identifier for the member of staff that created the event. |
| modified_timestamp | date, nullable | UTC date when the event was last modified. |
| modified_by | integer, nullable | Identifier for the member of staff that last modified the event. |
| student_ids | array | A list of student identifiers that this event was logged against. |
| event_action_ids | array | A list of immediate actions which are attached to this event. |
| event_followup_type_ids | array | A list of follow-up actions which are attached to this event. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable |
Used to request further data when has_more is true. |
Contacts
GET Parental Contacts
You need the Contacts-Student Parents (students.parents.read) permission to view this endpoint.
Returns the parental contact details for students
• Use GET Students to link to student personal details.
Request
Response
200 OK
[
{
"student_id": 987654,
"parent_display_name": "Mrs Jane West",
"priority": 1,
"email_address": "jane.west@example.com",
"home_telephone": "0123456789",
"main_telephone": "0123456789",
"mobile": "0123456789",
"is_main_email_address_for_contact": false,
"student_contact_mis_id": 12345
},
...
]
Contacts Object
Name | Type | Description |
---|---|---|
student_id | integer | The unique identifier for the student. |
parent_display_name | string | Full name of the student's parent. |
priority | integer, nullable |
Parent's communication policy. |
email_address | string | Parent's email address. |
home_telephone | string | Parent's home telephone number. |
main_telephone | string | Parent's main telephone number. |
mobile | string | Parent's mobile telephone number. |
is_main_email_address_for_contact | boolean, nullable |
States whether a parent would like to be contacted via email. |
student_contact_mis_id | string |
The identifier for the contact from an external MIS. |
Reports
GET Reports
You need the Attainment-Student Reports (students.attainment.reports.read) permission to view this endpoint.
Returns details of available progress reports in the chosen academic year, including the grades and attributes associated with each set of reports.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attainment/reports
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 123456,
"name": "Year 9 End of Year Report",
"year_group": "9",
"enable_comments": false,
"prepared_at": "2020-01-01T00:00:00Z",
"preferred_target_grade_type": 1,
"preferred_progress_grade_type": 2,
"presentation_name": "Year 9 Report",
"presentation_date": "2019-01-31T00:00:00Z",
"grades": [
{
"type": 3,
"name": "External Target Grade",
"description": "Excellent progress grade.",
},
...
],
"attributes_and_choices": [
{
"id": 4,
"name": "Attitude to learning",
"description": "Students attitude to their learning in this subject",
"display_name": "Attitude to Learning",
"choices": [
{
"id": 123456,
"name": "Excellent",
"points": 5
"details": "Consistently engaged and committed."
},
...
],
},
...
]
},
...
]
Reports Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the report. |
name | string | The name of the report. |
year_group | string | The year group that is associated with the report. |
enable_comments | boolean | States whether the report should have comments added. |
prepared_at | datetime, nullable |
The date and time when the report was prepared for publication. |
preferred_target_grade_type | integer, nullable | The grade type chosen as preferred target grade. |
preferred_progress_grade_type | integer, nullable | The grade type chosen as preferred progress grade. |
presentation_name | string, nullable | The name presented on the report. |
presentation_date | datetime, nullable | The date presented on the report. |
grades | array | Array of grades types associated with the report at point of publication. |
| type | integer | The type of grade. One of the 10 grade types that can be configured in GO. |
| name | string, nullable | School name of the grade at point of publication. |
| description | string, nullable | Description of the grade at point of publication. |
attributes_and_choices | array | Array of attributes and the available choices for the report at point of publication. |
| id | integer | The unique identifier for the attribute. |
| name | string | The name of the attribute. |
| description | string | The description of the attribute. |
| display_name | string | The display name of the attribute. |
| choices | array | Array of the choices for an attribute. |
| id | integer | The unique identifier for the choice. |
| name | string | The name of the choice. |
| points | integer | The point value for the choice. |
| details | integer | Descirption of the attibute choice. |
GET Report Attributes
You need the Attainment-Student Reports (students.attainment.reports.read) permission to view this endpoint.
Returns the attributes for students for the chosen report.
• Use GET Reports to find the name and points value for an attribute choice for the student.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
reportId | integer | report id for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attainment/reports/{reportId}/attributes
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
Report Attributes Object
Name | Type | Description |
---|---|---|
subject_id | integer | The unique identifier for the subject. |
choices | array | Array of student and chosen attribute for the report. |
| choice_id | integer | The unique identifier for the attribute choice. |
| student_id | integer | The unique identifier for the student. |
GET Report Grades
You need the Attainment-Student Reports (students.attainment.reports.read) permission to view this endpoint.
Returns the subjects and student grade values for a chosen report.
• Use GET Reports to determine the report name and the name of the grade types.
• Use GET Students to match to student personal details.
• Use GET Subjects to find the subject details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
reportId | integer | report id for the requested data |
Query parameters
Name | Type | Description | Required | Default |
---|---|---|---|---|
applyTakeHomeReportExclusions | boolean | Whether students/subjects excluded from the report are removed from the response | no | true |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attainment/reports/{reportId}/grades
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"subject_id": 222222,
"qan": "601/8575/2",
"qualification_title": "AQA Level 1/Level 2 GCSE (9-1) in Drama",
"grades": [
{
"type": 1,
"name": "1",
"student_id": 987654
},
...
]
},
...
]
Report Grades Object
Name | Type | Description |
---|---|---|
subject_id | integer | The unique identifier for the subject. |
qan | string, nullable | The qualification accreditation number. |
qualification_title | string, nullable | The name of the qualification. |
grades | array | An array of student and grades captured in the report. |
| type | integer | The type of grade. One of the 10 grade types that can be configured in GO. |
| name | string, nullable | The name of the grade. |
| student_id | integer | The unique identifier for the student. |
GET Report Comments
You need the Attainment-Student Report Comments (students.attainment.reports.comments.read) permission to view this endpoint.
Returns the comments entered by teachers for the chosen report. The report must have been prepared for publication for data to be returned.
• Use GET Reports to determine the report name and the name of the grade types.
• Use GET Students to match to student personal details.
• Use GET Subjects to find the subject details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
reportId | integer | report id for the requested data |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/attainment/reports/{reportId}/comments
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"report_comments": [
{
"subject_id": 222222,
"student_id": 987654,
"author": "Ms M Jones"
"details": "You produce accurate writing which is clear and relevant. Remember to meet deadlines."
},
...
],
"has_more": true,
"cursor": 123
}
Report Comments Object
Name | Type | Description |
---|---|---|
report_comments | array | Array of report comment details |
| subject_id | integer | The unique identifier for the subject. |
| student_id | integer | The unique identifier for the student. |
| author | string, nullable | The author of the comment. |
| details | string | The comment entered by the author. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
Schools
GET Schools
You need the General-School (school.read) permission to view this endpoint.
Returns details of the school and the available academic years.
Request
Response
200 OK
{
"code": "DEMO",
"name": "Demo School",
"academic_years": [
2019,
...
],
"current_academic_year": 2019
}
Schools Object
Name | Type | Description |
---|---|---|
code | string | Schools unique code. |
name | string | The name of the school. |
academic_years | integer array | Array of academic years in a school. |
current_academic_year | integer | The current academic year of a school. |
Students
GET Students
You need the Student-Students (students.read) permission to view this endpoint.
Returns the current personal details of the students that were at school in the chosen academic year.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/students
-H "Authorization: Bearer {ApiKey}"
Response
Non-MIS Schools: 200 OK
[
{
"id": 987654,
"date_of_birth": "2005-01-31T00:00:00Z",
"sex": "M",
"legal_first_name": "Robert",
"legal_last_name": "Smith",
"preferred_first_name": "Bob",
"preferred_last_name": "Smith",
"middle_names": "Jon",
"student_mis_id": "12345"
},
...
]
MIS Schools: 200 OK
[
{
"id": 987654,
"date_of_birth": "2005-01-31T00:00:00Z",
"sex": "M",
"legal_first_name": "Robert",
"legal_last_name": "Smith",
"preferred_first_name": "Bob",
"preferred_last_name": "Smith",
"middle_names": "Jon"
},
...
]
Students Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the student. |
date_of_birth | datetime | The date of birth for the student. |
sex | string | The gender of the student. |
legal_first_name | string | The legal forename of the student. |
legal_last_name | string | The legal last name od the student. |
preferred_first_name | string | The preferred forename of the student. |
preferred_last_name | string | The preferred last name of the student. |
middle_names | string | Any middle names of the student. |
student_mis_id | string | The identifier for the student from an external MIS. |
GET General Attributes
You need the Students-Attributes (students.attributes.read) permission to view this endpoint.
Returns general student attributes for the chosen academic year. This will include all custom attributes and also system attributes not returned by other endpoints.
• Use GET Students to match to student personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/students/attributes
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"students_and_attributes": [
{
"id": 123456,
"code": "admissionDate",
"name": "Admission date",
"is_system": true,
"students_and_attribute_values": [
{
"student_id": 987654,
"value": "01/01/2020 00:00:00"
"academic_year": 2019
"date": "2019-01-31T00:00:00Z"
},
...
]
},
...
],
"has_more": true,
"cursor": 123
}
General Attributes Object
Name | Type | Description |
---|---|---|
students_and_attributes | array | Array of all students and their attribute values. |
| id | integer | The unique identifier for the attribute. |
| code | string | Attribute code. |
| name | string | Attribute name. |
| is_system | boolean | If the attribute is a system attribute (whether the attribute has been retrieved from the MIS). |
| students_and_attribute_values | array | Array of student values for the particular attribute. |
| student_id | integer | Unique identifier for the student. |
| value | string | Value recorded for this attribute and student. |
| academic_year | string, nullable |
Only populated if this value was timestamped against the requested academic year. |
| date | string, nullable |
Dated timestamp. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
GET Demographic Attributes
You need the Students-Attributes(demographic) (students.attributes.demographic.read) permission to view this endpoint.
Returns the following attributes for students for the chosen academic year: Country of birth, Home Language, First Language and Nationality.
• Use GET Students to match to student personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/students/attributes/demographic
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"students_and_attributes": [
{
"id": 123456,
"code": "countryOfBirth",
"name": "Country of Birth",
"is_system": true,
"students_and_attribute_values": [
{
"student_id": 987654,
"value": "United Kingdom",
"academic_year": 2019
"date": "2019-01-31T00:00:00Z"
},
...
]
},
...
],
"has_more": true,
"cursor": 123
}
Demographic Attributes Object
Name | Type | Description |
---|---|---|
students_and_attributes | array | Array of all students and their attribute values. |
| id | integer | The unique identifier for the attribute. |
| code | string | Attribute code. |
| name | string | Attribute name. |
| is_system | boolean | If the attribute is a system attribute (whether the attribute has been retrieved from the MIS). |
| students_and_attribute_values | array | Array of student values for the particular attribute. |
| student_id | integer | Unique identifier for the student. |
| value | string | Value recorded for this attribute and student. |
| academic_year | string, nullable |
Only populated if this value was timestamped against the requested academic year. |
| date | string, nullable |
Dated timestamp. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
GET SEND Attributes
You need the Students-Attributes(SEND) (students.attributes.send.read) permission to view this endpoint.
Returns the following attributes for students for the chosen academic year: Sen Code, Sen Status, Educational Needs, Gifted/Talented, Gifted/Talented Subject.
• Use GET Students to match to student personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/students/attributes/send
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"students_and_attributes": [
{
"id": 1,
"code": "senNeed",
"name": "Educational needs",
"is_system": false,
"students_and_attribute_values": [
{
"student_id": 987654,
"value": "Learning Difficulty Level 1",
"academic_year": 2019
"date": nullable
},
...
]
},
...
],
"has_more": true,
"cursor": 100
}
SEND Attributes Object
Name | Type | Description |
---|---|---|
students_and_attributes | array | Array of all students and their attribute values. |
| id | integer | The unique identifier for the attribute. |
| code | string | Attribute code. |
| name | string | Attribute name. |
| is_system | boolean | If the attribute is a system attribute (whether the attribute has been retrieved from the MIS). |
| students_and_attribute_values | array | Array of student values for the particular attribute. |
| student_id | integer | Unique identifier for the student. |
| value | string | Value recorded for this attribute and student. |
| academic_year | string, nullable |
Only populated if this value was timestamped against the requested academic year. |
| date | string, nullable |
Dated timestamp. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
GET Sensitive Attributes
You need the Students-Attributes(sensitive) (students.attributes.sensitive.read) permission to view this endpoint.
Returns the following attributes for students for the chosen academic year: FSM, FSMEver6, EAL, Disadvantaged, Ethnicity, Ethnicity code, Ever In Care, Looked after, Pupil Premium Indicator, Service Child, Traveller type.
• Use GET Students to match to student personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/students/attributes/sensitive
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"students_and_attributes": [
{
"id": 1,
"code": "ethnicity",
"name": "Ethnicity",
"is_system": false,
"students_and_attribute_values": [
{
"student_id": 987654,
"value": "Any other White background",
"academic_year": 2019
"date": nullable
},
...
]
},
...
],
"has_more": true,
"cursor": 100
}
Sensitive Attributes Object
Name | Type | Description |
---|---|---|
students_and_attributes | array | Array of all students and their attribute values. |
| id | integer | The unique identifier for the attribute. |
| code | string | Attribute code. |
| name | string | Attribute name. |
| is_system | boolean | If the attribute is a system attribute (whether the attribute has been retrieved from the MIS). |
| students_and_attribute_values | array | Array of student values for the particular attribute. |
| student_id | integer | Unique identifier for the student. |
| value | string | Value recorded for this attribute and student. |
| academic_year | string, nullable |
Only populated if this value was timestamped against the requested academic year. |
| date | string, nullable |
Dated timestamp. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
GET Education Details
You need the Students-Education Details (students.education.read) permission to view this endpoint.
Returns education details for students.
• Use GET Students to match to student personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/students/education-details
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"students_and_education_details": [
{
"student_id": 987654,
"upn": "Z0123456789012",
"former_upn": "Z0123456789011",
"national_curriculum_year": "11",
"registration_group": "11East",
"house": "Newton",
"admission_date": "2017-01-31T00:00:00Z",
"deleted_from_source": true,
"leaving_date": "2019-01-31T00:00:00Z",
"student_education_attributes": [
{
"attribute_id": 123456,
"code": "proficiencyInEnglish",
"name": "Proficiency in English",
"is_system": true,
"attribute_values": [
{
"value": "D - Competent",
"academic_year": 2019,
"date": "2019-01-31T00:00:00Z",
},
...
]
},
...
]
},
...
],
"has_more": true,
"cursor": 123
}
Education Details Object
Name | Type | Description |
---|---|---|
students_and_education_details | array | Array of student education details. |
| student_id | integer | The unique identifier for the student. |
| upn | string | Unique pupil number for the student. |
| former_upn | string | The former UPN for the student. |
| national_curriculum_year | string | The year group of the student. |
| registration_group | string | The registration group of the student. |
| house | string | The students house. |
| admission_date | datetime | The admission date of the student. |
| deleted_from_source | boolean | The leaver status of the student. |
| leaving_date | datetime | The leaving date of the student. |
| student_education_attributes | array | The array of educational attributes for this student. |
| attribute_id | integer | The unique identifier for the attribute. |
| code | string | The code for the attribute. |
| name | string | The name for the attribute. |
| is_system | boolean | If the attribute is a system attribute (whether the attribute has been retrieved from the MIS). |
| attribute_values | array | The array of educational attribute values for this student. |
| value | string | The actual attribute value recorded at this time for this student. |
| academic_year | string, nullable | Only populated if this value was timestamped against the requested academic year. |
| date | string, nullable | Populated with the dated timestamp of the attribute regardless of academic year. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
GET Photos
You need the Students-Photos (students.photos.read) permission to view this endpoint.
Returns student photos.
• Use GET Students to match to student personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/students/photos
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"students_and_photos": [
{
"student_id": 987654,
"photo": "data:image/jpeg;base64,..."
},
...
],
"has_more": true,
"cursor": 123
}
Photos Object
Name | Type | Description |
---|---|---|
students_and_photos | array | Array of all students and photos. |
student_id | integer | The unique identifier for the student. |
photo | string | Base 64 encoded string. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
GET Medical Conditions
You need the Students-Attributes (medical) (students.medical.read) permission to view this endpoint.
Returns medical conditions for students.
• Use GET Students to resolve to students personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/students/medical-conditions
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"students_and_medical_conditions": [
{
"student_id": 987654,
"medical_conditions": "Other Allergies; Other Medical"
},
...
],
"has_more": true,
"cursor": 123
}
Medical Conditions Object
Name | Type | Description |
---|---|---|
student_id | integer | The unique identifier for the student. |
| medical_details | string | Medical conditions taken from the schools MIS. |
| has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
Teaching
GET Departments
You need the Teaching-Curriculum (school.curriculum.read) permission to view this endpoint.
Returns details of departments in the chosen academic year.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/teaching/departments
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
Departments Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the department. |
name | string | Department name. |
GET Subjects
You need the Teaching-Curriculum (school.curriculum.read) permission to view this endpoint.
Returns all subjects in the academic year.
• Use GET Departments to resolve to department details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/teaching/subjects
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 222222,
"name": "Computing and ICT",
"code": "Cp",
"year_group": "10",
"department_id": 123456,
"qan": "601/8355/X",
"qualification_title": "OCR Level 1/Level 2 GCSE (9-1) in Computer Science",
"qualification_scheme_name": "Fine GCSE grades, e.g. 9+, 9, 9-, 8+, 8, 8- etc",
"include_in_stats": true
},
...
]
Subjects Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the subject. |
name | string | The name of the subject. |
code | string | The code of the subject. |
year_group | string | The year group of the subject. |
department_id | integer | The department that the subject belongs to. |
qan | string | The Qualification Accreditation Number associated with the subject. |
qualification_title | string | The qualification title associated with the subject. |
qualification_scheme_name | string, nullable | The scheme name of the subject. |
include_in_stats | boolean | Whether the subject is included in the year group statistics. |
GET Teachers
You need the Teaching-Teachers (school.teachers.read) permission to view this endpoint.
Returns details of the teachers in the chosen academic year.
Route parameters
Name | Type | Description |
---|
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/teaching/teachers
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 123456,
"title": "Mrs",
"first_name": "Anne",
"last_name": "Burgess",
"preferred_first_name": "Anne",
"preferred_last_name": "Burgess",
"initials": "AXB",
"code": "AXB"
},
...
]
Teachers Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the teacher. |
title | string | The title associated with the teacher. |
first_name | string | The forename of the teacher. |
last_name | string | The surnane of the teacher. |
preferred_first_name | string | Preferred forename of the teacher. |
preferred_last_name | string | Preferred surname of the teacher. |
initials | string | The initials of the teacher. |
code | string | The code associated with the teacher. |
GET Groups
You need the Teaching-Curriculum (school.curriculum.read) permission to view this endpoint.
Returns details of teaching groups for each subject in the chosen academic year.
• Use GET Subjects to resolve to the subject details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/teaching/groups
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
Groups Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the group. |
name | string | The name of the group. |
code | string | The code of the group. |
subject_id | integer | The subject that the group belongs to. |
GET Groups and Students
You need the Teaching-Curriculum (school.curriculum.read) permission to view this endpoint.
Returns details of the students in each teaching group in the chosen academic year.
• Use GET Groups to resolve the group details.
• Use GET Students to find student personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/teaching/groups/students
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
Groups and Students Object
Name | Type | Description |
---|---|---|
group_id | integer | The unique identifier for the group. |
student_ids | integer array | Array of student identifiers associated with this group. |
GET Groups and Teachers
You need the Teaching-Curriculum (school.curriculum.read) permission to view this endpoint.
Returns details of teachers assigned to each teaching group in the chosen academic year.
• Use GET Groups to resolve the group details.
• Use GET Teachers to find the teacher details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested data |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/teaching/groups/teachers
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
Groups and Teachers Object
Name | Type | Description |
---|---|---|
group_id | integer | The unique identifier for the group. |
teacher_ids | integer array | Array of teacher identifiers for this group. |
Timetables
GET Timetables
You need the Timetable-School Timetable (school.timetable.read) permission to view this endpoint.
Returns details of the timetables and their associated periods for the chosen academic year.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/timetables
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"id": 123456,
"periods": [
{
"id": 123456,
"name": "Monday Tutorial",
"display_name": "Tutorial",
"week": 1,
"day_of_week": "Monday",
"start": "2020-01-01T00:00:00Z",
"end": "2020-01-01T00:00:00Z"
},
...
]
},
...
]
Timetables Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the timetable. |
periods | array | Array of period information. |
| id | integer | Unique identifier for the period associated with this timetable. |
| name | string | The name of the period. |
| display_name | string | The display name of the period. |
| week | integer | The week the period belongs to. Values can be 1 or 2. |
| day_of_week | string | The name of the day of the week the period falls on. |
| start | datetime | The time the period begins. |
| end | datetime | The time the period ends. |
GET Calendar
You need the Timetable-School Timetable (school.timetable.read) permission to view this endpoint.
Returns details of when the school is open, closed or open for staff training only in the chosen academic year.
• Use GET Timetables to link the date to the week number and school periods.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/timetables/calendar
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
[
{
"timetable_id": 123456,
"week": 1,
"date": "2020-01-31T00:00:00Z",
"day_type_code": "TRAINING"
},
...
]
Calendars Object
Name | Type | Description |
---|---|---|
timetable_id | integer, nullable | The unique identifier for the timetable. |
week | integer, nullable | The week the calendar is in. Values 1 or 2. |
date | datetime | The date of the calendar day. |
day_type_code | string | The type of day the calendar day is. One of 'Open', 'Closed', 'Training', 'Unknown'. 'Unknown' is used when GO has not received data in its feed for a date. |
GET Classes
You need the Timetable-School Timetable (school.timetable.read) permission to view this endpoint.
Returns details of all timetabled classes in the chosen academic year.
• Use GET Timetables to determine week number and period details from the period identifier.
• Use GET Teachers to link to teacher details
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/timetables/classes
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"classes": [
{
"id": 123456,
"year_group": "7",
"subject_code": "As",
"group_code": "7/As1",
"period_id": 123456,
"rooms": [
"H4",
...
],
"teacher_ids": [
123456,
...
]
},
...
],
"has_more": true,
"cursor": 123
}
Classes Object
Name | Type | Description |
---|---|---|
classes | array | Array of class details. |
| id | integer | The unique identifier for the class. |
| year_group | string | The year group associated with the class. |
| subject_code | string | The subject code associated with the class. |
| group_code | integer | The group code associated with the class. |
| period_id | integer | The unique identifier for the period assigned to the class. |
| rooms | string array | An array of room names. |
| teacher_ids | integer array | An array of teacher ids. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
GET Student Classes
You need the Timetable-Student Timetables (students.timetable.read) permission to view this endpoint.
Returns details of which students are linked to which timetabled classes in the chosen academic year.
• Use GET Classes to find class details.
• Use GET Students to get the student personal details.
Route parameters
Name | Type | Description |
---|---|---|
academicYear | integer | academic year for the requested classes |
Query parameters
Name | Type | Description | Required |
---|---|---|---|
cursor | integer | used to request further data when has_more is true | no |
Request
curl https://api.go4schools.com/customer/v1/academic-years/{academicYear}/timetables/student-classes
-H "Authorization: Bearer {ApiKey}"
Response
200 OK
{
"student_classes": [
{
"student_id": 987654,
"classes": [
{
"id": 123456,
"start": "2020-01-01T00:00:00Z",
"end": "2020-01-01T00:00:00Z",
},
...
]
},
...
],
"has_more": true,
"cursor": 123
}
Student Classes Object
Name | Type | Description |
---|---|---|
student_classes | array | Array of students and their classes. |
| student_id | integer | The unique identifier for the student. |
| classes | array | Array of classes the student has. |
| id | integer | The unique identifier for the class. |
| start | datetime | The start time of the class. |
| end | datetime, nullable | The end time of the class. |
has_more | boolean | Boolean representing if there are more results. |
cursor | integer, nullable | Used to request further data when has_more is true. |
User Accounts
GET Parents
You need the Users-Parent Accounts (school.accounts.parents.read) permission to view this endpoint.
Returns details of parent user accounts.
Request
Response
200 OK
[
{
"email_address": "steve.thomas@example.com",
"display_name": "Mr Stephen Thomas",
"student_id": 987654
},
...
]
User Parents Object
Name | Type | Description |
---|---|---|
email_address | string | The email address for the parent account. |
display_name | string | The display name of the parent. |
student_id | integer | The unique identifier for the student associated with this parent. |
GET Staff
You need the Users-Staff Accounts (school.accounts.staff.read) permission to view this endpoint.
Returns details of staff user accounts.
Request
Response
Non-MIS Schools: 200 OK
[
{
"id": 1,
"email_address": "sandra.jones@example.com",
"first_name": "Sandra",
"last_name": "Jones",
"display_name": "Mrs S Jones",
"title": "Mrs",
"is_current": true,
"teacher_id": 1,
"start_date": null,
"end_date": null
},
...
]
MIS Schools: 200 OK
[
{
"id": 1,
"email_address": "sandra.jones@example.com",
"legal_first_name": "Sandra",
"legal_last_name": "Jones",
"preferred_first_name": "Sandra",
"preferred_last_name": "Jones",
"display_name": "Mrs S Jones",
"title": "Mrs",
"is_current": true,
"teacher_id": 1,
"start_date": 2021-09-01T00:00:00Z,
"end_date": 2022-08-31T00:00:00Z,
},
...
]
User Staff Object
Name | Type | Description |
---|---|---|
id | integer | The unique identifier for the staff member. |
email_address | string, nullable | The email address for the staff member. |
first_name (non-MIS Only) | string | The forename of the staff member. |
last_name (non-MIS Only) | string | The surname of the staff member. |
legal_first_name (MIS Only) | string | The legal first name of the staff member. |
legal_last_name (MIS Only) | string | The legal surname of the staff member. |
preferred_first_name (MIS Only) | string | The preferred first name of the staff member. |
preferred_last_name (MIS Only) | string | The preferred surname of the staff member. |
display_name | string, nullable for MIS only | The display name of the staff member. |
title | string, nullable | The title of the staff member. |
is_current | boolean | The current status of the staff member. |
teacher_id | integer, nullable | The corresponding teacher unique identifier if the staff member is a teacher. |
start_date | datetime, nullable | The start date for the teacher (non-null value for MIS schools only). |
end_date | datetime, nullable | The contract end date for the teacher (non-null value for MIS schools only). |