Courses

Represents a list of programmes/courses added to the catalog.

URI
/api/v9/courses

GET List courses

List courses using the filters set as parameters. The number of courses is represented in the X-Count header.

Courses is the technical name given to resources that applicants “can apply to”. In some educational systems, students may apply to programmes, in others, to courses. In all these cases (course, programme etc.) the technical term will still remain “course”.

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

Parameters

HeaderRequired/OptionalDescriptionNotes
byInstitutionIdsOptionalList of institution IDs to which the course belongs[1]
byStatusesOptionalList of statuses, currently limited to: Online, Standby, Draft, Archived, Template, Closed[1]
byTypesOptionalList of course types[1]
byModesOptionalList of course modes[1]
byCodesOptionalList of public codes associated with courses. To find these codes, see the General > Code settings for a specific course.
Filtering by internal codes is not supported.
[1]

Notes

Note [1]: Lists can be either comma or space separated. All list items are combined with logical OR operators — in other words, a course is considered matching if it matches to any of the values in the list.

Example request

Request
curl
curl \
  -X GET \
  -H "Authorization: DREAM apikey=\"YOUR-API-KEY\"" \
  "https://apply.example.edu/api/v9/courses?byStatuses=Online&byTypes=UG"

Response headers

HeaderValueDescription
Content-Typeapplication/jsonMedia type of the resource
Content-Length1234Size of the response body in bytes
X-Count3Number of courses added to the catalog

Response codes

Response codeDescription
200 OKThe list of courses was successfully returned

Example response

Response
{
  "16": {
    "id": 16,
    "status": "Online",
    "updated": "2025-10-28T07:13:25+00:00",
    "institution": "/api/v9/institutions/1",
    "intakes": {
      "9": "/api/v9/intakes/9",
      "10": "/api/v9/intakes/10"
    },
    "featured": true,
    "type": "UG",
    "awards": [
      {
        "abbr": "BSc",
        "full": "Bachelor of Science"
      }
    ],
    "name": "Data Structures and Algorithms",
    "mode": "FT",
    "duration": "2 years",
    "credits": "18.0",
    "language": "en~de",
    "country": "BE",
    "location": "Antwerp",
    "code": "IT100",
    "accreditation": "01/01/2023 until 31/12/2028",
    "quota": 150,
    "prospect": {
      "uri": "engtech.edu/cs"
    },
    "department": "/api/v9/institutions/1/departments/4"
  },
  "18": {
    "id": 18,
    "status": "Online",
    "updated": "2025-10-28T07:12:19+00:00",
    "institution": "/api/v9/institutions/1",
    "intakes": {
      "9": "/api/v9/intakes/9",
      "10": "/api/v9/intakes/10"
    },
    "featured": true,
    "type": "UG",
    "awards": [
      {
        "abbr": "BSc",
        "full": "Bachelor of Science"
      }
    ],
    "name": "Applied Math",
    "mode": "FT",
    "duration": "2 years",
    "credits": "18.0",
    "language": "en~de",
    "country": "BE",
    "location": "Antwerp",
    "code": null,
    "accreditation": "01/01/2023 until 31/12/2028",
    "quota": 150,
    "prospect": {
      "uri": "engtech.edu/cs"
    },
    "department": "/api/v9/institutions/1/departments/4"
  }
}

POST Create a course

Create a new blank course. This is useful when you want to automatically import a list of courses from another system into DreamApply. Please note however, that the needed fields for fully configuring an applicable course in DreamApply is quite long, including various settings for admission requirements, intakes, motivation letters, fees and so on. This data is typically not available in other systems, like Student Information Systems, at least not in the required depth. It is therefore recommended to use this API request to import a “basic list” of courses that will be then fine-tuned and fully configured using the dedicated GUI tools in DreamApply built for managing this data effectively.

The URI for the new course that was created is returned in the Location header.

Syntax
POST /api/v9/courses
Host: apply.example.edu
Authorization: DREAM apikey="..."

Parameters

ParameterRequired/OptionalDescription
institutionRequiredA valid institution ID in DreamApply (see the /api/v9/institutions requests to learn it).
typeRequiredCourse type code (undergraduate, postgraduate, etc). Send a request to /api/v9/classificators or use DreamApply GUI tools (System > Classificators) to learn possible Course type classificator values.
modeRequiredCourse mode code (full time, part time, etc). Send a request to /api/v9/classificators or use DreamApply GUI tools (System > Classificators) to learn possible Course mode classificator values.
nameRequiredUp to 2048 characters.
awards_abbrOptionalAbbreviation of the award (BSc, MSc, etc).
awards_fullOptionalFull name of the award (for example, “Bachelor of Science”). Up to 2048 characters.
languageOptionalAccepts a 2-letter (alpha-2) ISO language code.
countryOptionalAccepts an ISO 3166-1 alpha-2 country code.
locationOptionalThe location where the studies take place (city, district, etc). Up to 256 characters.
codeOptionalCan be any text to uniquely identify this course in another system, like a Study Information System or course catalogue. Up to 128 characters.
prospect_uriOptionalAn URL where the applicant can learn more about this course/programme.

Example request

Request
curl
curl \
  -X POST \
  -H "Authorization: DREAM apikey=\"YOUR-API-KEY\"" \
  "https://apply.example.edu/api/v9/courses?institution=1&type=UG&mode=PT&name=Data%20and%20AI"

Response headers

HeaderValueDescription
Content-Typeapplication/jsonMedia type of the resource
Content-Length0Size of the response body in bytes
Location/api/courses/12345URI of the created course

Response codes

Response codeDescription
201 CreatedA new course was successfully created
422 Unprocessable EntityThere were some validation errors (see the returned text)