Applications

Represents a list of submitted applications.

URI
/api/v9/applications

GET List applications

Retrieve a list of applications that match the set filtering criteria. As per norm, the HEAD verb is useful to just test if such an application exists (and how many).

There is a hard limit of 32768 items returned, which is capped to 8192 if the expand parameter is used.

Syntax
GET /api/v9/applications
Host: apply.example.edu
Authorization: DREAM apikey="..."

Parameters

NameRequired/OptionalDescriptionNotes
byAcademicTermIDRequired (either one)The academic term to filter by.
byAcademicYearThe academic year to filter by.
byAcademicYearsThe academic years to filter by.
byCommenceYearDeprecatedYear number, for example "2015". Please use the academic year or term now.
byApplicantIDsOptionalList of applicant IDs. An application will match if it belongs to one of the listed applicants.[1]
byStatusesOptionalList of application statuses.[1]
byCreatedSinceOptionalISO 8601 datetime. Only show applications created after this.
byRevisedSinceOptionalISO 8601 datetime. Only show applications revised after this.
bySubmittedSinceOptionalISO 8601 datetime. Only show applications submitted after this.
byCourseIDsOptionalList of course IDs. An application will match if it contains at least one of the listed courses.[1]
byCourseTypesOptionalList of course types. An application will match if it contains at least one course of the listed types.[1]
byCourseInstitutionIDsOptionalList of institution IDs. An application will match if it contains at least one course from the listed institutions.[1]
byCourseIntakeIDsOptionalList of intake IDs. An application will match if it contains at least one course under the listed intakes.[1]
byOfferTypesOptionalList of offer types. An application will match if it contains at least one offer of the listed types.[1], [2]
byOfferDecisionsOptionalList of offer decisions.[1], [2]
byOfferInstitutionIDsOptionalList of institution IDs. An application will match if it contains at least one offer from the listed institutions.[1]
byFlagIDsOptionalList of flag IDs.[1], [3]
limitOptionalHow many applications to return (Allowed range is normally 1..32768, 32768 being the default). If the expand parameter is used, the limit is 8192.
expandOptionalExpand the chosen relational element(s), for example applicant,offer.[4]

Notes

  • Note [1]: Lists can be either comma or space separated. All list items are combined with logical OR operators — in other words an application is considered matching if it matches to any of the values in the list.
  • Note [2]: This limits selection to applications that have been submitted, since offers (initially in “Unreplied” status) will be created while submitting an application. An application may contain any number of courses, but they will be turned into offers only at submission. This also applies to edits made after submission. For example an applicant may add a course after submission, but the corresponding offer will appear only after submission.
  • Note [3]: Currently only one flag ID can be listed. This limitation will be lifted at a later date.
  • Note [4]: Some elements in the returned objects are links to other API requests. Using the expand parameter, it is possible to expand this data to the actual records, saving additional API requests. The full list of possible expansions is applicant,flags,courses,offers,documents,tasks,scores,references. You can set one or multiple expansions, combining them in a comma-separated fashion to the expand parameter. Note also that using this parameter caps to limit to 8192 due to performance reasons.

Example request

Request
curl
curl \
  -X GET \
  -H "Authorization: DREAM apikey=\"YOUR-API-KEY\"" \
  "https://apply.example.edu/api/v9/applications?byAcademicTermID=27&byCreatedSince=2025-10-01T00:00:00&byFlagIds=8"

Response headers

HeaderValueDescription
Content-Typeapplication/jsonMedia type of the resource
Content-Length1456Size of the response body in bytes
X-Count15Number of matching applications

Response codes

Response codeDescription
200 OKThe list of applications was returned
400 Bad RequestOne of query parameters is invalid, see the error description

Example response

Response
{
  "123": {
    "id": 123,
    "created": "2025-10-07T07:09:15+00:00",
    "revised": "2025-10-08T12:20:17+00:00",
    "submitted": "2025-10-10T07:00:06+00:00",
    "status": "Reopened",
    "category": {
      "id": 2,
      "title": "International",
      "colour": "#00ff00",
      "mode": "Public"
    },
    "academic_term": "/api/v9/academic-terms/27",
    "applicant": "/api/v9/applicants/321",
    "flags": "/api/v9/applications/123/flags",
    "courses": "/api/v9/applications/123/courses",
    "offers": "/api/v9/applications/123/offers",
    "exports": "/api/v9/applications/123/exports",
    "documents": "/api/v9/applications/123/documents",
    "references": "/api/v9/applications/123/references",
    "scores": "/api/v9/applications/123/scores",
    "tasks": "/api/v9/applications/123/tasks",
    "pdf": "/api/v9/applications/123/pdf"
  },
  "124": {
    "id": 124,
    "created": "2025-10-27T08:22:40+00:00",
    "revised": "2025-11-25T12:00:50+00:00",
    "submitted": "2025-11-03T14:32:32+00:00",
    "status": "Submitted",
    "category": {
      "id": 2,
      "title": "International",
      "colour": "#00ff00",
      "mode": "Public"
    },
    "academic_term": "/api/v9/academic-terms/27",
    "applicant": "/api/v9/applicants/322",
    "flags": "/api/v9/applications/124/flags",
    "courses": "/api/v9/applications/124/courses",
    "offers": "/api/v9/applications/124/offers",
    "exports": "/api/v9/applications/124/exports",
    "documents": "/api/v9/applications/124/documents",
    "references": "/api/v9/applications/124/references",
    "scores": "/api/v9/applications/124/scores",
    "tasks": "/api/v9/applications/124/tasks",
    "pdf": "/api/v9/applications/124/pdf"
  }
}

POST Create an application

Create a new application with minimal initial data: applicant, intake and course.

Depending on the provided parameters, the request can result in two possible outcomes:

  • Create a new application: If no application exists for the applicant and intake, a new standalone application is created
  • Add a course to the application: If an application already exists for the applicant in the intake, the provided course is added to the application.

After creating an application, you can manage its content using the following requests:

Validation rules

The API validates the following conditions before processing the request:

  • The applicant must have the citizenship set.
  • The applicant must have the category set (if public categories are set up).
  • The application limits must not be exceeded.
  • An existing application must not be closed, withdrawn or expired.

The following limitations are not enforced during this request:

  • Course-level restrictions (such as territory requirements)
  • Intake limitations (such as category eligibility or territory-specific deadlines)
  • Course status checks (for example, Online vs. Standby)
Syntax
POST /api/v9/applications
Host: apply.example.edu
Authorization: DREAM apikey="..."

Parameters

NameRequired/OptionalDescription
applicantRequiredThe applicant ID
intakeRequiredThe ID of the intake with which the course is associated
courseRequiredThe ID of the course to be added to the application

Example request

Request
curl
curl \
  -X POST \
  -H "Authorization: DREAM apikey=\"YOUR-API-KEY\"" \
  "https://apply.example.edu/api/v9/applications?applicant=123&intake=1&course=2"

Response headers

HeaderValueDescription
Content-Typetext/html; charset=UTF-8Media type of the resource
Content-Length0Size of the response body in bytes
Location/api/applications/123URI of the created/updated application

Response codes

Response codeDescription
201 CreatedA new application was successfully created/
The existing application was updated
400 Bad RequestThe required parameters are not set, see the error description
400 Bad RequestA data validation check has failed, see the error description
400 Bad RequestThe course is already added to the application