Students

This page describes all the APIs relating to students.

Get All Students

get

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

Authorizations
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
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
GET /api/v3/students HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

successful

{
  "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": "2025-10-06",
      "status": "pending",
      "country": "text",
      "other_name": "text",
      "preferred_name": "text",
      "name": "text",
      "gender": "Male",
      "status_level": "text",
      "status_changed_at": "2025-10-06T10:27:23.456Z",
      "updated_at": "2025-10-06T10:27:23.456Z",
      "latest_activity_date": "2025-10-06T10:27:23.456Z",
      "nationality": "text",
      "grade": "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": "2025-10-06T10:27:23.456Z",
      "enrolled_at": "2025-10-06T10:27:23.456Z",
      "inquired_date": "2025-10-06T10:27:23.456Z",
      "inquired_at": "2025-10-06T10:27:23.456Z",
      "applied_date": "2025-10-06T10:27:23.456Z",
      "admitted_date": "2025-10-06T10:27:23.456Z",
      "wait_listed_date": "2025-10-06T10:27:23.456Z",
      "declined_date": "2025-10-06T10:27:23.456Z",
      "enrolled_date": "2025-10-06T10:27:23.456Z",
      "withdrawn_date": "2025-10-06T10:27:23.456Z",
      "graduated_date": "2025-10-06T10:27:23.456Z",
      "representative": "text",
      "enrollment_date": "2025-10-06",
      "source_campaign": "text",
      "contact_date": "2025-10-06",
      "checklist_state": "text",
      "passport_id": "text",
      "enrollment_grade": "text",
      "parent_ids": [
        1
      ],
      "sibling_ids": [
        1
      ],
      "student_flags": [
        "text"
      ],
      "reenrollments": [
        {
          "ree_year": "text",
          "ree_grade": "text",
          "ree_status": "text",
          "ree_decision_date": "2025-10-06",
          "ree_status_changed_at": "2025-10-06T10:27:23.456Z"
        }
      ],
      "custom_fields": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      }
    }
  ],
  "meta": {
    "pages": 1,
    "per_page": 1,
    "count": 1
  }
}

Create a student

post

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

Authorizations
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
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
post
POST /api/v3/students HTTP/1.1
Host: api.openapply.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 288

{
  "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": "2025-10-06",
  "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": "2025-10-06",
  "status": "pending",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text",
  "name": "text",
  "gender": "Male",
  "status_level": "text",
  "status_changed_at": "2025-10-06T10:27:23.456Z",
  "updated_at": "2025-10-06T10:27:23.456Z",
  "latest_activity_date": "2025-10-06T10:27:23.456Z",
  "nationality": "text",
  "grade": "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": "2025-10-06T10:27:23.456Z",
  "enrolled_at": "2025-10-06T10:27:23.456Z",
  "inquired_date": "2025-10-06T10:27:23.456Z",
  "inquired_at": "2025-10-06T10:27:23.456Z",
  "applied_date": "2025-10-06T10:27:23.456Z",
  "admitted_date": "2025-10-06T10:27:23.456Z",
  "wait_listed_date": "2025-10-06T10:27:23.456Z",
  "declined_date": "2025-10-06T10:27:23.456Z",
  "enrolled_date": "2025-10-06T10:27:23.456Z",
  "withdrawn_date": "2025-10-06T10:27:23.456Z",
  "graduated_date": "2025-10-06T10:27:23.456Z",
  "representative": "text",
  "enrollment_date": "2025-10-06",
  "source_campaign": "text",
  "contact_date": "2025-10-06",
  "checklist_state": "text",
  "passport_id": "text",
  "enrollment_grade": "text",
  "parent_ids": [
    1
  ],
  "sibling_ids": [
    1
  ],
  "student_flags": [
    "text"
  ],
  "reenrollments": [
    {
      "ree_year": "text",
      "ree_grade": "text",
      "ree_status": "text",
      "ree_decision_date": "2025-10-06",
      "ree_status_changed_at": "2025-10-06T10:27:23.456Z"
    }
  ],
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  }
}

Get a Student

get

Fetch an instance of a student

Authorizations
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
get
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": "2025-10-06",
  "status": "pending",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text",
  "name": "text",
  "gender": "Male",
  "status_level": "text",
  "status_changed_at": "2025-10-06T10:27:23.456Z",
  "updated_at": "2025-10-06T10:27:23.456Z",
  "latest_activity_date": "2025-10-06T10:27:23.456Z",
  "nationality": "text",
  "grade": "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": "2025-10-06T10:27:23.456Z",
  "enrolled_at": "2025-10-06T10:27:23.456Z",
  "inquired_date": "2025-10-06T10:27:23.456Z",
  "inquired_at": "2025-10-06T10:27:23.456Z",
  "applied_date": "2025-10-06T10:27:23.456Z",
  "admitted_date": "2025-10-06T10:27:23.456Z",
  "wait_listed_date": "2025-10-06T10:27:23.456Z",
  "declined_date": "2025-10-06T10:27:23.456Z",
  "enrolled_date": "2025-10-06T10:27:23.456Z",
  "withdrawn_date": "2025-10-06T10:27:23.456Z",
  "graduated_date": "2025-10-06T10:27:23.456Z",
  "representative": "text",
  "enrollment_date": "2025-10-06",
  "source_campaign": "text",
  "contact_date": "2025-10-06",
  "checklist_state": "text",
  "passport_id": "text",
  "enrollment_grade": "text",
  "parent_ids": [
    1
  ],
  "sibling_ids": [
    1
  ],
  "student_flags": [
    "text"
  ],
  "reenrollments": [
    {
      "ree_year": "text",
      "ree_grade": "text",
      "ree_status": "text",
      "ree_decision_date": "2025-10-06",
      "ree_status_changed_at": "2025-10-06T10:27:23.456Z"
    }
  ],
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  }
}

Update a student

patch

Updates a student

Authorizations
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
statusstring · enum | nullableOptional

The state of the application

Possible values:
countrystring | nullableOptional

The ISO 3166 country name

other_namestring | nullableOptional
preferred_namestring | nullableOptional
Responses
200

successful

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

{
  "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": "2025-10-06",
  "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": "2025-10-06",
  "status": "pending",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text",
  "name": "text",
  "gender": "Male",
  "status_level": "text",
  "status_changed_at": "2025-10-06T10:27:23.456Z",
  "updated_at": "2025-10-06T10:27:23.456Z",
  "latest_activity_date": "2025-10-06T10:27:23.456Z",
  "nationality": "text",
  "grade": "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": "2025-10-06T10:27:23.456Z",
  "enrolled_at": "2025-10-06T10:27:23.456Z",
  "inquired_date": "2025-10-06T10:27:23.456Z",
  "inquired_at": "2025-10-06T10:27:23.456Z",
  "applied_date": "2025-10-06T10:27:23.456Z",
  "admitted_date": "2025-10-06T10:27:23.456Z",
  "wait_listed_date": "2025-10-06T10:27:23.456Z",
  "declined_date": "2025-10-06T10:27:23.456Z",
  "enrolled_date": "2025-10-06T10:27:23.456Z",
  "withdrawn_date": "2025-10-06T10:27:23.456Z",
  "graduated_date": "2025-10-06T10:27:23.456Z",
  "representative": "text",
  "enrollment_date": "2025-10-06",
  "source_campaign": "text",
  "contact_date": "2025-10-06",
  "checklist_state": "text",
  "passport_id": "text",
  "enrollment_grade": "text",
  "parent_ids": [
    1
  ],
  "sibling_ids": [
    1
  ],
  "student_flags": [
    "text"
  ],
  "reenrollments": [
    {
      "ree_year": "text",
      "ree_grade": "text",
      "ree_status": "text",
      "ree_decision_date": "2025-10-06",
      "ree_status_changed_at": "2025-10-06T10:27:23.456Z"
    }
  ],
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  }
}

Update Student Status

patch

Update a student's status and/or status level

Authorizations
Path parameters
idintegerRequired

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

Body
statusstringOptional

The new status for the student

status_levelstringOptional

The new status level for the student (must be valid for the given status)

Responses
200

successful

application/json
patch
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: 39

{
  "status": "text",
  "status_level": "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": "2025-10-06",
  "status": "pending",
  "country": "text",
  "other_name": "text",
  "preferred_name": "text",
  "name": "text",
  "gender": "Male",
  "status_level": "text",
  "status_changed_at": "2025-10-06T10:27:23.456Z",
  "updated_at": "2025-10-06T10:27:23.456Z",
  "latest_activity_date": "2025-10-06T10:27:23.456Z",
  "nationality": "text",
  "grade": "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": "2025-10-06T10:27:23.456Z",
  "enrolled_at": "2025-10-06T10:27:23.456Z",
  "inquired_date": "2025-10-06T10:27:23.456Z",
  "inquired_at": "2025-10-06T10:27:23.456Z",
  "applied_date": "2025-10-06T10:27:23.456Z",
  "admitted_date": "2025-10-06T10:27:23.456Z",
  "wait_listed_date": "2025-10-06T10:27:23.456Z",
  "declined_date": "2025-10-06T10:27:23.456Z",
  "enrolled_date": "2025-10-06T10:27:23.456Z",
  "withdrawn_date": "2025-10-06T10:27:23.456Z",
  "graduated_date": "2025-10-06T10:27:23.456Z",
  "representative": "text",
  "enrollment_date": "2025-10-06",
  "source_campaign": "text",
  "contact_date": "2025-10-06",
  "checklist_state": "text",
  "passport_id": "text",
  "enrollment_grade": "text",
  "parent_ids": [
    1
  ],
  "sibling_ids": [
    1
  ],
  "student_flags": [
    "text"
  ],
  "reenrollments": [
    {
      "ree_year": "text",
      "ree_grade": "text",
      "ree_status": "text",
      "ree_decision_date": "2025-10-06",
      "ree_status_changed_at": "2025-10-06T10:27:23.456Z"
    }
  ],
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  }
}

Get Student Status History

get

Get the application status history for a specific student

Authorizations
Path parameters
idintegerRequired

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

Responses
200

successful

application/json
get
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": "2025-10-06",
        "created_at": "2025-10-06T10:27:23.456Z",
        "updated_at": "2025-10-06T10:27:23.456Z",
        "status_level": {
          "id": 1,
          "name": "text",
          "created_at": "2025-10-06T10:27:23.456Z",
          "updated_at": "2025-10-06T10:27:23.456Z"
        }
      }
    ]
  }
}

Get Student Status Events

get

Returns a paginated list of student status change events.

Filterable by status updated_at (since_date_to_status) and enrollment_year.

Authorizations
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
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": "2025-10-06",
          "created_at": "2025-10-06"
        },
        "status_level": {
          "id": 1,
          "name": "text",
          "updated_at": "2025-10-06",
          "created_at": "2025-10-06"
        }
      },
      "from": {
        "status": {
          "id": 1,
          "name": "text",
          "display_name": "text",
          "updated_at": "2025-10-06",
          "created_at": "2025-10-06"
        },
        "status_level": {
          "id": 1,
          "name": "text",
          "updated_at": "2025-10-06",
          "created_at": "2025-10-06"
        }
      }
    }
  ],
  "meta": {
    "pages": 1,
    "per_page": 1,
    "total_entries": 1,
    "total_pages": 1
  }
}

Was this helpful?