The Aeries v5 API has been expanded with new endpoints and capabilities designed to support the Aeries Enroll Path integration, including the ability to search for students, transfer students between schools, manage medical history, immunizations, medical insurance, language assessments, student authorizations, Free and Reduced Price Meals records, parent survey responses, school supplemental data, upload documents, and track enrollment compliance, all through a secure, consistent REST API built on the v5 standard. This expansion is designed for district administrators who manage the Aeries Enroll Path integration.
From this article, you can:
- Review the prerequisites and security areas required for each endpoint
- Reference the full set of new and extended endpoints, including request/response behavior and key constraints
These enhancements are available to "Enroll Path" customers only.
Table of Contents ↑
Prerequisites and Security
Student APIs
District-Wide Student Search
Inter-School Student Transfer
Create Student
Update Student (District-Wide)
Update Student (School-Scoped)
Update Student Address
Student Field Write Extensions
Medical History
Language Assessment
Multi-Language Survey (MLS)
Contact Comment Write Support
External Student IDs
Document Uploads
Document Confirmation Log
Other District Enrollments
Immunizations
Medical Insurance
Student Authorizations
Free and Reduced Price Meals — Income Eligibility
Free and Reduced Price Meals Records
Parent Survey Responses
School Supplemental Data
Student Programs
School & District APIs
Street Address Lookup
Supplemental Field Definitions
Portal Document Definitions
Writable Schema
District Options
SAML Service Providers
Portal APIs
Parent Portal Account Provisioning
Frequently Asked Questions
Prerequisites and Security ↑
Before using these endpoints, make sure the following are in place:
- All requests require a valid AERIES-CERT certificate header.
- Each endpoint is protected by a dedicated API security area. A district administrator must grant the appropriate permissions to the Aeries Enroll Path integration on the API Security page in Aeries.
- After adding new permissions, the system may take up to 15 minutes to activate. Log out and back into Aeries before changes take effect.
Student APIs ↑
Endpoints scoped to an individual student.
District-Wide Student Search ↑
Overview
Search for students across every school in the district before creating an enrollment record. This lets Enroll Path check for an existing student before deciding whether to start a new enrollment or route the request to a school transfer.
Endpoint
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/students | Search for students district-wide by name, birthdate, or student ID |
Query Parameters
| Field | Type | Required? | Notes |
|---|---|---|---|
lastName | string | Optional | Partial match (starts-with). "Smi" matches "Smith", "Smithson". At least one of the four search fields below is required. |
firstName | string | Optional | Partial match (starts-with). |
birthdate | date (YYYY-MM-DD) | Optional | Exact match. |
studentId | integer | Optional | Exact match on Student Permanent ID. |
after | integer | Optional | Last student ID from the previous page (keyset pagination). |
limit | integer | Optional | Results per page. Default and maximum are 100. Values outside that range are automatically capped at 100 rather than rejected. |
Response
| Field | Type | Notes |
|---|---|---|
Students | array | The matching students for this page. See below for what each entry includes. |
NextKey | integer | The last student ID on this page. Pass it back as the after parameter to fetch the next page. |
HasMore | boolean | True when more results remain beyond this page. |
Each entry in Students includes: student ID, first/last name, birthdate, grade, school code, enrollment status (Active or Inactive), and up to two guardians’ contact information (first name, last name, relationship, home phone, cell phone, email). A missing guardian is returned as null.
Key Behaviors
- Requests with none of the four search fields return HTTP 400.
- Results include both active and inactive/transferred students across every school in the district.
- The grade field is returned as stored in Aeries. Pre-K grades follow the Aeries storage convention, where TK appears as
-1and PS as-2.
Security
Requires the District-Wide Student Search security area with Read permission.
Inter-School Student Transfer ↑
Overview
Transfer an existing student from their current school to a destination school within the same district.
Endpoint
| Method | Route | Purpose |
|---|---|---|
POST | /api/v5/students/{studentId}/transfers | Transfer a student to a destination school |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
destinationSchoolCode | integer | Required | The school the student is transferring to. |
enterDate | date | Optional | Defaults to today’s date if not provided. |
status | string | Optional | Defaults to active. Validated against the district’s enrollment status codes. |
grade | integer | Optional | Defaults to the student’s current grade. Must fall within the destination school’s configured grade range. |
Response
| Field | Type | Notes |
|---|---|---|
Student | object | The student’s full record at the destination school after the transfer. |
SourceSchoolCode | integer | The school the student transferred from. |
DestinationSchoolCode | integer | The school the student transferred to. |
Key Behaviors
- The origin school record is not modified. No withdrawal is performed at the source school. If a withdrawal is required, handle it separately.
- If the student is already enrolled at the destination school, the request is idempotent and returns the existing record unchanged.
- Supports active students, inactive students, and previously returning students.
Security
Requires the Transfer Student Between Schools security area with Insert permission.
Create Student ↑
Overview
A REST-conventional endpoint for creating a student record. It accepts the complete student-creation payload, the same fields already available on the legacy insert endpoint, plus the four new Enroll Path fields described in Student Field Write Extensions below.
Endpoint
| Method | Route | Purpose |
|---|---|---|
POST | /api/v5/schools/{schoolCode}/students | Create a new student at the given school |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
StudentID | integer | Optional | Only used to pre-assign a specific permanent ID; omit to let Aeries assign one. |
LastName | string | Optional | |
FirstName | string | Optional | |
MiddleName | string | Optional | |
NameSuffix | string | Optional | |
Gender | string | Optional | |
Grade | integer | Optional | |
NextGrade | integer | Optional | |
NextSchool | integer | Optional | |
Birthdate | date | Optional | |
InactiveStatusCode | string | Optional | |
HomeLanguageCode | string | Optional | |
CorrespondenceLanguageCode | string | Optional | |
LanguageFluencyCode | string | Optional | |
HomePhone | string | Optional | |
LastSchool | integer | Optional | |
ResidenceSchool | integer | Optional | |
NextResidenceSchool | integer | Optional | |
EthnicityCode | string | Optional | |
Race1Code | string | Optional | |
Race2Code | string | Optional | |
Race3Code | string | Optional | |
Race4Code | string | Optional | |
Race5Code | string | Optional | |
SchoolEnterDate | date | Optional | |
DistrictEnterDate | date | Optional | |
BirthCity | string | Optional | |
BirthStateCode | string | Optional | |
BirthCountryCode | string | Optional | |
ParentEdLevelCode | string | Optional | |
ParentGuardianName | string | Optional | |
MailingAddress | string | Optional | |
MailingAddressCity | string | Optional | |
MailingAddressState | string | Optional | |
MailingAddressZipCode | string | Optional | |
MailingAddressZipExt | string | Optional | |
ResidenceAddress | string | Optional | |
ResidenceAddressCity | string | Optional | |
ResidenceAddressState | string | Optional | |
ResidenceAddressZipCode | string | Optional | |
ResidenceAddressZipExt | string | Optional | |
HomeLanguageSurveyFirstLanguageCode | string | Optional | |
HomeLanguageSurveyPrimaryLanguageCode | string | Optional | |
HomeLanguageSurveyHomeLanguageCode | string | Optional | |
HomeLanguageSurveyAdultLanguageCode | string | Optional | |
USEnterDate | date | Optional | |
USSchoolEnterDate | date | Optional | |
UserCode1 | string | Optional | |
UserCode2 | string | Optional | |
UserCode3 | string | Optional | |
UserCode4 | string | Optional | |
UserCode5 | string | Optional | |
UserCode6 | string | Optional | |
UserCode7 | string | Optional | |
UserCode8 | string | Optional | |
UserCode9 | string | Optional | |
UserCode10 | string | Optional | |
UserCode11 | string | Optional | |
UserCode12 | string | Optional | |
UserCode13 | string | Optional | |
RecordsReleaseCode | string | Optional | |
HomeLanguageSurveyDate | date | Optional | |
LastNameAlias | string | Optional | |
FirstNameAlias | string | Optional | |
MiddleNameAlias | string | Optional | |
SuffixAlias | string | Optional | |
InterIntraDistrictTransferCode | string | Optional | |
InterIntraDistrictStateCode | string | Optional | |
InterDistrictTransferExpirationDate | date | Optional | |
NextInterIntraDistrictTransferCode | string | Optional | |
MobilePhone | string | Optional | New. |
StudentEmail | string | Optional | New. |
RegistrationDate | date | Optional | New. Insert-only. |
RegistrationSource | string | Optional | New. Insert-only. |
Response
Returns the newly created student’s full record with HTTP 201 Created. This is the same record shape returned by the existing student read endpoints.
Key Behaviors
- It shares its underlying student-creation logic with the legacy
POST /api/v5/schools/{schoolCode}/InsertStudentendpoint, so the two are interchangeable for creating a student. That legacy endpoint predates Enroll Path and works for any v5 API customer; the Aeries API Full Documentation covers it in full. - No fields are enforced as required by the API itself beyond a non-empty request body and a valid school code.
Security
Requires the Student (STU) security area with Insert permission.
Update Student (District-Wide) ↑
Overview
A REST-conventional endpoint for updating a student’s record by permanent ID, without needing to specify a school code in the URL. It carries the same fields as the legacy update endpoint, plus the two new Enroll Path fields covered in Student Field Write Extensions below.
Endpoint
| Method | Route | Purpose |
|---|---|---|
PUT | /api/v5/students/{studentId} | Update an existing student, district-wide |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
LastName | string | Optional | |
FirstName | string | Optional | |
MiddleName | string | Optional | |
NameSuffix | string | Optional | |
Birthdate | date | Optional | |
Gender | string | Optional | |
Grade | integer | Optional | |
NextGrade | integer | Optional | |
NextSchool | integer | Optional | |
LastSchool | integer | Optional | |
ResidenceSchool | integer | Optional | |
NextResidenceSchool | integer | Optional | |
CorrespondenceLanguageCode | string | Optional | |
HomePhone | string | Optional | |
SchoolEnterDate | date | Optional | |
DistrictEnterDate | date | Optional | |
ParentEdLevelCode | string | Optional | |
ParentGuardianName | string | Optional | |
EthnicityCode | string | Optional | |
Race1Code | string | Optional | |
Race2Code | string | Optional | |
Race3Code | string | Optional | |
Race4Code | string | Optional | |
Race5Code | string | Optional | |
USEnterDate | date | Optional | |
USSchoolEnterDate | date | Optional | |
UserCode1 | string | Optional | |
UserCode2 | string | Optional | |
UserCode3 | string | Optional | |
UserCode4 | string | Optional | |
UserCode5 | string | Optional | |
UserCode6 | string | Optional | |
UserCode7 | string | Optional | |
UserCode8 | string | Optional | |
UserCode9 | string | Optional | |
UserCode10 | string | Optional | |
UserCode11 | string | Optional | |
UserCode12 | string | Optional | |
UserCode13 | string | Optional | |
EndOfYearStatusCode | string | Optional | |
RecordsReleaseCode | string | Optional | |
WellbeingDate | date | Optional | |
WellbeingScore | string | Optional | |
WellbeingAttentionCode | string | Optional | |
LastNameAlias | string | Optional | |
FirstNameAlias | string | Optional | |
MiddleNameAlias | string | Optional | |
SuffixAlias | string | Optional | |
InterIntraDistrictTransferCode | string | Optional | |
InterIntraDistrictStateCode | string | Optional | |
InterDistrictTransferExpirationDate | date | Optional | |
NextInterIntraDistrictTransferCode | string | Optional | |
InactiveStatusCode | string | Optional | |
MobilePhone | string | Optional | New. |
StudentEmail | string | Optional | New. |
Response
Returns the updated student’s record(s) with HTTP 200 OK. This is the same record shape returned by the existing student read endpoints. The response is a list, since the update can touch the student’s record at more than one school.
Key Behaviors
- It shares its underlying update logic with the legacy
POST /api/v5/UpdateStudent/{id}endpoint, so the two are interchangeable for updating a student. That legacy endpoint predates Enroll Path and isn’t restricted to it; the Aeries API Full Documentation covers it in full. - Only the fields you include are changed. Omitted fields are left as-is.
- No fields are enforced as required by the API itself.
Security
Requires the Student (STU) security area with Update permission.
Update Student (School-Scoped) ↑
Overview
The school-scoped counterpart to Update Student (District-Wide) above. Identical purpose, but scoped to a specific school in the URL.
Endpoint
| Method | Route | Purpose |
|---|---|---|
PUT | /api/v5/schools/{schoolCode}/students/{studentId} | Update an existing student at a specific school |
Request Payload
Same payload as Update Student (District-Wide) above. The two endpoints share an identical field set and differ only in URL scope.
Response
Returns the updated student’s record(s) with HTTP 200 OK, same shape as the district-wide endpoint above.
Key Behaviors
- The same is true of its legacy counterpart,
POST /api/v5/schools/{sc}/UpdateStudent/{id}. The two are interchangeable, and it’s covered alongside the other legacy routes in the Aeries API Full Documentation. - Only the fields you include are changed. Omitted fields are left as-is.
Security
Requires the Student (STU) security area with Update permission.
Update Student Address ↑
Overview
A dedicated endpoint for updating a student’s mailing and residence address fields, separate from the general student update endpoints above.
Endpoint
| Method | Route | Purpose |
|---|---|---|
PUT | /api/v5/students/{id}/address | Update a student’s address fields |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
MailingAddress | string | Optional | |
MailingAddressCity | string | Optional | |
MailingAddressState | string | Optional | |
MailingAddressZipCode | string | Optional | |
MailingAddressZipExt | string | Optional | |
ResidenceAddress | string | Optional | |
ResidenceAddressCity | string | Optional | |
ResidenceAddressState | string | Optional | |
ResidenceAddressZipCode | string | Optional | |
ResidenceAddressZipExt | string | Optional | |
CorrectionOrChange | string | Optional | |
EffectiveStartDate | date | Optional |
Response
Returns the updated student’s record(s) with HTTP 200 OK, same shape as the other student update endpoints.
Key Behaviors
- It shares its underlying logic with the legacy
POST /api/v5/UpdateStudentAddress/{id}endpoint, which the Aeries API Full Documentation covers in full. - Only the fields you include are changed. Omitted fields are left as-is.
- Exactly how
CorrectionOrChangeandEffectiveStartDateaffect the historical record is explained in that same documentation.
Security
Requires the Student (STU) security area with Update permission.
Student Field Write Extensions ↑
Overview
Four additional student fields, previously unavailable via the API, can now be written during student insert and update operations. These fields are available on the legacy student insert endpoint below, and on every new student create/update endpoint described in the preceding sections (Create Student, Update Student (District-Wide), and Update Student (School-Scoped)).
Endpoint
| Method | Route | Purpose |
|---|---|---|
POST | /api/v5/schools/{schoolCode}/InsertStudent | Create a student. Not limited to Enroll Path customers; the Aeries API Full Documentation has the complete endpoint reference |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
MobilePhone | string | Optional | Student’s mobile phone number collected during enrollment. Writable on insert and update. |
StudentEmail | string | Optional | Student’s email address. Writable on insert and update. Returned on GET as StudentEmailAddress. The field is named differently when reading it back. |
RegistrationDate | date | Optional | Date the enrollment registration was submitted. Insert only. If omitted, defaults to the current date/time. |
RegistrationSource | string | Optional | Identifies the originating enrollment system. Insert only. If omitted, defaults to a system-generated value identifying the API vendor. |
Response
| Field | Type | Notes |
|---|---|---|
MobilePhone | string | |
StudentEmailAddress | string | Read-back name differs from the request field StudentEmail. |
RegistrationDate | date | |
RegistrationSource | string |
Key Behaviors
- Writable only on insert:
RegistrationDateandRegistrationSourcehave no effect if sent on an update.
Security
These are new writable fields on the existing student create/update endpoints. Access is governed by the same security area already required for those endpoints.
Medical History ↑
Overview
Create, read, update, and delete student medical history records via the v5 API. This lets Enroll Path write medical information collected during enrollment directly into Aeries.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/schools/{sc}/students/{id}/medical-history | Retrieve medical history records |
POST | /api/v5/schools/{sc}/students/{id}/medical-history | Create a new record |
PUT | /api/v5/schools/{sc}/students/{id}/medical-history/{sq} | Update an existing record |
DELETE | /api/v5/schools/{sc}/students/{id}/medical-history/{sq} | Delete a record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
MedicalConditionCode | string | Optional | Validated against the district’s medical condition code list. This code-value validation is the enhancement Enroll Path adds to this endpoint. |
EnteredDate | date | Optional | Date the condition was recorded, in YYYY-MM-DD format. In responses this value is returned as Date. |
ParentComment | string | Optional | |
SchoolComment | string | Optional |
Response
| Field | Type | Notes |
|---|---|---|
PermanentID | integer | |
SchoolCode | integer | |
SequenceNumber | integer | Server-generated. |
MedicalConditionCode | string | Returned with its resolved description. |
Date | date | |
ParentComment | string | |
SchoolComment | string |
Key Behaviors
- Medical History predates Enroll Path and isn’t limited to it. The Aeries API Full Documentation has the full reference. What Enroll Path adds here is code-value validation of the Medical Condition Code on create and update.
- Invalid school codes return HTTP 404.
- DELETE returns HTTP 204 No Content. Deleting a nonexistent record returns HTTP 404.
Security
Requires the Medical History security area. Read is available to all v5 API callers; Insert, Update, and Delete are used for writes.
Language Assessment ↑
Overview
Write and retrieve a student’s language assessment record, including Home Language Survey data, state-specific fields, and signature tracking. This lets complete language assessment data be written to Aeries without manual entry.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/students/{studentId}/language-assessments | Retrieve the language assessment record for a student |
POST | /api/v5/students/{studentId}/language-assessments | Create a new record |
PUT | /api/v5/students/{studentId}/language-assessments | Update an existing record |
DELETE | /api/v5/students/{studentId}/language-assessments | Delete a record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
HomeLanguageSurveyFirstLanguageCode | string | Optional | Home Language Survey question 1. |
HomeLanguageSurveyPrimaryLanguageCode | string | Optional | Home Language Survey question 2. |
HomeLanguageSurveyHomeLanguageCode | string | Optional | Home Language Survey question 3. |
HomeLanguageSurveyAdultLanguageCode | string | Optional | Home Language Survey question 4. |
PreviousLanguageCode | string | Optional | Texas-specific. |
HomeLanguageSurveyDate | date | Optional | |
HomeLanguageSurveyCompletedBy | string | Optional | Insert only. It has no effect on update, so an existing value is never overwritten by a later PUT. |
SignatureName | string | Optional | Insert only, for the same reason as above. |
Source | string | Optional | Insert only. Validated against the district’s code list. |
HomeLanguageSurveyHash | string | Optional | |
USEnterDate | date | Optional | |
USPreSchoolEnterDate | date | Optional | |
USSchoolEnterDate | date | Optional | |
StateSchoolEnterDate | date | Optional | California school entry date. |
Response
| Field | Type | Notes |
|---|---|---|
StudentPermanentID | integer | The student’s permanent ID. Not part of the request payload; added on read. |
HomeLanguageSurveyFirstLanguageCode | string | — |
HomeLanguageSurveyPrimaryLanguageCode | string | — |
HomeLanguageSurveyHomeLanguageCode | string | — |
HomeLanguageSurveyAdultLanguageCode | string | — |
PreviousLanguageCode | string | — |
HomeLanguageSurveyDate | date | — |
HomeLanguageSurveyCompletedBy | string | — |
SignatureName | string | — |
Source | string | — |
HomeLanguageSurveyHash | string | — |
USEnterDate | date | — |
USPreSchoolEnterDate | date | — |
USSchoolEnterDate | date | — |
StateSchoolEnterDate | date | — |
Every Request Payload field above is echoed back as submitted. A student has at most one language assessment record, so GET returns a single object rather than an array.
Key Behaviors
- A student can only have one language assessment record.
GETreturns HTTP 404 when none exists yet. That is the normal "no assessment on file" signal, not an error. POSTreturns HTTP 201 Created on a new insert, and HTTP 409 Conflict if an active record already exists for the student. Treat 409 as informational (the record is already in place), not as a failure.- If a prior record was deleted, a new
POSTsilently restores it instead of returning 409. - Each field is individually gated by its own permission. A caller without permission for a given field simply can’t set it, rather than the whole request failing.
Security
Requires the Language Assessment security area. Read is available; Insert, Update, and Delete are used for writes.
Multi-Language Survey (MLS) ↑
Overview
Write records to the Multi-Language Survey, a separate record from Language Assessment. This supports the Texas Multi-Language Survey and California Foreign Language Instruction (FLI) forms, which collect additional language-slot and communication-preference data not represented in Language Assessment.
Endpoint
| Method | Route | Purpose |
|---|---|---|
POST | /api/v5/students/{studentId}/multi-language-surveys | Create or update the student’s Multi-Language Survey record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
FormType | string | Required | Must be either "TX_HLS" or "CA_FLI". Any other value is rejected. Determines which of the California-only fields below are accepted. |
SurveyDate | date | Optional | Date the survey was completed. |
HomeLanguage1–5 | string | Optional | The five language-slot fields for the "home language" question. |
CorrespondenceLanguage1–5 | string | Optional | The five language-slot fields for family correspondence. |
EnvironmentLanguage1–5 | string | Optional | The five language-slot fields for the student’s environment. |
ReceptiveLanguage1–5 | string | Optional | California forms only. It is rejected on a Texas submission. |
HomeMostUsedLanguage | string | Optional | Most-used language at home. |
ChildMostUsedLanguage | string | Optional | Student’s most-used language. |
PreferredWrittenLanguage | string | Optional | Family’s preferred written communication language. |
PreferredOralLanguage | string | Optional | Family’s preferred oral communication language. |
DLL | string | Optional | California only. Dual Language Learner designation, stored exactly as submitted; this endpoint never computes or overrides it. |
OptOut | string | Optional | California only. Survey opt-out, also store-only. If set, every language and follow-on field above must be left blank. |
Response
| Field | Type | Notes |
|---|---|---|
StudentPermanentId | integer | |
SurveyDate | date | |
HomeLanguage1–5 | string | |
CorrespondenceLanguage1–5 | string | |
EnvironmentLanguage1–5 | string | |
ReceptiveLanguage1–5 | string | California forms only. |
HomeMostUsedLanguage | string | |
ChildMostUsedLanguage | string | |
PreferredWrittenLanguage | string | |
PreferredOralLanguage | string | |
DualLanguageLearner | string | Returned under this name. The request field is DLL. |
FormType and OptOut are not echoed back in the response.
Key Behaviors
- The record is upserted, keyed on the student’s permanent ID. A repeat submission updates the existing record rather than creating a duplicate, and always overwrites with the newly submitted values.
- Multi-Language Survey is a separate record from Language Assessment, with its own field set. Submitting here does not change the language assessment record.
- On a successful submission, the student’s Home Language and Correspondence Language are updated from
HomeMostUsedLanguageandPreferredWrittenLanguage, but only when the corresponding submitted value is non-blank. An opt-out submission (with those fields blank) leaves the student’s existing values untouched. - A
studentIdthat doesn’t exist is rejected, and no changes are made.
Security
Requires the Multi-Language Survey security area with Insert permission.
Contact Comment Write Support ↑
Overview
The Comment field on student contact records can now be written via the API on both insert and update operations.
Endpoints
| Method | Route | Purpose |
|---|---|---|
POST | /api/v5/students/{studentId}/contacts | Create contact (Comment field now accepted) |
PUT | /api/v5/students/{studentId}/contacts/{sequence} | Update contact (Comment field now accepted) |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
Comment | string | Optional | Free-text comment stored on the contact record. |
Response
| Field | Type | Notes |
|---|---|---|
StudentID | integer | |
SequenceNumber | integer | Identifies this contact record. |
Comment | string | Echoed back as submitted, alongside the contact’s other standard fields. |
Key Behaviors
- These contact create/update endpoints predate Enroll Path and work for any v5 API customer; full details are in the Aeries API Full Documentation. What’s new for Enroll Path is that the Comment field is now accepted on both, not a new route.
- The Comment field is included in the contact’s full record on both create and update.
Security
Access is governed by the Contacts security area on the endpoint. There is no separate per-field gate, and the value is not silently ignored.
External Student IDs ↑
Overview
Create and read external student ID records via the API, useful for keeping a third-party system’s own student identifier linked to the Aeries record.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/schools/{schoolCode}/students/{studentId}/external-ids | List all external ID records for a student |
POST | /api/v5/schools/{schoolCode}/students/{studentId}/external-ids | Create a new external ID record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
VendorName | string | Required | Identifies the external system. Combined with the student and school, this must be unique. |
ExternalId | string | Optional | The identifier used by the external system. |
Username | string | Optional | |
EmailAddress | string | Optional | |
Status | string | Optional | Validated against the district’s code list. |
Response
| Field | Type | Notes |
|---|---|---|
StudentID | integer | |
SchoolCode | integer | |
VendorName | string | |
ExternalId | string | |
Username | string | |
EmailAddress | string | |
Status | string |
Key Behaviors
- The combination of student, school, and
VendorNamemust be unique. Duplicate keys return HTTP 409 Conflict.
Security
Requires the External Student IDs security area with Read and Insert permission.
Document Uploads ↑
Overview
Upload documents and metadata, read and update metadata, and delete documents via the v5 API.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/students/{studentId}/documents | List document metadata for a student (paginated) |
POST | /api/v5/students/{studentId}/documents | Upload a new document (metadata + binary in a single request) |
PUT | /api/v5/students/{studentId}/documents/{sq} | Update document metadata |
DELETE | /api/v5/students/{studentId}/documents/{sq} | Delete document and binary content |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
FileName | string | Required | |
Category | string | Optional | |
SubCategory | string | Optional | |
DocumentType | string | Optional | |
Grade | string | Optional | |
UploadedBy | string | Optional | Defaults to the calling vendor’s name if not supplied. |
Response
| Field | Type | Notes |
|---|---|---|
StudentID | integer | |
SequenceNumber | integer | Server-generated. |
FileName | string | |
ExtensionType | string | Reflects the stored file type. See the HEIC note below. |
FileSize | integer | |
UploadDate | date | |
Category | string | |
SubCategory | string | |
DocumentType | string | |
Source | string | |
UploadedBy | string | |
Grade | string | |
Locked | boolean |
The list endpoint wraps results as { Documents: [...], NextKey, HasMore }.
Key Behaviors
- A second upload with the same file name, category, sub-category, and document type as an existing document is treated as a duplicate: the existing document is returned instead of creating a new one.
- Results are paginated using keyset pagination. Pass the
afterparameter with the last document sequence number to retrieve the next page. Maximum page size is 100. - The maximum upload size is 50 MB. Oversized files return HTTP 413.
- DELETE removes both the metadata record and the binary file content.
- HEIC files are silently converted to JPG before storage. The
ExtensionTypefield in the response reflects the converted type (jpg), not the original (heic). This matters for uploads from iOS devices, where HEIC is the default camera format.
Security
Requires the Student Documents security area. Read is available; Insert, Update, and Delete are used for writes.
Document Confirmation Log ↑
Overview
Create and read document confirmation log records for compliance tracking, for example recording that a parent viewed or confirmed a specific document.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/schools/{schoolCode}/students/{studentId}/document-confirmations | List all document confirmation records for a student |
POST | /api/v5/schools/{schoolCode}/students/{studentId}/document-confirmations | Create a new confirmation record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
DocumentDefinitionID | string | Required | Identifies which document this confirmation is for. |
ConfirmationType | string ("C" or "V") | Required | "C" = Confirmed, "V" = Viewed. |
LanguageCode | string | Required | |
ConfirmationDate | date | Optional | Defaults to the current date/time. |
Source | string | Optional | |
DocumentHash | string | Optional | If not supplied, the server derives a hash from the document’s current content. |
SignerID | string | Optional | Opaque identifier for who confirmed, stored as submitted, not validated. |
Response
| Field | Type | Notes |
|---|---|---|
StudentID | integer | |
SchoolCode | integer | |
SequenceNumber | integer | Server-generated. |
DocumentDefinitionID | string | |
ConfirmationDate | date | |
ConfirmationType | string | |
LanguageCode | string | |
Source | string | |
DocumentHash | string | Insert response only. |
SignerID | string | Insert response only. |
AlreadyExisted | boolean | Insert response only. It is true if this call matched an existing same-day confirmation instead of creating a new one. |
Key Behaviors
- A confirmation matching the same student, school, document, language, type, and signer submitted earlier the same day is treated as a duplicate: the existing record is returned instead of creating a new one.
SequenceNumberis server-generated and appears only in the response. It is not a field callers send onPOST.- Pagination is not required. Confirmation records are scoped to a single student, which naturally limits the result set.
Security
Requires the Document Confirmations security area with Read and Insert permission.
Other District Enrollments ↑
Overview
Full create, read, update, and delete support for records of a student’s enrollment history at other districts.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/students/{id}/other-district-enrollments | Retrieve records for a student |
POST | /api/v5/students/{id}/other-district-enrollments | Create a new record |
PATCH | /api/v5/students/{id}/other-district-enrollments/{sq} | Update an existing record |
DELETE | /api/v5/students/{id}/other-district-enrollments/{sq} | Delete a record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
DistrictName | string | Required (one of DistrictName or SchoolName) | |
SchoolName | string | Required (one of DistrictName or SchoolName) | |
Address | string | Optional | |
City | string | Optional | |
State | string | Optional | |
Country | string | Optional | Use a value from the district’s country code list. |
ZipCode | string | Optional | |
EntryGrade | integer | Optional | |
LeaveGrade | integer | Optional | |
EntryDate | date | Optional | |
LeaveDate | date | Optional | |
Comments | string | Optional | |
ContactName | string | Optional | |
Telephone | string | Optional | |
Fax | string | Optional | |
Expelled | string | Optional | |
SpecialEducation | string | Optional | |
Section504 | string | Optional |
Response
| Field | Type | Notes |
|---|---|---|
StudentID | integer | |
SequenceNumber | integer | |
DistrictName | string | |
SchoolName | string | |
Address | string | |
City | string | |
State | string | |
Country | string | |
ZipCode | string | |
EntryGrade | integer | |
LeaveGrade | integer | |
EntryDate | date | |
LeaveDate | date | |
Comments | string | |
ContactName | string | |
Telephone | string | |
Fax | string | |
Expelled | string | |
SpecialEducation | string | |
Section504 | string |
Key Behaviors
- Either
DistrictNameorSchoolNamemust be provided. - Each field is individually gated by its own permission. A caller without permission for a given field simply can’t set it.
Security
Requires the Other District Enrollment security area. Read is available; Insert, Update, and Delete are used for writes.
Immunizations ↑
Overview
Read existing immunization records and write vaccination dose records via the v5 API. This lets Enroll Path sync vaccination data collected during enrollment directly into Aeries. Reading immunization records is generally available and works without Enroll Path. Enroll Path uses these endpoints too, and adds the dose-write operations.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/schools/{sc}/students/{id}/immunizations | List a student’s existing immunization records, so you can check what’s already on file before submitting new doses |
POST | /api/v5/schools/{sc}/students/{id}/immunizations | Write vaccination dose records |
PUT | /api/v5/schools/{sc}/students/{id}/immunizations | Write vaccination dose records (same behavior as POST) |
GET | /api/v5/vaccine-requirements | Retrieve the district-wide vaccination schedule (no school scope). Call this to determine which vaccines are required before writing doses |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
Vaccines | array | Required | One entry per vaccine. A single request can carry the full set. |
Vaccines[].Code | string | Required | One of: POL, DTP, MMR, HEPB, HEPA, HIB, VAR, TB, MCV, PCV, COVID, TDAP, DTPB. An unrecognized code is rejected for that entry (see Key Behaviors). |
Vaccines[].DoseDates | array of date or null | Optional | One entry per dose slot. A date records that dose; null at a position clears that dose slot. A shorter array leaves the remaining slots untouched. |
Response
| Field | Type | Notes |
|---|---|---|
SchoolCode | integer | |
StudentID | integer | |
Outcomes | array | One entry per vaccine submitted. |
Outcomes[].Code | string | |
Outcomes[].Status | string | "Created", "Updated", "Skipped", or "Failed". |
Outcomes[].WrittenDoses | array | The dose dates now on file for this vaccine. |
Outcomes[].SkipReason | string | Present when Status is "Skipped" or "Failed", for example "EMPTY_DOSES" or "VACCINE_CODE_MISMATCH". |
Outcomes[].Message | string | Human-readable detail. |
Key Behaviors
- Reading immunization records works the same for any v5 API customer, not only Enroll Path ones (full reference: Aeries API Full Documentation). Writing doses and the vaccine-requirements schedule, though, are new specifically for Enroll Path.
- Vaccines with no populated doses are omitted from the GET response. When no immunization records exist for the student yet, the response is an object with an empty
Outcomesarray (not HTTP 404). - When writing doses, send them in the
DoseDatesarray on each vaccine; the response returns the stored doses asWrittenDoses. - Each vaccine’s outcome reflects what changed for that vaccine: "Created" or "Updated" when doses were written, "Skipped" when nothing changed or no doses were sent, "Failed" for an unrecognized code.
Security
Read on the Immunizations security area covers the two immunization endpoints above; Insert is required to write doses. The vaccine-requirements endpoint uses the same security area.
Medical Insurance ↑
Overview
Create, read, update, and delete student medical insurance records via the v5 API. This lets Enroll Path write insurance information collected during enrollment directly into Aeries.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/schools/{sc}/students/{id}/medical-insurance | List a student’s existing insurance records, so you can check what’s already on file before adding a new one |
POST | /api/v5/schools/{sc}/students/{id}/medical-insurance | Create a new insurance record |
PATCH | /api/v5/schools/{sc}/students/{id}/medical-insurance/{sq} | Update an existing insurance record |
DELETE | /api/v5/schools/{sc}/students/{id}/medical-insurance/{sq} | Delete an insurance record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
CarrierCode | string | Optional | Validated against the district’s insurance carrier code list. |
InsuranceType | string | Optional | Validated against the district’s code list. |
CarrierName | string | Optional | |
GroupNumber | string | Optional | |
EffectiveDate | date | Optional | |
ExpirationDate | date | Optional | |
Medicaid | boolean | Optional | |
BenefitsId | string | Optional | Should be provided when Medicaid is set to Yes |
PolicyNumber | string | Optional | |
MemberId | string | Optional | |
PrimaryCareName | string | Optional | |
PrimaryCarePhone | string | Optional | |
PrimaryCoverage | boolean | Optional | |
SubscriberFirstName | string | Optional | |
SubscriberLastName | string | Optional | |
SubscriberAddress | string | Optional | |
SubscriberAddress2 | string | Optional | |
SubscriberCity | string | Optional | |
SubscriberState | string | Optional | |
SubscriberZip | string | Optional | |
Comments | string | Optional |
Response
| Field | Type | Notes |
|---|---|---|
SchoolCode | integer | |
StudentID | integer | |
SequenceNumber | integer | Server-generated. |
CarrierCode | string | |
InsuranceType | string | |
CarrierName | string | |
GroupNumber | string | |
EffectiveDate | date | |
ExpirationDate | date | |
Medicaid | boolean | |
BenefitsId | string | |
PolicyNumber | string | |
MemberId | string | |
PrimaryCareName | string | |
PrimaryCarePhone | string | |
PrimaryCoverage | boolean | |
SubscriberFirstName | string | |
SubscriberLastName | string | |
SubscriberAddress | string | |
SubscriberAddress2 | string | |
SubscriberCity | string | |
SubscriberState | string | |
SubscriberZip | string | |
Comments | string |
Key Behaviors
- Multiple insurance policies per student are supported. Each
POSTcreates a new record with its own sequence number rather than replacing an existing one. - Provide a Medicaid Benefits ID when the Medicaid indicator is set to Yes.
GETreturns an array. An empty array means the student has no insurance records on file. That’s a valid empty state, not an error. An invalid or nonexistent student returns HTTP 404.- Read existing records via
GETbefore inserting to avoid duplicates. The server does not enforce a collision constraint. - Enroll Path currently uses
GETandPOSTonly.PATCHandDELETEare available on the endpoint but not part of the current Enroll Path workflow.
Security
Requires the Medical Insurance Information security area. Read is available; Insert is required for POST.
Student Authorizations ↑
Overview
Create, read, and update student authorization records via the v5 API. This lets Enroll Path write authorization decisions collected during enrollment directly into Aeries, and later update their status, for example revoking a previously granted authorization. Student Authorizations is a generally available part of the v5 API and works without Enroll Path. Enroll Path uses it too.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/schools/{sc}/students/{id}/authorizations | List a student’s existing authorization records, so you can check what’s already on file before creating a new one |
POST | /api/v5/schools/{sc}/students/{id}/authorizations | Create a new authorization record |
PUT | /api/v5/schools/{sc}/students/{id}/authorizations/{sq} | Update an existing authorization record |
DELETE | /api/v5/schools/{sc}/students/{id}/authorizations/{sq} | Delete an authorization record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
TypeCode | string | Required | Validated against the district’s code list. This and the two code fields below are the code-value validation Enroll Path adds to this endpoint. |
MiscCode | string | Required | Validated against the district’s code list. |
SequenceNumber | integer | Optional | Required only when updating (PUT) a specific record. |
DateEntered | date | Optional | |
StatusCode | string | Optional | Validated against the district’s code list. Common values: 1 = Granted, 2 = Denied, 3 = Withdrawn. |
StatusDate | date | Optional | |
EffectiveEndDate | date | Optional | |
Comment | string | Optional | |
TestAdministration | string | Optional | |
Source | string | Optional |
Response
| Field | Type | Notes |
|---|---|---|
StudentID | integer | |
SchoolCode | integer | |
SequenceNumber | integer | |
DateEntered | date | |
TypeCode | string | |
MiscCode | string | |
Status | string | Returned under this name. The request field is StatusCode. |
StatusDate | date | |
EffectiveEndDate | date | |
Comment | string | |
TestAdministration | string | |
Source | string |
Key Behaviors
- Student Authorizations predates Enroll Path and isn’t restricted to it; the Aeries API Full Documentation covers it in full. Enroll Path’s contribution is code-value validation of TypeCode, MiscCode, and StatusCode on create and update.
- Enroll Path’s enrollment workflow uses
POSTto create an authorization andPUTto change its status, for example revoking a previously granted authorization. - One record is created per authorization. Multiple authorizations for one student require multiple
POSTcalls. - Read existing records via
GETbefore inserting to avoid duplicate rows on re-runs.
Security
Requires the Authorizations security area with Read, Insert, Update, and Delete permission.
Free and Reduced Price Meals — Income Eligibility ↑
Overview
Records a student’s income eligibility for Free and Reduced Price Meals, typically from an income survey response. Submitting a new record automatically closes the student’s current active record first.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/students/{id}/free-and-reduced | List income eligibility records for a student |
POST | /api/v5/students/{id}/free-and-reduced | Close the current active record and insert a new one |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
Code | string (F/R/N) | Required | |
ParentIncomeLevel | integer (1–3) | Required | |
SchoolCode | integer | Required | |
FamilySize | integer | Optional | |
Source | string | Optional |
Response
| Field | Type | Notes |
|---|---|---|
Code | string | |
ParentIncomeLevel | integer | |
SchoolCode | integer | |
FamilySize | integer | |
Source | string | |
ClosedPreviousSequenceNumber | integer | The sequence number of the record that was closed, or blank if none was active. |
Key Behaviors
- Any v5 API customer can read this endpoint, not just Enroll Path ones (Aeries API Full Documentation). Writing to it, though, is new for Enroll Path.
- This endpoint is student-scoped only. There is no school code in the URL.
- Submitting a new record automatically closes the student’s current active record before inserting the new one. Use this when a new income survey response should replace the prior one.
GETsupports anactiveOnlyquery parameter (defaults to true) to filter to the current active record only.
Security
Read is available; Insert is used for writes, under the Free and Reduced security area.
Free and Reduced Price Meals Records ↑
Overview
Full create, read, update, and delete access to a student’s Free and Reduced Price Meals records, carrying the record’s complete field set. Unlike Free and Reduced Price Meals — Income Eligibility above, submitting a new record here does not close any prior one.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/students/{id}/free-reduced-records | List a student’s existing records, so you can check what’s already on file before submitting a new one |
POST | /api/v5/students/{id}/free-reduced-records | Insert a new record without closing any prior one |
PATCH | /api/v5/students/{id}/free-reduced-records/{sq} | Update an existing record |
DELETE | /api/v5/students/{id}/free-reduced-records/{sq} | Delete a record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
FamilyStatus | string | Optional | |
ApplicationForm | string | Optional | |
FreeReducedCode | string | Optional | |
FamilySize | integer | Optional | |
AnnualIncome / MonthlyIncome / WeeklyIncome | decimal | Optional | |
ApplicantName | string | Optional | |
ApplicantSSN | string | Optional | |
ApplicationDate | date | Optional | |
StatusCode | string | Optional | |
UserCode | string | Optional | |
EligibilityCode | string | Optional | |
ModificationDate | date | Optional | |
DirectCertificationDate | date | Optional | |
DirectCertified | boolean | Optional | |
EffectiveStartDate / EffectiveEndDate | date | Optional | |
PriorityStartDate / PriorityEndDate | date | Optional | |
MealStartDate / MealExpirationDate | date | Optional | |
Comments | string | Optional | |
UserField2–8 | string | Optional | 7 general-purpose fields. |
SchoolCode | integer | Optional | |
Source | string | Optional | |
ParentSurveyResponse | string | Optional | |
ParentResponseDate | date | Optional | |
CteTransportation | string | Optional |
No field is enforced as required by the API itself. Use GET to see the exact fields on an existing record before submitting an update.
Response
| Field | Type | Notes |
|---|---|---|
StudentID | integer | |
SequenceNumber | integer | |
FamilyStatus | string | |
ApplicationForm | string | |
FreeReducedCode | string | |
FamilySize | integer | |
AnnualIncome / MonthlyIncome / WeeklyIncome | decimal | |
ApplicantName | string | |
ApplicantSSN | string | |
ApplicationDate | date | |
StatusCode | string | |
UserCode | string | |
EligibilityCode | string | |
ModificationDate | date | |
DirectCertificationDate | date | |
DirectCertified | boolean | |
EffectiveStartDate / EffectiveEndDate | date | |
PriorityStartDate / PriorityEndDate | date | |
MealStartDate / MealExpirationDate | date | |
Comments | string | |
UserField2–8 | string | 7 general-purpose fields. |
SchoolCode | integer | |
Source | string | |
ParentSurveyResponse | string | |
ParentResponseDate | date | |
CteTransportation | string |
Key Behaviors
- As with Income Eligibility above, reading here isn’t limited to Enroll Path customers (Aeries API Full Documentation has the details); writing is what’s new for Enroll Path.
- This endpoint is student-scoped only. There is no school code in the URL.
- Submitting a new record here is a plain insert. It does not close any prior record, so read existing records first and update or delete the prior active row yourself, or repeated submissions will accumulate rows.
Security
Read is available; Insert, Update, and Delete are used for writes, under the Free and Reduced security area.
Parent Survey Responses ↑
Overview
Create, read, and update Parent Survey Response records via the v5 API. This lets Enroll Path write residence, military, and foster care survey data collected during enrollment directly into Aeries.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/students/{id}/parent-survey-responses | Retrieve a student’s existing survey response records, so you can check what’s already on file before submitting a new one |
POST | /api/v5/students/{id}/parent-survey-responses | Create a new record |
PUT | /api/v5/students/{id}/parent-survey-responses | Update an existing record (fields you don’t include are left unchanged) |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
SurveyType | integer | Optional | 1 = Residence, 2 = Military, 4 = Foster. (A third value, 3 = LivingTree, appears on GET but is a read-only, third-party survey type that Enroll Path never writes.) |
AnswerCode | string | Optional | The survey answer. The meaning depends on SurveyType (for example, a homeless-dwelling code for Residence, or a yes/no/sub-status for Military and Foster). |
UnaccompaniedYouth | string | Optional | California only, ignored elsewhere. |
Source | string | Optional | Defaults to an Enroll Path attribution value. |
AdditionalChildren | array | Optional | California only, and accepted on create only. An update does not modify this list. Each entry: Name, Gender, Birthdate, Grade (a numeric value), SchoolName. |
SubmittedBy | string | Optional | The guardian’s name or email as asserted by the integration, recorded for reference, not used to authenticate the request. |
Response
| Field | Type | Notes |
|---|---|---|
StudentID | integer | |
SurveyType | integer | |
SequenceNumber | integer | Server-generated. |
DateSubmitted | date | |
AnswerCode | string | |
Status | string | "P" (Pending) by default, "C" once Confirmed. |
UnaccompaniedYouth | string | |
Source | string | |
AdditionalChildren | array |
Key Behaviors
- This endpoint writes the survey response only. It does not confirm it. Confirmation is handled downstream through the standard Aeries staff workflow.
- A confirmed record (
Status= "C") is protected. Attempting toPUTa confirmed record is rejected, so a finalized response can’t be overwritten. PATCHandDELETEare not available on this endpoint.
Security
Requires the Parent Response to Survey security area with Read and Insert permission.
School Supplemental Data ↑
Overview
Update specific per-school student fields via the v5 API without affecting any other field on the student record.
Endpoint
| Method | Route | Purpose |
|---|---|---|
PATCH | /api/v5/schools/{sc}/students/{id}/supplemental-data | Update one or more per-school student fields |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
Columns | array | Required | A request with an empty or missing Columns array is rejected. |
Columns[].ColumnCode | string | Required | Must correspond to a column code your district has configured for Supplemental Data. Supplemental Field Definitions above shows how to look these up. |
Columns[].Value | string | Required | The value to store, sent as a string even for numeric or date columns. Aeries interprets it according to the target column’s actual type. If the column is one tied to a district code list, the value is validated against that list. Set to null to clear the column. |
Response
| Field | Type | Notes |
|---|---|---|
SchoolCode | integer | |
StudentID | integer | |
Columns | array | Every column currently on file for the student at this school, not just the ones sent in the request. |
Each entry in Columns includes: ColumnCode, ColumnDescription, ColumnType, and Value.
Key Behaviors
- Only the columns you include are written. Every other field on the student record is left untouched.
- A request can include any number of columns.
- Scoped by the student’s permanent ID, not the legacy student number.
Security
Requires the Supplemental Data security area with Update permission.
Student Programs ↑
Overview
Create and read survey-driven Special Program (PGM) records for a student. Covers three programs: Foster Care, Residential/Homeless, and Family Military. Separate from the existing legacy Programs endpoint.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/students/{id}/programs | List a student’s existing program records, so you can check what’s already on file before creating a new one |
POST | /api/v5/students/{id}/programs | Create a new program record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
Code | string | Required | One of 190 (Foster Care), 191 (Residential/Homeless), or 192 (Family Military). The record’s existence is the program flag. There is no separate yes/no answer field. |
SchoolCode | integer | Required | The student’s enrolling school. Used to resolve the student and stored on the record. |
HomelessDwellingType | string | Optional | Applies only to Residential (Code 191). Ignored for other codes. |
UnaccompaniedYouth | string | Optional | Applies only to Residential (Code 191). Ignored for other codes. |
ProgramType | string | Optional | Reserved for future use. Not currently sent by Enroll Path. |
Response
| Field | Type | Notes |
|---|---|---|
StudentID | integer | |
SchoolCode | integer | |
SequenceNumber | integer | Server-generated. |
Code | string | |
ProgramType | string | |
StartDate | date | Server-stamped to the current date. |
UnaccompaniedYouth | string | Null for non-Residential codes. |
Key Behaviors
- GET defaults to codes 190/191/192 and active-only records; both are overridable via query parameters for administrative or forensic reads.
- This endpoint writes the program record only. The related survey answer (the "Yes" itself) is written separately to Parent Survey Responses. The two are not linked automatically by this endpoint.
- Separate from the existing legacy programs endpoint, built specifically for this survey-driven workflow.
Security
Requires the Student Programs security area with Read and Insert permission.
School & District APIs ↑
District- and school-level configuration and metadata endpoints. Not tied to one student.
Street Address Lookup ↑
Overview
Resolves a street address to the schools serving that address, by grade. Districts use this to determine the correct destination school during enrollment, before creating or transferring a student.
Endpoint
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/streets/lookup | Resolve an address to its school-by-grade zone map |
Query Parameters
| Field | Type | Required? | Notes |
|---|---|---|---|
address | string | Required | Full address string to parse and match, for example "123 Main St". |
city | string | Optional | Refines the match when the same street name exists in more than one city. |
grade | integer | Optional | Student grade. Aeries storage convention: -2 = PS, -1 = TK, 0–18 = K through post-12. Supply with statusTag to get a resolved school. |
nextGrade | integer | Optional | Next-year grade, for resolving the next-year school. |
statusTag | string | Optional | "*" for a pre-enrolled student, blank for an active one. Supply with grade to get a resolved school. |
Response
| Field | Type | Notes |
|---|---|---|
RecordNumber | integer | The matched street record, or 0 when there is no match. |
Status | string | "Found", "NotFound", or "MultiMatch". |
City | string | |
ZipCode | string | |
SchoolByGradeCurrent | object | Current-year school code keyed by grade. |
SchoolByGradeNext | object | Next-year school code keyed by grade. |
ResolvedSchool | integer | Set only when grade and statusTag were both supplied and the match succeeded. |
ResolvedNextSchool | integer | Set alongside ResolvedSchool. |
Candidates | array | Present only when Status is "MultiMatch". Lists candidate matches to disambiguate, each with: RecordNumber, StreetName, Direction, City, HouseLow, HouseHigh, EvenOdd. |
Key Behaviors
- HTTP 200 is returned for every match outcome, including "NotFound" and "MultiMatch". Check the
Statusfield, not the HTTP status code, to determine the outcome. Only a missingaddressreturns HTTP 400. - This is a read-only endpoint. It does not create or modify any records.
Security
Requires the Streets security area with Read permission.
Supplemental Field Definitions ↑
Overview
Returns the district’s available School Supplemental Data column definitions, so an integration can present a field-mapping picker without hardcoding district-specific column codes. Complements School Supplemental Data.
Endpoint
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/supplemental-fields | List the district’s available Supplemental Data columns |
Query Parameters
This is a read-only endpoint with no query parameters.
Response
| Field | Type | Notes |
|---|---|---|
Fields | array | One entry per available Supplemental Data column. |
ETag | string | Cache-validation token. Also returned as the HTTP ETag header. |
Each entry in Fields includes: ColumnCode, ColumnType, and Description.
Key Behaviors
- Send the previously-returned ETag as an
If-None-Matchrequest header to get HTTP 304 Not Modified instead of the full body when nothing has changed. - This endpoint is district-scoped only. It has no student or school parameter.
Security
Requires the Supplemental Data security area with Read permission.
Portal Document Definitions ↑
Overview
Manage the district’s catalog of Portal Document definitions: the documents parents acknowledge or confirm during enrollment, including their binary content per language. This is separate from Document Uploads and Document Confirmation Log, which handle documents for an individual student rather than the district’s document catalog.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/portal-documents | List every document definition in the district’s catalog |
GET | /api/v5/portal-documents/{did}/content/{languageCode} | Retrieve the binary content of one document’s language variant |
POST | /api/v5/portal-documents | Create a new document definition with its first language variant |
PUT | /api/v5/portal-documents/{did}/content/{languageCode} | Create or update one language variant on an existing document definition |
Request Payload
| Endpoint | Field | Type | Required? | Notes |
|---|---|---|---|---|
POST | Title | string | Required | |
Content | string | Required | Base64-encoded binary content. Maximum decoded size is 20 MB. | |
FileName | string | Required | ||
LanguageCode | string | Required | Must match a language code Aeries recognizes. | |
Comment | string | Optional | ||
FileType | string | Optional | File extension, for example "pdf" or "html". | |
SetOnlineEnrollmentVisible | boolean | Optional | When true, makes the document visible in Online Enrollment immediately. | |
ExpectedDocumentHash | string | Optional | If supplied, the server verifies it against the computed content hash and rejects a mismatch with HTTP 422. | |
PUT .../content/{languageCode} | Title | string | Required | |
Content | string | Required | Base64-encoded binary content. Maximum decoded size is 20 MB. | |
FileName | string | Required | ||
Comment | string | Optional | ||
FileType | string | Optional | ||
ExpectedDocumentHash | string | Optional |
Response
| Endpoint | Field | Type | Notes |
|---|---|---|---|
GET (list) | DocumentDefinitionID | string | One entry per (document, language) pair. |
LanguageCode | string | ||
Title | string | ||
Comment | string | ||
FileType | string | ||
FileName | string | ||
Timestamp | date | Last updated. | |
OnlineEnrollmentVisible | boolean | ||
LanguageLabel | string | Human-readable language name, for example "Spanish(Español)". | |
POST / PUT | DocumentDefinitionID | string | |
LanguageCode | string | ||
DocumentHash | string | ||
OnlineEnrollmentVisible | boolean |
GET .../content/{languageCode} returns the raw binary content directly (not JSON), with the appropriate content type and an ETag header for conditional requests.
Key Behaviors
- POST returns HTTP 201 Created. PUT returns HTTP 201 Created when it creates a new language variant, or HTTP 200 OK when it updates an existing one.
- PUT is a full overwrite of that language variant. Every field in the request replaces the stored value, and there is no partial update.
- The content-retrieval GET supports conditional requests: send the previous
ETagasIf-None-Matchto receive HTTP 304 Not Modified when the content hasn’t changed. - This endpoint is district-scoped, with no school or student parameter. It manages the document catalog itself, not any one student’s confirmations.
Security
Requires the Document Setup security area. Read is available; Insert is required for the create endpoint; Update is required for the language-variant upsert.
Writable Schema ↑
Overview
Returns a read-only catalog of every Aeries table and field the v5 EnrollPath API surface accepts as input. Integration Center uses this catalog to build a vendor-field-to-Aeries-column mapping picker. This is distinct from and complements Student Field Write Extensions above, which covers a small set of ad hoc supplemental extension fields; Writable Schema is the full cross-entity writable-field catalog.
Endpoint
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/enroll-path/writable-schema | List every writable Aeries table and field the v5 EnrollPath API accepts as input |
Query Parameters
This is a district-scoped, read-only endpoint that takes no query parameters.
Response
| Field | Type | Notes |
|---|---|---|
Table | string | Aeries table code, for example STU or CON. |
Description | string | Human-readable label for the table. |
Fields | array | One entry per writable field on this table. |
Each entry in Fields includes: Description, ColumnCode, IsCodeset, and IsSchoolBased. IsCodeset is true when valid values for that field must be looked up via the district’s code list for that table and column; IsSchoolBased is only meaningful when IsCodeset is true, and indicates the codeset varies per school.
Key Behaviors
- This is a
GET-only endpoint. There is no request body to validate. - Results are always scoped to the calling district.
- Tables covered:
STU(Student Data),CON(Contacts),AUT(Authorizations),ODE(Other District Enrollments),MII(Medical Insurance),MHS(Medical History),LAC(Language Assessment),MLS(Multi-Language Survey),FRE(Free and Reduced Meals),PRS(Parent Survey Responses),PGM(Special Program Details),PWA(Parent Web Account),PWS(Parent Web Student Link),DOC(Student Documents),DCL(Document Confirmation Log),ESI(External Student IDs),IMM(Immunizations, exposed as logical vaccine codes rather than raw columns), andSUP(Supplemental Data). SUPentries are computed dynamically per district rather than static, so an emptySUPentry is a valid response, not an error.
Security
No security area scope is required beyond standard v5 API authentication — this endpoint returns schema metadata only, not district or student data.
District Options ↑
Overview
Read and update a narrow, EnrollPath-specific set of district options. This endpoint does not expose general district settings or preferences — those are managed through an older Classic UI that is not exposed via this v5 endpoint.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/district/options | Read the district’s current EnrollPath options |
PATCH | /api/v5/district/options | Update one or more EnrollPath options |
Request Payload
GET takes no request body. The fields below apply to PATCH only.
| Field | Type | Required? | Notes |
|---|---|---|---|
EnrollPathShortName | string | Optional | Must be non-empty if provided, and match the pattern ^[a-zA-Z0-9_-]+$ (letters, digits, hyphens, and underscores only). |
EnrollPathEnvironment | string | Optional | Must be one of "", "sandbox", "dev", or "staging". A non-empty value is only accepted when the request is made against a development server; otherwise the request is rejected with HTTP 400 and error code EnvironmentRestrictedToDevServer. |
At least one of the two fields must be included in the PATCH body, or the request is rejected with HTTP 400 and error code RequestBodyRequired if the body itself is null or missing.
Response
| Field | Type | Notes |
|---|---|---|
EnrollPathShortName | string | |
EnrollPathEnvironment | string |
Key Behaviors
- A non-empty
EnrollPathEnvironmentis only accepted when the API is called against a development server; calling it against any other server with a non-empty value returns HTTP 400 with error codeEnvironmentRestrictedToDevServer. - Each
PATCHis audited under the calling vendor’s username. - Both
GETandPATCHreturn the same response shape.
Security
Requires the District Options security area with Read or Update permission depending on the operation.
SAML Service Providers ↑
Overview
Create, read, update, and delete the district’s SAML service provider records, used to configure single sign-on integrations. Vendors use this to register and maintain their own service provider metadata without going through Aeries Support.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/saml/service-providers | List all SAML service provider records |
GET | /api/v5/saml/service-providers/{rid} | Get one record by record ID |
POST | /api/v5/saml/service-providers | Create a new record |
PUT | /api/v5/saml/service-providers/{rid} | Update an existing record |
DELETE | /api/v5/saml/service-providers/{rid} | Delete a record |
Request Payload
| Field | Type | Required? | Notes |
|---|---|---|---|
DisplayName | string | Optional | Maximum 255 characters. |
EntityId | string | Required | Maximum 255 characters. Required and non-blank on create; cannot be blanked on update. Must be unique case-insensitively across all non-deleted records for the district — a duplicate is rejected with HTTP 400 and error code EntityIdDuplicate. |
AssertionConsumerServiceUrl | string | Optional | Maximum 255 characters. Must parse as a valid absolute URI if provided. |
Certificate | string | Optional | Must start with -----BEGIN CERTIFICATE----- if provided. This is a string-prefix format check only, not full X.509 validation. |
MetadataUrl | string | Optional | Maximum 255 characters. |
SignSamlResponse | boolean | Optional | |
SignAssertion | boolean | Optional | |
RequireSignedAuthnRequest | boolean | Optional | |
SupportIdpInitiatedSso | boolean | Optional | |
RelayState | string | Optional | Maximum 255 characters. |
Type | string | Optional | Maximum 2 characters. Must be a valid code from the district’s SSP code table. The type code EP (Enroll Path) is special-cased to allow only one non-deleted record of that type per district — attempting to create a second returns HTTP 409 Conflict. |
The request body is required for both POST and PUT; a missing body returns HTTP 400. Disabled cannot be set through either verb: new records are always created disabled, and PUT cannot enable or disable an existing record. PUT is a sparse update — fields omitted from the request body are preserved, not cleared.
Response
| Field | Type | Notes |
|---|---|---|
RecordID | integer | |
DisplayName | string | |
EntityID | string | |
AssertionConsumerServiceUrl | string | |
Certificate | string | |
MetadataUrl | string | |
SignSamlResponse | boolean | |
SignAssertion | boolean | |
RequireSignedAuthnRequest | boolean | |
SupportIdpInitiatedSso | boolean | |
Disabled | boolean | Read-only via this API. Set only through the Classic admin SSO configuration screens, which are not covered in this article. |
RelayState | string | |
Type | string |
Key Behaviors
EntityIdmust be unique case-insensitively across all non-deleted records for the district; a duplicate returns HTTP 400 with error codeEntityIdDuplicate.- Only one non-deleted record with
TypeEP(Enroll Path) is allowed per district; creating a second returns HTTP 409 Conflict. - The
Certificatecheck is a string-prefix format check only, not full X.509 certificate validation. {rid}must be a positive integer, or the API returns HTTP 400.- A request body is required for
POSTandPUT; a missing body returns HTTP 400. - New records are always created disabled, and
Disabledcannot be changed throughPOSTorPUT. DELETEis a soft delete and returns HTTP 204 No Content.
Security
Requires the SAML Service Providers security area with Read, Insert, Update, or Delete permission depending on the operation.
Portal APIs ↑
Parent Portal account endpoints.
Parent Portal Account Provisioning ↑
Overview
When an API caller flagged as an Enroll Path Vendor Type inserts or updates a qualifying contact, the system automatically provisions a Parent Portal account for that contact, searching for an existing account by email, creating a new (or resurrecting a prior) account when none is found, and linking the student to that account. This eliminates the need for school staff to manually create portal accounts for parents. Automatic provisioning happens only for API callers whose Vendor Type is flagged as Enroll Path on the API Security page; the three endpoints below can be called directly by any caller with the right permission, regardless of Vendor Type.
Endpoints
| Method | Route | Purpose |
|---|---|---|
GET | /api/v5/parent-portal/accounts/lookup?email={email} | Check whether a portal account exists for this email |
POST | /api/v5/parent-portal/accounts | Create or resurrect a portal account |
POST | /api/v5/parent-portal/accounts/{aid}/students | Link a student to an existing portal account |
Request Payload
| Endpoint | Field | Type | Required? | Notes |
|---|---|---|---|---|
GET .../lookup | email | string (query param) | Required | |
POST /accounts | Email | string | Required | |
FirstName | string | Optional | ||
LastName | string | Optional | ||
StudentID | integer | Optional | When sent together with ContactSequenceNumber, the system checks whether that contact is restricted before creating the account. | |
ContactSequenceNumber | integer | Optional | See note above. | |
POST .../students | StudentID | integer | Required | The student to link to this portal account. |
Response
| Endpoint | Field | Type | Notes |
|---|---|---|---|
GET .../lookup | AID | integer | Portal account ID. |
AST | string | Account status. | |
POST /accounts | AID | integer | |
AST | string | ||
ActivationUrl | string | Assembled by the server. The raw activation code is never returned to the caller. | |
POST .../students | AccountID | integer | Note the different field name from the two responses above (AccountID here vs. AID above). The three endpoints don’t share one response shape. |
StudentID | integer | ||
Status | string | Also a different field name than AST above. Returned with HTTP 201 Created. |
Key Behaviors
- A contact is eligible for automatic provisioning when: the API caller’s Vendor Type is flagged as Enroll Path, the contact has a valid email address, the contact is the Primary contact, the contact’s Access to Portal flag is on, the district has not disabled portal account creation, and no account or access already exists for that email/student combination.
- Duplicate account creation is prevented. If a portal account already exists for the contact’s email, no new account is created.
- All provisioning attempts are logged regardless of outcome.
- The link-student call is idempotent on the account/student pair.
Security
Requires the Parent Portal Account security area with Read and Insert permission for the three endpoints above.
Frequently Asked Questions ↑
How do I grant the Aeries Enroll Path integration access to these endpoints?
Navigate to the API Security page in Aeries and grant the appropriate security area permission to the Aeries Enroll Path API certificate. Each section above lists its required security area.
Does the student transfer endpoint withdraw the student from their current school?
No. The Key Behaviors in the Inter-School Student Transfer section above cover exactly what does and doesn’t happen to the origin school record.
Can I search for students who are no longer active?
Yes. The district-wide student search returns both active and inactive/transferred students. The EnrollmentStatus field in the response indicates the current status.
Is Aeries Enroll Path granted access to all of these endpoints automatically?
No. Each endpoint requires a specific API security area permission. District administrators control which security areas are granted to the Aeries Enroll Path integration on the API Security page. Parent Portal account provisioning is additionally restricted to API callers whose Vendor Type is flagged as Enroll Path on the API Security page.