The complete Aeries API documentation is also available in this Knowledge Base. Click here.

This guide lists the current v5 end points. Older API versions (v1–v4) still work for existing integrations, but new integrations should use v5.


Aeries System API End Point

Data Area
URL
Quick Note
System/api/v5/systeminfoAeriesVersion, DatabaseYear, AvailableDatabaseYears, LocalTimeZoneName, CurrentDateTime. No API certificate is required for this end point.
Send AlertPOST /api/v5/SendAlertPOST. The alert is sent in the request body. Requires Insert permission on "Send Alerts".

School-Related API End Points

Data AreaURLQuick Note
School Information/api/v5/schools/{SchoolCode}{SchoolCode} is optional
School Terms/api/v5/schools/{SchoolCode}/termsData already in School Information End Point
School Calendar/api/v5/schools/{SchoolCode}/calendar{SchoolCode} is required.
Track Holidays might be a blank data element if the School.Tracks field is 0.
Bell Schedule/api/v5/schools/{SchoolCode}/BellSchedule
/api/v5/schools/{SchoolCode}/BellSchedule/date/{date}
Records with a value other than 0 represent the bell schedule for a specific day/date.
Absence Codes/api/v5/schools/{SchoolCode}/AbsenceCodes/{AbsenceCode}{AbsenceCode} is optional
Code Sets/api/v5/codes/{Table}/{Field}{Table} is the Aeries table code or object name.
{Field} is the Aeries field code or data element name.


Student-Related API End Points

Data AreaURLQuick Note
Student Information/api/v5/schools/{SchoolCode}/students/{StudentID}
/api/v5/schools/{SchoolCode}/students/grade/{GradeLevel}
/api/v5/schools/{SchoolCode}/students/sn/{StudentNumber}
{StudentID} is optional
When a StudentID is specified, the student must be enrolled at {SchoolCode}
Student Information Extended/api/v5/schools/{SchoolCode}/students/{StudentID}/extended
/api/v5/schools/{SchoolCode}/students/grade/{GradeLevel}/extended
/api/v5/schools/{SchoolCode}/students/sn/{StudentNumber}/extended
{StudentID} is optional
Student Data Changes/api/v5/StudentDataChanges/{DataArea}/{year}/{month}/{day}/{hour}/{minute}"student", "contact", "program", "test", "class", "enrollment"
Contacts/api/v5/schools/{SchoolCode}/contacts/{StudentID}
api/v5/UpdateContact/{id}/{sq} (post)
api/v5/InsertContact/{id} (post)
api/v5/DeleteContact/{id}/{sq} (get) – a GET request to this URL deletes the contact
api/v5/DeleteContact/{id}/{sq} (delete)

{StudentID} is optional {SchoolCode} is ignored when {StudentID} is provided. Any value can be used such as {000}
Programs/api/v5/schools/{SchoolCode}/students/{StudentID}/programs{StudentID} = 0 for all students
Query String Parameter to limit to program code
Ex: ?code=144
Test Scores/api/v5/students/{StudentID}/tests
api/v5/testing/availabletests
{StudentID} is REQUIRED
Update Test Scores/api/v5/testing/UpdateScoresPOST
College Test Scores/api/v5/schools/{SchoolCode}/CollegeTestScores/{StudentID}{StudentID} is optional
SchoolCode is ignored when a StudentID is specified
Assertive Discipline/api/v5/schools/{SchoolCode}/AssertiveDiscipline/{StudentID}{StudentID} is optional
District Supplemental Student Data/api/v5/schools/{SchoolCode}/DistrictSupplemental/{StudentID}{StudentID} is optional
SchoolCode is ignored when a StudentID is specified
School Supplemental Student Data/api/v5/schools/{SchoolCode}/SchoolSupplemental/{StudentID}
api/v5/UpdateSchoolSupplemental/{sc}/{sn} (post)
{StudentID} is optional
When a StudentID is specified, the student must be enrolled at {SchoolCode}
Fees and Fines/api/v5/schools/{SchoolCode}/fees/{StudentID}{StudentID} is optional
SchoolCode is ignored when a StudentID is specified
Student Picture/api/v5/schools/{SchoolCode}/StudentPictures/{StudentID}{StudentID} is optional
SchoolCode is ignored when a StudentID is specified
Student Groups/api/v5/schools/{SchoolCode}/StudentGroupsFor all schools, pass {SchoolCode} = "all". Otherwise, pass numeric school code.
Student Information – Create/UpdatePOST /api/v5/schools/{SchoolCode}/InsertStudent
POST /api/v5/UpdateStudent/{StudentID}
POST /api/v5/schools/{SchoolCode}/UpdateStudent/{StudentID}
POST /api/v5/UpdateStudentAddress/{StudentID}
POST. UpdateStudent updates all of the student’s school records; the school-scoped version updates only the record at {SchoolCode}.
Activities and Awards/api/v5/schools/{SchoolCode}/activities
/api/v5/schools/{SchoolCode}/activities/code/{ActivityCode}
/api/v5/schools/{SchoolCode}/students/{StudentID}/activities/{SequenceNumber}
/api/v5/schools/{SchoolCode}/students/{StudentID}/activities/code/{ActivityCode}
POST /api/v5/schools/{SchoolCode}/students/{StudentID}/activities
PUT / DELETE /api/v5/schools/{SchoolCode}/students/{StudentID}/activities/{SequenceNumber}
{SequenceNumber} is optional on GET
Authorizations/api/v5/schools/{SchoolCode}/authorizations
/api/v5/schools/{SchoolCode}/students/{StudentID}/authorizations/{SequenceNumber}
POST /api/v5/schools/{SchoolCode}/students/{StudentID}/authorizations
PUT / DELETE /api/v5/schools/{SchoolCode}/students/{StudentID}/authorizations/{SequenceNumber}
{SequenceNumber} is optional on GET. TypeCode and MiscCode are required on POST.
Discipline/api/v5/schools/{SchoolCode}/discipline/{StudentID}{StudentID} is optional
Immunizations/api/v5/schools/{SchoolCode}/students/{StudentID}/immunizationsRead only
Medical Insurance Information/api/v5/schools/{SchoolCode}/medical-insurance-infoRead only. Add ?id={StudentID} to limit to one student.
Free and Reduced Price Meals/api/v5/students/{StudentID}/free-and-reduced
/api/v5/students/{StudentID}/free-reduced-records
Read only. free-and-reduced returns active records by default; add ?activeOnly=false for the full history.
Pre-Enroll Student/api/v5/commands/preenrollstudent/{StudentID}
/api/v5/commands/preenrollstudent/{StudentID}/{NextSchool}
/api/v5/PreEnrollInactiveStudent/{StudentID}/{NextSchoolCode}
These are GET requests that change data.


Attendance & Enrollment API End Points

Data AreaURLQuick Note
Enrollment History/api/v5/enrollment/{StudentID}
/api/v5/enrollment/{StudentID}/year/{AcademicYear}
/api/v5/schools/{SchoolCode}/enrollment/{StudentID}
/api/v5/schools/{SchoolCode}/enrollment/{StudentID}/year/{AcademicYear}
{StudentID} can be 0 for all students
{AcademicYear} format: yyyy
Student Attendance/api/v5/schools/{SchoolCode}/attendance/{StudentID}{StudentID} is optional
Query String Parameters:
StartDate=YYYYMMDD
&EndDate=YYYYMMDD
Attendance History Summary/api/v5/schools/{SchoolCode}/AttendanceHistory/summary/{StudentID}
/api/v5/schools/{SchoolCode}/AttendanceHistory/summary/year/{year}
{SchoolCode} limits to the students in that school
{StudentID} is optional
{year} format: yyyy-yyyy
Attendance History Details/api/v5/schools/{SchoolCode}/AttendanceHistory/details/{StudentID}
/api/v5/schools/{SchoolCode}/AttendanceHistory/details/year/{year}
Attendance History Attendance Codes/api/v5/schools/{SchoolCode}/AttendanceHistory/AbsenceCodes
/api/v5/schools/{SchoolCode}/AttendanceHistory/AbsenceCodes/year/{year}


Student Grades API End Points

Data AreaURLQuick Note
Student GPA/api/v5/schools/{SchoolCode}/gpas/{StudentID}{StudentID} is optional
Student Grades/api/v5/schools/{SchoolCode}/grades

POST. Requires Update permission on "Grades".
Student Report Cards/api/v5/schools/{SchoolCode}/ReportCard/{StudentID}{StudentID} is optional
School Report Card Marking Periods/api/v5/schools/{SchoolCode}/ReportCardMarkingPeriods
School Graduation Requirements/api/v5/schools/{SchoolCode}/GraduationRequirements
Student Graduation Status Summary/api/v5/schools/{SchoolCode}/GraduationStatusSummary/{StudentID}
/api/v5/schools/{SchoolCode}/GraduationStatusSummary/grade/{GradeLevel}
{StudentID} is optional
Student Transcripts/api/v5/schools/{SchoolCode}/Transcript/{StudentID}{StudentID} is optional
Valid Marks/api/v5/schools/{SchoolCode}/validmarks
Read Only
Standards-Based Valid Marks/api/v5/schools/{SchoolCode}/standardsbasedvalidmarksRead only
Standards-Based Grades/api/v5/schools/{SchoolCode}/standardsbasedgradesPOST


Scheduling API End Points

Data AreaURLQuick Note
Student Class Schedule/api/v5/schools/{SchoolCode}/classes/{StudentID}{StudentID} is optional
Course Information/api/v5/courses/{CourseID}{CourseID} is optional
Course Data Changes/api/v5/CourseDataChanges/{year}/{month}/{day}/{hour}/{minute}
Staff Data/api/v5/staff/{StaffID}
api/v5/staff/hrid/{hrid}
POST /api/v5/staff
PUT /api/v5/staff/{StaffID}
{StaffID} is optional except for assignements.
{hrid} is optional.
QueryString conditions can be included to filter results on any staff object field.
Staff Classes/Sections/api/v5/staff/{StaffID}/classes{StaffID} is required
Staff Data Changes/api/v5/StaffDataChanges/{year}/{month}/{day}/{hour}/{minute}
Teacher Information/api/v5/schools/{SchoolCode}/teachers/{TeacherNumber}{TeacherNumber} is optional
Staff-Teacher Information/api/v5/staff/{StaffID}/teachersThis end point will return a list of teacher records associated with the given Staff ID.
Section Information/api/v5/schools/{SchoolCode}/sections/{SectionNumber}{SectionNumber} is optional
Section Data Changes/api/v5/SectionDataChanges/{year}/{month}/{day}/{hour}/{minute}
Section Class Roster/api/v5/schools/{SchoolCode}/sections/{SectionNumber}/students{SectionNumber} is REQUIRED
Section Class Roster Data Changes/api/v5/SectionRosterDataChanges/{year}/{month}/{day}/{hour}/{minute}
Class Calendars/api/v5/schools/{SchoolCode}/classcalendars/{SequenceNumber}
/api/v5/schools/{SchoolCode}/classcalendars/year/{AcademicYear}
/api/v5/schools/{SchoolCode}/classcalendars/{SequenceNumber}/dates
{SequenceNumber} is optional on the first URL. {AcademicYear} format: yyyy-yyyy
Flex Periods/api/v5/schools/{SchoolCode}/flexperiods/{SequenceNumber}
/api/v5/schools/{SchoolCode}/flexperiods/year/{AcademicYear}
{SequenceNumber} is optional. {AcademicYear} format: yyyy-yyyy
Scheduling Master Schedule Sections/api/v5/schools/{SchoolCode}/scheduling/sections/{SectionNumber}
POST /api/v5/schools/{SchoolCode}/scheduling/sections
PUT / DELETE /api/v5/schools/{SchoolCode}/scheduling/sections/{SectionNumber}
{SectionNumber} is optional on GET. POST and PUT work only at Section Staff schools.
Student Course Requests/api/v5/schools/{SchoolCode}/scheduling/courserequests
/api/v5/schools/{SchoolCode}/students/{StudentID}/courserequests/{SequenceNumber}
/api/v5/schools/{SchoolCode}/students/sn/{StudentNumber}/courserequests/{SequenceNumber}
POST /api/v5/schools/{SchoolCode}/students/{StudentID}/courserequests
PUT / DELETE /api/v5/schools/{SchoolCode}/students/{StudentID}/courserequests/{SequenceNumber}
{SequenceNumber} is optional on GET
Alternate Course Requests/api/v5/schools/{SchoolCode}/scheduling/alternatecourserequests
/api/v5/schools/{SchoolCode}/students/{StudentID}/alternatecourserequests/{SequenceNumber}
/api/v5/schools/{SchoolCode}/students/sn/{StudentNumber}/alternatecourserequests/{SequenceNumber}
POST /api/v5/schools/{SchoolCode}/students/{StudentID}/alternatecourserequests
PUT / DELETE /api/v5/schools/{SchoolCode}/students/{StudentID}/alternatecourserequests/{SequenceNumber}
{SequenceNumber} is optional on GET
Staff Assignments/api/v5/staff/{StaffID}/assignments/{Type}/{SequenceNumber}
/api/v5/staff/{StaffID}/assignments/date/{year}/{month}/{day}/{Type}
POST /api/v5/staff/{StaffID}/assignments
PUT / DELETE /api/v5/staff/{StaffID}/assignments/{Type}/{SequenceNumber}
DELETE /api/v5/staff/{StaffID}/assignments/startdate/{year}/{month}/{day}/{Type}
{Type} is "certificated" or "classified" (lowercase) and is optional on GET


Gradebook API End Points

Data AreaURLQuick Note
Gradebook Data/api/v5/staff/{StaffID}/gradebooks
/api/v5/schools/{SchoolCode}/sections/{SectionNumber}/gradebooks
/api/v5/gradebooks/{GradebookNumber}

Assignments/api/v5/gradebooks/{GradebookNumber}/assignments
/api/v5/gradebooks/{GradebookNumber}/assignments/{AssignmentNumber}
/api/v5/gradebooks/Assignments/{UniqueID}

Updating Assignment Information/api/v5/gradebooks/{GradebookNumber}/assignments/{AssignmentNumber}
/api/v5/gradebooks/Assignments/{UniqueID}
PUT
Inserting a New Assignment/api/v5/gradebooks/{GradebookNumber}/assignmentsPOST
Final Mark Ranges/api/v5/gradebooks/{GradebookNumber}/FinalMarks
Gradebook Students/api/v5/gradebooks/{GradebookNumber}/{GradebookTerm}/students
/api/v5/gradebooks/{GradebookNumber}/{GradebookTerm}/students/{StudentID}

Assignment Scores/api/v5/gradebooks/{GradebookNumber}/assignments/{AssignmentNumber}/scores
/api/v5/gradebooks/{GradebookNumber}/assignments/{AssignmentNumber}/scores/{StudentID}
/api/v5/gradebooks/assignments/{UniqueID}/scores
/api/v5/gradebooks/assignments/{UniqueID}/scores/{StudentID}

Updating Assignment Scores/api/v5/gradebooks/{GradebookNumber}/assignments/{AssignmentNumber}/scores
/api/v5/gradebooks/assignments/{UniqueID}/scores
POST

Migrating from v3 Gradebook end points: The v3 Gradebook end points still work, but v5 supports Flex Scheduling and Section Staff schools and returns more complete data. When switching from v3 to v5:

  • Important: In score updates, send the student as StudentID (v3 used PermanentID). A v5 request that still sends PermanentID skips those students and returns success without updating any scores.
  • URLs and methods changed: Insert Assignment is POST …/assignments (was …/InsertAssignment); Update Scores is POST …/scores (was …/UpdateScores); Updating Assignment Information uses PUT (was POST).
  • Response fields renamed: PermanentID → StudentID, StudentSex → StudentGender. The gradebook Period is now text instead of a number.
  • Insert Assignment returns HTTP 201 instead of 200. Errors and “not found” results return HTTP 400 or 404 with a message, instead of HTTP 500 or an empty 200 response.


Pagination Support

The following sets of end points support paginating the result set:

  • Student Information
  • Student Extended
  • Student GPA
  • Student Pictures
  • Graduation Status Summary
  • Student Transcripts

To request a specific set of records, include a set of Query String Parameters in the URL for "StartingRecord" and "EndingRecord".


Previous School Years

If a district configures their environment properly, you can access prior year databases through the API by including a query string parameter of "DatabaseYear" in the format of "?DatabaseYear=CCYY" with the "year" at the start of the school year (e.g., "2017" for the "2017-2018" school year).  If the database exists on the server you are hitting, it will return data from that year.  If the year does not match an available database, the request fails with HTTP 500 (“No Database Connection”); it does not fall back to the current school year. If DatabaseYear is omitted, the current (default) school year is used.