Courses

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

URI
/api/v10/courses

GET List courses

List courses that match the specified filter parameters. The number of courses is returned in the X-Count header.

Courses is the technical term for the resources to which applicants apply. In some educational systems, these resources can be referred to as programmes or courses. Additionally, in exchange setups, courses represent the mobilities available for application. In all variations — courses, programmes, mobilities — the technical term still remains “course”.

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

Parameters

HeaderRequired/OptionalDescriptionNotes
byInstitutionIdsOptionalA list of institution IDs to which the course belongs.[1]
byStatusesOptionalA list of course statuses, currently limited to: Online, Standby, Draft, Archived, Template, Closed.[1]
byTypesOptionalA list of course types.[1]
byModesOptionalA list of course modes.[1]
byCodesOptionalA list 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, meaning a course is included if it matches any value in the list.

Example request

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

Response headers

HeaderValueDescription
Content-Typeapplication/jsonThe media type of the resource
Content-Length1234The size of the response body in bytes
X-Count3The number 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/v10/institutions/1",
    "intakes": {
      "9": "/api/v10/intakes/9",
      "10": "/api/v10/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/v10/institutions/1/departments/4"
  },
  "18": {
    "id": 18,
    "status": "Online",
    "updated": "2025-10-28T07:12:19+00:00",
    "institution": "/api/v10/institutions/1",
    "intakes": {
      "9": "/api/v10/intakes/9",
      "10": "/api/v10/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/v10/institutions/1/departments/4"
  }
}

POST Create a course

Create a new blank course.

Use this API request to automatically import a list of courses from an external system, such as a Student Information System (SIS), into DreamApply.

Fully configuring a course in DreamApply requires an extensive set of fields, including settings for admission requirements, intakes, motivation letters and fees. Because external systems rarely store this data with the required level of detail, we recommend doing the following:

  1. Use this API request to import a basic list of courses containing core data.
  2. Fine-tune and fully configure the remaining course settings in the DreamApply portal using the dedicated data management tools.
Syntax
POST /api/v10/courses
Host: apply.example.edu
Authorization: DREAM apikey="..."

Parameters

ParameterRequired/OptionalDescription
institutionRequiredThe institution ID to which the course belongs.
typeRequiredThe course type code: undergraduate, postgraduate and so on. To get possible type classificator values, use classificators or check System > Classificators in the DreamApply portal.
modeRequiredThe course mode code: full time, part time and so on. To get possible mode classificator values, use classificators or check System > Classificators in the DreamApply portal.
nameRequiredThe course name. The allowed length is up to 2048 characters.
awards_abbrOptionalThe abbreviation of the course award: BSc, MSc and so on.
awards_fullOptionalThe full name of the course award, for example, Bachelor of Science. The allowed length is up to 2048 characters.
languageOptionalThe course language, accepts a 2-letter (alpha-2) ISO language code.
countryOptionalThe course country, accepts an ISO 3166-1 alpha-2 country code.
locationOptionalThe location where the studies take place: city, district and so on. The allowed length is up to 256 characters.
codeOptionalAny text to uniquely identify the course in another system, such as SIS or course catalogue. The allowed length is up to 128 characters.
prospect_uriOptionalA URL where the applicant can learn more about the course/programme.

Example request

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

Response headers

HeaderValueDescription
Content-Typeapplication/jsonThe media type of the resource
Content-Length0The size of the response body in bytes
Location/api/courses/12345The URI 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)