For the complete documentation index, see llms.txt. This page is also available as Markdown.

Students

This page describes all the APIs relating to students.

Get All Students

get
/api/v3/students

Retrieves a list of all students. Results are paginated. Use the page and per_page query parameters to control pagination.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
pageinteger · min: 1Optional

The page number of results to return.

Default: 1
per_pageinteger · min: 1 · max: 200Optional

Request for how many records to return.

Default: 50
countintegerOptional

Synonym for per_page

since_idintegerOptional

Return results with an ID greater than the specified ID.

since_datestring · date_timeOptional

Return results updated since the specified date, in UTC timezone

Example: 2025-01-01T00:00:00Z
statusstring · enumOptional

Indicates the current state in a student's life-cycle

Possible values:
status_levelstringOptional

Filter students by status level, need to provide status slug

Example: paid
enrollment_yearstringOptional

Filter students by enrollment year

Example: 2023
parent_idsstringOptional

Filter students by parent IDs

Example: 1,2,3
archivedbooleanOptional

Filter students by archived status. True returns only archived students, false returns only non-archived students. Omitting this parameter returns both.

Example: true
application_form_idstringOptional

Filter students by the Application form(s) they are currently attached to. Accepts a single form id or a comma-separated list (OR-combined); when the parameter is sent, any blank, non-numeric or empty-slot value is rejected with a 400 rather than ignored. For schools with one Application form per academic year this reproduces the admin Import/Export population; discover form ids via GET /api/v3/forms (applicable_academic_years maps years to form ids only for per-year form versions; for standalone multi-year forms use GET /api/v3/students/applied).

Example: 12,34
fieldsstringOptional

Comma-separated list of fields to include in the response. Supports nested fields using parentheses

Example: id,name,custom_fields(parent_guardians(id,email))
link_fieldsstringOptional

Comma-separated list of fields to include in the response. Supports nested fields using parentheses

Example: id,email,custom_fields(language)
Responses
200

successful

application/json
get/api/v3/students
GET /api/v3/students HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "students": [
    {
      "id": 1,
      "first_name": "text",
      "last_name": "text",
      "email": "text",
      "student_id": "text",
      "address": "text",
      "address_ii": "text",
      "city": "text",
      "state": "text",
      "postal_code": "text",
      "enrollment_year": 1,
      "birth_date": "2026-01-01",
      "grade": "text",
      "status": "pending",
      "country": "text",
      "other_name": "text",
      "preferred_name": "text",
      "name": "text",
      "gender": "Male",
      "custom_status_name": "text",
      "status_level": "text",
      "status_changed_at": "2026-01-01T00:00:00.000Z",
      "status_level_changed_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z",
      "latest_activity_date": "2026-01-01T00:00:00.000Z",
      "nationality": "text",
      "serial_number": 1,
      "agent_id": 1,
      "managebac_student_id": 1,
      "mb_id": "text",
      "campus_id": 1,
      "campus": "text",
      "custom_id": "text",
      "applicant_id": "text",
      "tags": [
        "text"
      ],
      "applied_at": "2026-01-01T00:00:00.000Z",
      "enrolled_at": "2026-01-01T00:00:00.000Z",
      "inquired_date": "2026-01-01T00:00:00.000Z",
      "inquired_at": "2026-01-01T00:00:00.000Z",
      "applied_date": "2026-01-01T00:00:00.000Z",
      "admitted_date": "2026-01-01T00:00:00.000Z",
      "wait_listed_date": "2026-01-01T00:00:00.000Z",
      "declined_date": "2026-01-01T00:00:00.000Z",
      "enrolled_date": "2026-01-01T00:00:00.000Z",
      "withdrawn_date": "2026-01-01T00:00:00.000Z",
      "graduated_date": "2026-01-01T00:00:00.000Z",
      "representative": "text",
      "enrollment_date": "2026-01-01",
      "source_campaign": "text",
      "contact_date": "2026-01-01",
      "checklist_state": "text",
      "passport_id": "text",
      "enrollment_grade": "text",
      "parent_ids": [
        1
      ],
      "sibling_ids": [
        1
      ],
      "student_flags": [
        "text"
      ],
      "sis_ids": [
        {
          "name": "text",
          "value": "text"
        }
      ],
      "application_form": {
        "id": 1,
        "academic_year": 1
      },
      "application_history": [
        {
          "academic_year": 1,
          "applied_date": "2026-01-01"
        }
      ],
      "reenrollments": [
        {
          "ree_year": "text",
          "ree_grade": "text",
          "ree_status": "text",
          "ree_decision_date": "2026-01-01",
          "ree_status_changed_at": "2026-01-01T00:00:00.000Z"
        }
      ],
      "custom_fields": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "archived": true,
      "archived_on": "2026-01-01",
      "has_invalid_status_history": true
    }
  ],
  "linked": {
    "parents": [
      {
        "id": 1,
        "first_name": "text",
        "last_name": "text",
        "other_name": "text",
        "preferred_name": "text",
        "email": "text",
        "student_id": "text",
        "address": "text",
        "address_ii": "text",
        "city": "text",
        "state": "text",
        "postal_code": "text",
        "enrollment_year": 1,
        "birth_date": "2026-01-01",
        "passport_id": "text",
        "gender": "Male",
        "country": "text",
        "serial_number": 1,
        "custom_id": "text",
        "name": "text",
        "parent_id": "text",
        "prefix": "text",
        "phone": "text",
        "mobile_phone": "text",
        "parent_role": "text",
        "full_address": "text",
        "managebac_parent_id": "text",
        "mb_id": "text",
        "profile_photo": "text",
        "profile_photo_updated_at": "2026-01-01T00:00:00.000Z",
        "updated_at": "2026-01-01T00:00:00.000Z",
        "child_ids": [
          1
        ],
        "custom_fields": {
          "ANY_ADDITIONAL_PROPERTY": "text"
        }
      }
    ]
  },
  "meta": {
    "page": 1,
    "pages": 1,
    "per_page": 1
  }
}

Create a student

post
/api/v3/students

Create a student. Returns the unique id in the body as well as attributes if successful.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
first_namestringRequired
last_namestringRequired
emailstringOptional
student_idstring · nullableOptional

Human-readable identifier commonly used for record reconciliation across platforms. Populated and maintained by the school.

addressstring · nullableOptional
address_iistring · nullableOptional
citystring · nullableOptional
statestring · nullableOptional
postal_codestring · nullableOptional
enrollment_yearinteger · nullableOptional
birth_datestring · date · nullableOptional
gradestring · nullableOptional

The grade label (e.g. 'Grade 9', 'K'). Must match a valid grade configured for the school.

statusstring · enum · nullableOptional

The state of the application

Possible values:
countrystring · nullableOptional

The ISO 3166 country name

other_namestring · nullableOptional
preferred_namestring · nullableOptional
Responses
201

successful

application/json
idintegerOptional

Serial database ID that uniquely identifies the student record

first_namestringOptional
last_namestringOptional
emailstringOptional
student_idstring · nullableOptional

Human-readable identifier commonly used for record reconciliation across platforms. Populated and maintained by the school.

addressstring · nullableOptional
address_iistring · nullableOptional
citystring · nullableOptional
statestring · nullableOptional
postal_codestring · nullableOptional
enrollment_yearinteger · nullableOptional
birth_datestring · date · nullableOptional
gradestringOptional

The grade

statusstring · enum · nullableOptional

The state of the application

Possible values:
countrystring · nullableOptional

The ISO 3166 country name

other_namestring · nullableOptional
preferred_namestring · nullableOptional
namestringOptional
genderstring · enum · nullableOptionalPossible values:
custom_status_namestring · nullableRead-onlyOptional

The school-specific display name for the current status

status_levelstring · nullableOptional

A more specific classification under the parent status, used to indicate the detailed sub-status of the student.

status_changed_atstring · date-time · nullableOptional
status_level_changed_atstring · date-time · nullableOptional

When the current status_level was last assigned or changed. null when the student has no status level.

updated_atstring · date-time · nullableOptional
latest_activity_datestring · date-time · nullableOptional
nationalitystring · nullableOptional
serial_numberinteger · nullableOptional
agent_idinteger · nullableOptional

The ID of the agent this student is associated to

managebac_student_idinteger · nullableOptional

Synonym for mb_id

mb_idstring · nullableOptional

Internal reference ID maintained by Faria SyncHub for integration with ManageBac

campus_idinteger · nullableOptional
campusstring · nullableOptional

The name of the campus this student is associated to

custom_idstring · nullableOptional

Synonym for student_id

applicant_idstringOptional
tagsstring[]Optional
applied_atstring · date-time · nullableOptional
enrolled_atstring · date-time · nullableOptional
inquired_datestring · date-time · nullableOptional
inquired_atstring · date-time · nullableOptional
applied_datestring · date-time · nullableOptional
admitted_datestring · date-time · nullableOptional
wait_listed_datestring · date-time · nullableOptional
declined_datestring · date-time · nullableOptional
enrolled_datestring · date-time · nullableOptional
withdrawn_datestring · date-time · nullableOptional
graduated_datestring · date-time · nullableOptional
representativestring · nullableOptional
enrollment_datestring · dateOptional
source_campaignstring · nullableOptional
contact_datestring · date · nullableOptional
checklist_statestringOptional
passport_idstring · nullableOptional
enrollment_gradestring · nullableOptional
parent_idsinteger[]Optional

Array of parent ID of parents associated with this student.

sibling_idsinteger[]Optional
student_flagsstring[]Optional
archivedbooleanOptional

Whether the student is archived (typically Graduated or Withdrawn)

archived_onstring · date · nullableOptional

The date when the student was archived

has_invalid_status_historybooleanRead-onlyOptional

Whether the student's application status history is internally inconsistent

post/api/v3/students
POST /api/v3/students HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 303

{
  "first_name": "text",
  "last_name": "text",
  "email": "text",
  "student_id": "text",
  "address": "text",
  "address_ii": "text",
  "city": "text",
  "state": "text",
  "postal_code": "text",
  "enrollment_year": 1,
  "birth_date": "2026-01-01",
  "grade": "text",
  "status": "pending",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text"
}
{
  "id": 1,
  "first_name": "text",
  "last_name": "text",
  "email": "text",
  "student_id": "text",
  "address": "text",
  "address_ii": "text",
  "city": "text",
  "state": "text",
  "postal_code": "text",
  "enrollment_year": 1,
  "birth_date": "2026-01-01",
  "grade": "text",
  "status": "pending",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text",
  "name": "text",
  "gender": "Male",
  "custom_status_name": "text",
  "status_level": "text",
  "status_changed_at": "2026-01-01T00:00:00.000Z",
  "status_level_changed_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "latest_activity_date": "2026-01-01T00:00:00.000Z",
  "nationality": "text",
  "serial_number": 1,
  "agent_id": 1,
  "managebac_student_id": 1,
  "mb_id": "text",
  "campus_id": 1,
  "campus": "text",
  "custom_id": "text",
  "applicant_id": "text",
  "tags": [
    "text"
  ],
  "applied_at": "2026-01-01T00:00:00.000Z",
  "enrolled_at": "2026-01-01T00:00:00.000Z",
  "inquired_date": "2026-01-01T00:00:00.000Z",
  "inquired_at": "2026-01-01T00:00:00.000Z",
  "applied_date": "2026-01-01T00:00:00.000Z",
  "admitted_date": "2026-01-01T00:00:00.000Z",
  "wait_listed_date": "2026-01-01T00:00:00.000Z",
  "declined_date": "2026-01-01T00:00:00.000Z",
  "enrolled_date": "2026-01-01T00:00:00.000Z",
  "withdrawn_date": "2026-01-01T00:00:00.000Z",
  "graduated_date": "2026-01-01T00:00:00.000Z",
  "representative": "text",
  "enrollment_date": "2026-01-01",
  "source_campaign": "text",
  "contact_date": "2026-01-01",
  "checklist_state": "text",
  "passport_id": "text",
  "enrollment_grade": "text",
  "parent_ids": [
    1
  ],
  "sibling_ids": [
    1
  ],
  "student_flags": [
    "text"
  ],
  "sis_ids": [
    {
      "name": "text",
      "value": "text"
    }
  ],
  "application_form": {
    "id": 1,
    "academic_year": 1
  },
  "application_history": [
    {
      "academic_year": 1,
      "applied_date": "2026-01-01"
    }
  ],
  "reenrollments": [
    {
      "ree_year": "text",
      "ree_grade": "text",
      "ree_status": "text",
      "ree_decision_date": "2026-01-01",
      "ree_status_changed_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "archived": true,
  "archived_on": "2026-01-01",
  "has_invalid_status_history": true
}

Get Students Who Applied for an Academic Year

get
/api/v3/students/applied

Lists students who applied for the given academic year, keyed on their Applied status events rather than the live enrollment_year tag or the current application-form attachment. This is stable across form setups and re-applies, so per-year application counts reconcile with the Conversion Funnel's application stage. Use match=first to keep only students whose first-ever application was for that year. The response shape matches GET /api/v3/students, and each student carries their year-by-year application_history.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
academic_yearstringRequired

The academic year the student applied for (4-digit start year).

Example: 2026
matchstring · enumOptional

any (default) matches students with an Applied event for the year; first narrows to students whose earliest application was for that year.

Default: anyPossible values:
pageinteger · min: 1Optional

The page number of results to return.

Default: 1
per_pageinteger · min: 1 · max: 200Optional

Request for how many records to return.

Default: 50
countintegerOptional

Synonym for per_page

fieldsstringOptional

Comma-separated list of fields to include in the response. Supports nested fields using parentheses

Example: id,name,custom_fields(parent_guardians(id,email))
link_fieldsstringOptional

Comma-separated list of fields to include in the response. Supports nested fields using parentheses

Example: id,email,custom_fields(language)
Responses
200

successful

application/json
get/api/v3/students/applied
GET /api/v3/students/applied?academic_year=2026 HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "students": [
    {
      "id": 1,
      "first_name": "text",
      "last_name": "text",
      "email": "text",
      "student_id": "text",
      "address": "text",
      "address_ii": "text",
      "city": "text",
      "state": "text",
      "postal_code": "text",
      "enrollment_year": 1,
      "birth_date": "2026-01-01",
      "grade": "text",
      "status": "pending",
      "country": "text",
      "other_name": "text",
      "preferred_name": "text",
      "name": "text",
      "gender": "Male",
      "custom_status_name": "text",
      "status_level": "text",
      "status_changed_at": "2026-01-01T00:00:00.000Z",
      "status_level_changed_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z",
      "latest_activity_date": "2026-01-01T00:00:00.000Z",
      "nationality": "text",
      "serial_number": 1,
      "agent_id": 1,
      "managebac_student_id": 1,
      "mb_id": "text",
      "campus_id": 1,
      "campus": "text",
      "custom_id": "text",
      "applicant_id": "text",
      "tags": [
        "text"
      ],
      "applied_at": "2026-01-01T00:00:00.000Z",
      "enrolled_at": "2026-01-01T00:00:00.000Z",
      "inquired_date": "2026-01-01T00:00:00.000Z",
      "inquired_at": "2026-01-01T00:00:00.000Z",
      "applied_date": "2026-01-01T00:00:00.000Z",
      "admitted_date": "2026-01-01T00:00:00.000Z",
      "wait_listed_date": "2026-01-01T00:00:00.000Z",
      "declined_date": "2026-01-01T00:00:00.000Z",
      "enrolled_date": "2026-01-01T00:00:00.000Z",
      "withdrawn_date": "2026-01-01T00:00:00.000Z",
      "graduated_date": "2026-01-01T00:00:00.000Z",
      "representative": "text",
      "enrollment_date": "2026-01-01",
      "source_campaign": "text",
      "contact_date": "2026-01-01",
      "checklist_state": "text",
      "passport_id": "text",
      "enrollment_grade": "text",
      "parent_ids": [
        1
      ],
      "sibling_ids": [
        1
      ],
      "student_flags": [
        "text"
      ],
      "sis_ids": [
        {
          "name": "text",
          "value": "text"
        }
      ],
      "application_form": {
        "id": 1,
        "academic_year": 1
      },
      "application_history": [
        {
          "academic_year": 1,
          "applied_date": "2026-01-01"
        }
      ],
      "reenrollments": [
        {
          "ree_year": "text",
          "ree_grade": "text",
          "ree_status": "text",
          "ree_decision_date": "2026-01-01",
          "ree_status_changed_at": "2026-01-01T00:00:00.000Z"
        }
      ],
      "custom_fields": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "archived": true,
      "archived_on": "2026-01-01",
      "has_invalid_status_history": true
    }
  ],
  "linked": {
    "parents": [
      {
        "id": 1,
        "first_name": "text",
        "last_name": "text",
        "other_name": "text",
        "preferred_name": "text",
        "email": "text",
        "student_id": "text",
        "address": "text",
        "address_ii": "text",
        "city": "text",
        "state": "text",
        "postal_code": "text",
        "enrollment_year": 1,
        "birth_date": "2026-01-01",
        "passport_id": "text",
        "gender": "Male",
        "country": "text",
        "serial_number": 1,
        "custom_id": "text",
        "name": "text",
        "parent_id": "text",
        "prefix": "text",
        "phone": "text",
        "mobile_phone": "text",
        "parent_role": "text",
        "full_address": "text",
        "managebac_parent_id": "text",
        "mb_id": "text",
        "profile_photo": "text",
        "profile_photo_updated_at": "2026-01-01T00:00:00.000Z",
        "updated_at": "2026-01-01T00:00:00.000Z",
        "child_ids": [
          1
        ],
        "custom_fields": {
          "ANY_ADDITIONAL_PROPERTY": "text"
        }
      }
    ]
  },
  "meta": {
    "page": 1,
    "pages": 1,
    "per_page": 1
  }
}

Get a Student

get
/api/v3/students/{id}

Fetch an instance of a student

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Serial database ID used to refer to a unique student record in OpenApply

Query parameters
fieldsstringOptional

Comma-separated list of fields to include in the response. Supports nested fields using parentheses

Example: id,name,custom_fields(parent_guardians(id,email))
Responses
200

successful

application/json
idintegerOptional

Serial database ID that uniquely identifies the student record

first_namestringOptional
last_namestringOptional
emailstringOptional
student_idstring · nullableOptional

Human-readable identifier commonly used for record reconciliation across platforms. Populated and maintained by the school.

addressstring · nullableOptional
address_iistring · nullableOptional
citystring · nullableOptional
statestring · nullableOptional
postal_codestring · nullableOptional
enrollment_yearinteger · nullableOptional
birth_datestring · date · nullableOptional
gradestringOptional

The grade

statusstring · enum · nullableOptional

The state of the application

Possible values:
countrystring · nullableOptional

The ISO 3166 country name

other_namestring · nullableOptional
preferred_namestring · nullableOptional
namestringOptional
genderstring · enum · nullableOptionalPossible values:
custom_status_namestring · nullableRead-onlyOptional

The school-specific display name for the current status

status_levelstring · nullableOptional

A more specific classification under the parent status, used to indicate the detailed sub-status of the student.

status_changed_atstring · date-time · nullableOptional
status_level_changed_atstring · date-time · nullableOptional

When the current status_level was last assigned or changed. null when the student has no status level.

updated_atstring · date-time · nullableOptional
latest_activity_datestring · date-time · nullableOptional
nationalitystring · nullableOptional
serial_numberinteger · nullableOptional
agent_idinteger · nullableOptional

The ID of the agent this student is associated to

managebac_student_idinteger · nullableOptional

Synonym for mb_id

mb_idstring · nullableOptional

Internal reference ID maintained by Faria SyncHub for integration with ManageBac

campus_idinteger · nullableOptional
campusstring · nullableOptional

The name of the campus this student is associated to

custom_idstring · nullableOptional

Synonym for student_id

applicant_idstringOptional
tagsstring[]Optional
applied_atstring · date-time · nullableOptional
enrolled_atstring · date-time · nullableOptional
inquired_datestring · date-time · nullableOptional
inquired_atstring · date-time · nullableOptional
applied_datestring · date-time · nullableOptional
admitted_datestring · date-time · nullableOptional
wait_listed_datestring · date-time · nullableOptional
declined_datestring · date-time · nullableOptional
enrolled_datestring · date-time · nullableOptional
withdrawn_datestring · date-time · nullableOptional
graduated_datestring · date-time · nullableOptional
representativestring · nullableOptional
enrollment_datestring · dateOptional
source_campaignstring · nullableOptional
contact_datestring · date · nullableOptional
checklist_statestringOptional
passport_idstring · nullableOptional
enrollment_gradestring · nullableOptional
parent_idsinteger[]Optional

Array of parent ID of parents associated with this student.

sibling_idsinteger[]Optional
student_flagsstring[]Optional
archivedbooleanOptional

Whether the student is archived (typically Graduated or Withdrawn)

archived_onstring · date · nullableOptional

The date when the student was archived

has_invalid_status_historybooleanRead-onlyOptional

Whether the student's application status history is internally inconsistent

get/api/v3/students/{id}
GET /api/v3/students/{id} HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": 1,
  "first_name": "text",
  "last_name": "text",
  "email": "text",
  "student_id": "text",
  "address": "text",
  "address_ii": "text",
  "city": "text",
  "state": "text",
  "postal_code": "text",
  "enrollment_year": 1,
  "birth_date": "2026-01-01",
  "grade": "text",
  "status": "pending",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text",
  "name": "text",
  "gender": "Male",
  "custom_status_name": "text",
  "status_level": "text",
  "status_changed_at": "2026-01-01T00:00:00.000Z",
  "status_level_changed_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "latest_activity_date": "2026-01-01T00:00:00.000Z",
  "nationality": "text",
  "serial_number": 1,
  "agent_id": 1,
  "managebac_student_id": 1,
  "mb_id": "text",
  "campus_id": 1,
  "campus": "text",
  "custom_id": "text",
  "applicant_id": "text",
  "tags": [
    "text"
  ],
  "applied_at": "2026-01-01T00:00:00.000Z",
  "enrolled_at": "2026-01-01T00:00:00.000Z",
  "inquired_date": "2026-01-01T00:00:00.000Z",
  "inquired_at": "2026-01-01T00:00:00.000Z",
  "applied_date": "2026-01-01T00:00:00.000Z",
  "admitted_date": "2026-01-01T00:00:00.000Z",
  "wait_listed_date": "2026-01-01T00:00:00.000Z",
  "declined_date": "2026-01-01T00:00:00.000Z",
  "enrolled_date": "2026-01-01T00:00:00.000Z",
  "withdrawn_date": "2026-01-01T00:00:00.000Z",
  "graduated_date": "2026-01-01T00:00:00.000Z",
  "representative": "text",
  "enrollment_date": "2026-01-01",
  "source_campaign": "text",
  "contact_date": "2026-01-01",
  "checklist_state": "text",
  "passport_id": "text",
  "enrollment_grade": "text",
  "parent_ids": [
    1
  ],
  "sibling_ids": [
    1
  ],
  "student_flags": [
    "text"
  ],
  "sis_ids": [
    {
      "name": "text",
      "value": "text"
    }
  ],
  "application_form": {
    "id": 1,
    "academic_year": 1
  },
  "application_history": [
    {
      "academic_year": 1,
      "applied_date": "2026-01-01"
    }
  ],
  "reenrollments": [
    {
      "ree_year": "text",
      "ree_grade": "text",
      "ree_status": "text",
      "ree_decision_date": "2026-01-01",
      "ree_status_changed_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "archived": true,
  "archived_on": "2026-01-01",
  "has_invalid_status_history": true
}

Update a student

patch
/api/v3/students/{id}

Updates a student

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Serial database ID used to refer to a unique student record in OpenApply

Query parameters
fieldsstringOptional

Comma-separated list of fields to include in the response. Supports nested fields using parentheses

Example: id,name,custom_fields(parent_guardians(id,email))
Body
first_namestringOptional
last_namestringOptional
emailstringOptional
student_idstring · nullableOptional

Human-readable identifier commonly used for record reconciliation across platforms. Populated and maintained by the school.

addressstring · nullableOptional
address_iistring · nullableOptional
citystring · nullableOptional
statestring · nullableOptional
postal_codestring · nullableOptional
enrollment_yearinteger · nullableOptional
birth_datestring · date · nullableOptional
gradestring · nullableOptional

The grade label (e.g. 'Grade 9', 'K'). Must match a valid grade configured for the school.

statusstring · enum · nullableOptional

The state of the application

Possible values:
effective_onstring · nullableOptional

The date when the status change became effective (YYYY-MM-DD format only). Only used when status is being changed. If omitted, defaults to the later of today's date or the latest status history's effective date, in the school's configured timezone.

Example: 2025-09-01Pattern: ^\d{4}-\d{2}-\d{2}$
countrystring · nullableOptional

The ISO 3166 country name

other_namestring · nullableOptional
preferred_namestring · nullableOptional
Responses
200

successful

application/json
idintegerOptional

Serial database ID that uniquely identifies the student record

first_namestringOptional
last_namestringOptional
emailstringOptional
student_idstring · nullableOptional

Human-readable identifier commonly used for record reconciliation across platforms. Populated and maintained by the school.

addressstring · nullableOptional
address_iistring · nullableOptional
citystring · nullableOptional
statestring · nullableOptional
postal_codestring · nullableOptional
enrollment_yearinteger · nullableOptional
birth_datestring · date · nullableOptional
gradestringOptional

The grade

statusstring · enum · nullableOptional

The state of the application

Possible values:
countrystring · nullableOptional

The ISO 3166 country name

other_namestring · nullableOptional
preferred_namestring · nullableOptional
namestringOptional
genderstring · enum · nullableOptionalPossible values:
custom_status_namestring · nullableRead-onlyOptional

The school-specific display name for the current status

status_levelstring · nullableOptional

A more specific classification under the parent status, used to indicate the detailed sub-status of the student.

status_changed_atstring · date-time · nullableOptional
status_level_changed_atstring · date-time · nullableOptional

When the current status_level was last assigned or changed. null when the student has no status level.

updated_atstring · date-time · nullableOptional
latest_activity_datestring · date-time · nullableOptional
nationalitystring · nullableOptional
serial_numberinteger · nullableOptional
agent_idinteger · nullableOptional

The ID of the agent this student is associated to

managebac_student_idinteger · nullableOptional

Synonym for mb_id

mb_idstring · nullableOptional

Internal reference ID maintained by Faria SyncHub for integration with ManageBac

campus_idinteger · nullableOptional
campusstring · nullableOptional

The name of the campus this student is associated to

custom_idstring · nullableOptional

Synonym for student_id

applicant_idstringOptional
tagsstring[]Optional
applied_atstring · date-time · nullableOptional
enrolled_atstring · date-time · nullableOptional
inquired_datestring · date-time · nullableOptional
inquired_atstring · date-time · nullableOptional
applied_datestring · date-time · nullableOptional
admitted_datestring · date-time · nullableOptional
wait_listed_datestring · date-time · nullableOptional
declined_datestring · date-time · nullableOptional
enrolled_datestring · date-time · nullableOptional
withdrawn_datestring · date-time · nullableOptional
graduated_datestring · date-time · nullableOptional
representativestring · nullableOptional
enrollment_datestring · dateOptional
source_campaignstring · nullableOptional
contact_datestring · date · nullableOptional
checklist_statestringOptional
passport_idstring · nullableOptional
enrollment_gradestring · nullableOptional
parent_idsinteger[]Optional

Array of parent ID of parents associated with this student.

sibling_idsinteger[]Optional
student_flagsstring[]Optional
archivedbooleanOptional

Whether the student is archived (typically Graduated or Withdrawn)

archived_onstring · date · nullableOptional

The date when the student was archived

has_invalid_status_historybooleanRead-onlyOptional

Whether the student's application status history is internally inconsistent

patch/api/v3/students/{id}
PATCH /api/v3/students/{id} HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 331

{
  "first_name": "text",
  "last_name": "text",
  "email": "text",
  "student_id": "text",
  "address": "text",
  "address_ii": "text",
  "city": "text",
  "state": "text",
  "postal_code": "text",
  "enrollment_year": 1,
  "birth_date": "2026-01-01",
  "grade": "text",
  "status": "pending",
  "effective_on": "2025-09-01",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text"
}
{
  "id": 1,
  "first_name": "text",
  "last_name": "text",
  "email": "text",
  "student_id": "text",
  "address": "text",
  "address_ii": "text",
  "city": "text",
  "state": "text",
  "postal_code": "text",
  "enrollment_year": 1,
  "birth_date": "2026-01-01",
  "grade": "text",
  "status": "pending",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text",
  "name": "text",
  "gender": "Male",
  "custom_status_name": "text",
  "status_level": "text",
  "status_changed_at": "2026-01-01T00:00:00.000Z",
  "status_level_changed_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "latest_activity_date": "2026-01-01T00:00:00.000Z",
  "nationality": "text",
  "serial_number": 1,
  "agent_id": 1,
  "managebac_student_id": 1,
  "mb_id": "text",
  "campus_id": 1,
  "campus": "text",
  "custom_id": "text",
  "applicant_id": "text",
  "tags": [
    "text"
  ],
  "applied_at": "2026-01-01T00:00:00.000Z",
  "enrolled_at": "2026-01-01T00:00:00.000Z",
  "inquired_date": "2026-01-01T00:00:00.000Z",
  "inquired_at": "2026-01-01T00:00:00.000Z",
  "applied_date": "2026-01-01T00:00:00.000Z",
  "admitted_date": "2026-01-01T00:00:00.000Z",
  "wait_listed_date": "2026-01-01T00:00:00.000Z",
  "declined_date": "2026-01-01T00:00:00.000Z",
  "enrolled_date": "2026-01-01T00:00:00.000Z",
  "withdrawn_date": "2026-01-01T00:00:00.000Z",
  "graduated_date": "2026-01-01T00:00:00.000Z",
  "representative": "text",
  "enrollment_date": "2026-01-01",
  "source_campaign": "text",
  "contact_date": "2026-01-01",
  "checklist_state": "text",
  "passport_id": "text",
  "enrollment_grade": "text",
  "parent_ids": [
    1
  ],
  "sibling_ids": [
    1
  ],
  "student_flags": [
    "text"
  ],
  "sis_ids": [
    {
      "name": "text",
      "value": "text"
    }
  ],
  "application_form": {
    "id": 1,
    "academic_year": 1
  },
  "application_history": [
    {
      "academic_year": 1,
      "applied_date": "2026-01-01"
    }
  ],
  "reenrollments": [
    {
      "ree_year": "text",
      "ree_grade": "text",
      "ree_status": "text",
      "ree_decision_date": "2026-01-01",
      "ree_status_changed_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "archived": true,
  "archived_on": "2026-01-01",
  "has_invalid_status_history": true
}

Update Student Status

patch
/api/v3/students/{id}/status

Update a student's status and/or status level

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Serial database ID used to refer to a unique student record in OpenApply

Body
Responses
200

successful

application/json
idintegerOptional

Serial database ID that uniquely identifies the student record

first_namestringOptional
last_namestringOptional
emailstringOptional
student_idstring · nullableOptional

Human-readable identifier commonly used for record reconciliation across platforms. Populated and maintained by the school.

addressstring · nullableOptional
address_iistring · nullableOptional
citystring · nullableOptional
statestring · nullableOptional
postal_codestring · nullableOptional
enrollment_yearinteger · nullableOptional
birth_datestring · date · nullableOptional
gradestringOptional

The grade

statusstring · enum · nullableOptional

The state of the application

Possible values:
countrystring · nullableOptional

The ISO 3166 country name

other_namestring · nullableOptional
preferred_namestring · nullableOptional
namestringOptional
genderstring · enum · nullableOptionalPossible values:
custom_status_namestring · nullableRead-onlyOptional

The school-specific display name for the current status

status_levelstring · nullableOptional

A more specific classification under the parent status, used to indicate the detailed sub-status of the student.

status_changed_atstring · date-time · nullableOptional
status_level_changed_atstring · date-time · nullableOptional

When the current status_level was last assigned or changed. null when the student has no status level.

updated_atstring · date-time · nullableOptional
latest_activity_datestring · date-time · nullableOptional
nationalitystring · nullableOptional
serial_numberinteger · nullableOptional
agent_idinteger · nullableOptional

The ID of the agent this student is associated to

managebac_student_idinteger · nullableOptional

Synonym for mb_id

mb_idstring · nullableOptional

Internal reference ID maintained by Faria SyncHub for integration with ManageBac

campus_idinteger · nullableOptional
campusstring · nullableOptional

The name of the campus this student is associated to

custom_idstring · nullableOptional

Synonym for student_id

applicant_idstringOptional
tagsstring[]Optional
applied_atstring · date-time · nullableOptional
enrolled_atstring · date-time · nullableOptional
inquired_datestring · date-time · nullableOptional
inquired_atstring · date-time · nullableOptional
applied_datestring · date-time · nullableOptional
admitted_datestring · date-time · nullableOptional
wait_listed_datestring · date-time · nullableOptional
declined_datestring · date-time · nullableOptional
enrolled_datestring · date-time · nullableOptional
withdrawn_datestring · date-time · nullableOptional
graduated_datestring · date-time · nullableOptional
representativestring · nullableOptional
enrollment_datestring · dateOptional
source_campaignstring · nullableOptional
contact_datestring · date · nullableOptional
checklist_statestringOptional
passport_idstring · nullableOptional
enrollment_gradestring · nullableOptional
parent_idsinteger[]Optional

Array of parent ID of parents associated with this student.

sibling_idsinteger[]Optional
student_flagsstring[]Optional
archivedbooleanOptional

Whether the student is archived (typically Graduated or Withdrawn)

archived_onstring · date · nullableOptional

The date when the student was archived

has_invalid_status_historybooleanRead-onlyOptional

Whether the student's application status history is internally inconsistent

patch/api/v3/students/{id}/status
PATCH /api/v3/students/{id}/status HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 79

{
  "student": {
    "status": "text",
    "status_level": "text",
    "effective_on": "2025-09-01"
  }
}
{
  "id": 1,
  "first_name": "text",
  "last_name": "text",
  "email": "text",
  "student_id": "text",
  "address": "text",
  "address_ii": "text",
  "city": "text",
  "state": "text",
  "postal_code": "text",
  "enrollment_year": 1,
  "birth_date": "2026-01-01",
  "grade": "text",
  "status": "pending",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text",
  "name": "text",
  "gender": "Male",
  "custom_status_name": "text",
  "status_level": "text",
  "status_changed_at": "2026-01-01T00:00:00.000Z",
  "status_level_changed_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "latest_activity_date": "2026-01-01T00:00:00.000Z",
  "nationality": "text",
  "serial_number": 1,
  "agent_id": 1,
  "managebac_student_id": 1,
  "mb_id": "text",
  "campus_id": 1,
  "campus": "text",
  "custom_id": "text",
  "applicant_id": "text",
  "tags": [
    "text"
  ],
  "applied_at": "2026-01-01T00:00:00.000Z",
  "enrolled_at": "2026-01-01T00:00:00.000Z",
  "inquired_date": "2026-01-01T00:00:00.000Z",
  "inquired_at": "2026-01-01T00:00:00.000Z",
  "applied_date": "2026-01-01T00:00:00.000Z",
  "admitted_date": "2026-01-01T00:00:00.000Z",
  "wait_listed_date": "2026-01-01T00:00:00.000Z",
  "declined_date": "2026-01-01T00:00:00.000Z",
  "enrolled_date": "2026-01-01T00:00:00.000Z",
  "withdrawn_date": "2026-01-01T00:00:00.000Z",
  "graduated_date": "2026-01-01T00:00:00.000Z",
  "representative": "text",
  "enrollment_date": "2026-01-01",
  "source_campaign": "text",
  "contact_date": "2026-01-01",
  "checklist_state": "text",
  "passport_id": "text",
  "enrollment_grade": "text",
  "parent_ids": [
    1
  ],
  "sibling_ids": [
    1
  ],
  "student_flags": [
    "text"
  ],
  "sis_ids": [
    {
      "name": "text",
      "value": "text"
    }
  ],
  "application_form": {
    "id": 1,
    "academic_year": 1
  },
  "application_history": [
    {
      "academic_year": 1,
      "applied_date": "2026-01-01"
    }
  ],
  "reenrollments": [
    {
      "ree_year": "text",
      "ree_grade": "text",
      "ree_status": "text",
      "ree_decision_date": "2026-01-01",
      "ree_status_changed_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "archived": true,
  "archived_on": "2026-01-01",
  "has_invalid_status_history": true
}

Get Student Status History

get
/api/v3/students/{id}/status_history

Get the application status history for a specific student

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Serial database ID used to refer to a unique student record in OpenApply

Responses
200

successful

application/json
get/api/v3/students/{id}/status_history
GET /api/v3/students/{id}/status_history HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "student": {
    "id": 1,
    "serial_number": "text",
    "custom_id": "text",
    "applicant_id": "text",
    "application_history": [
      {
        "status": {
          "id": 1,
          "name": "text",
          "custom_name": "text",
          "code": "text"
        },
        "enrollment_year": "text",
        "effective_on": "2026-01-01",
        "created_at": "2026-01-01T00:00:00.000Z",
        "updated_at": "2026-01-01T00:00:00.000Z",
        "status_level": {
          "id": 1,
          "name": "text",
          "created_at": "2026-01-01T00:00:00.000Z",
          "updated_at": "2026-01-01T00:00:00.000Z"
        }
      }
    ]
  }
}

Get Student Status Events

get
/api/v3/students/status_events

Returns a paginated list of student status change events.

Filterable by status updated_at (since_date_to_status) and enrollment_year.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
since_date_to_statusstring · dateOptional

Filter on status.updated_at

enrollment_yearintegerOptional

Filter on enrollment_year

pageinteger · min: 1Optional

The page number of results to return.

Default: 1
per_pageinteger · min: 1 · max: 200Optional

Request for how many records to return.

Default: 50
countintegerOptional

Synonym for per_page

Responses
200

successful

application/json
get/api/v3/students/status_events
GET /api/v3/students/status_events HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

successful

{
  "students": [
    {
      "student": {
        "id": 1,
        "custom_id": "text",
        "enrollment_year": 1
      },
      "to": {
        "status": {
          "id": 1,
          "name": "text",
          "display_name": "text",
          "updated_at": "2026-01-01",
          "created_at": "2026-01-01"
        },
        "status_level": {
          "id": 1,
          "name": "text",
          "updated_at": "2026-01-01",
          "created_at": "2026-01-01"
        }
      },
      "from": {
        "status": {
          "id": 1,
          "name": "text",
          "display_name": "text",
          "updated_at": "2026-01-01",
          "created_at": "2026-01-01"
        },
        "status_level": {
          "id": 1,
          "name": "text",
          "updated_at": "2026-01-01",
          "created_at": "2026-01-01"
        }
      }
    }
  ],
  "meta": {
    "pages": 1,
    "per_page": 1,
    "total_entries": 1,
    "total_pages": 1
  }
}

Update student custom fields

patch
/api/v3/students/{id}/custom_fields

Updates student custom fields by field ID.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Student ID

Body
Responses
200

successful

application/json
patch/api/v3/students/{id}/custom_fields
PATCH /api/v3/students/{id}/custom_fields HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 56

{
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  }
}
{
  "student": {
    "id": 1,
    "custom_fields": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
}

Delete grouped field record

delete
/api/v3/students/{id}/custom_fields/{field_id}/records/{record_id}

Delete a grouped custom-field record from a student.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Student ID

field_idintegerRequired

Group field ID

record_idintegerRequired

Grouped record ID

Responses
200

deleted

application/json
messagestringOptional
delete/api/v3/students/{id}/custom_fields/{field_id}/records/{record_id}
DELETE /api/v3/students/{id}/custom_fields/{field_id}/records/{record_id} HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "message": "Record deleted"
}

Last updated