Courses
API version
Select a version to change the base URI
in syntax and code examples. Learn about versions:
in syntax and code examples. Learn about versions
Represents a list of programmes/courses added to the catalog.
/api/v9/coursesView all API requests
| API request | Return Type | Verb | Description |
|---|---|---|---|
/api/v9/courses | C | GET, HEAD | List courses using filters set as parameters |
/api/v9/courses | C | POST | Create a new blank course |
/api/v9/courses/ID/ | R | GET, HEAD | Get more detailed information about a specific course |
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”.
GET /api/v9/courses
Host: apply.example.edu
Authorization: DREAM apikey="..."Parameters
| Header | Required/Optional | Description | Notes |
|---|---|---|---|
byInstitutionIds | Optional | List of institution IDs to which the course belongs | [1] |
byStatuses | Optional | List of statuses, currently limited to: Online, Standby, Draft, Archived, Template, Closed | [1] |
byTypes | Optional | List of course types | [1] |
byModes | Optional | List of course modes | [1] |
byCodes | Optional | 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 — in other words, a course is considered matching if it matches to any of the values in the list.
Example request
curl \
-X GET \
-H "Authorization: DREAM apikey=\"YOUR-API-KEY\"" \
"https://apply.example.edu/api/v9/courses?byStatuses=Online&byTypes=UG"Response headers
| Header | Value | Description |
|---|---|---|
Content-Type | application/json | Media type of the resource |
Content-Length | 1234 | Size of the response body in bytes |
X-Count | 3 | Number of courses added to the catalog |
Response codes
| Response code | Description |
|---|---|
200 OK | The list of courses was successfully returned |
Example 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.
POST /api/v9/courses
Host: apply.example.edu
Authorization: DREAM apikey="..."Parameters
| Parameter | Required/Optional | Description |
|---|---|---|
institution | Required | A valid institution ID in DreamApply (see the /api/v9/institutions requests to learn it). |
type | Required | Course 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. |
mode | Required | Course 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. |
name | Required | Up to 2048 characters. |
awards_abbr | Optional | Abbreviation of the award (BSc, MSc, etc). |
awards_full | Optional | Full name of the award (for example, “Bachelor of Science”). Up to 2048 characters. |
language | Optional | Accepts a 2-letter (alpha-2) ISO language code. |
country | Optional | Accepts an ISO 3166-1 alpha-2 country code. |
location | Optional | The location where the studies take place (city, district, etc). Up to 256 characters. |
code | Optional | Can be any text to uniquely identify this course in another system, like a Study Information System or course catalogue. Up to 128 characters. |
prospect_uri | Optional | An URL where the applicant can learn more about this course/programme. |
Example request
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
| Header | Value | Description |
|---|---|---|
Content-Type | application/json | Media type of the resource |
Content-Length | 0 | Size of the response body in bytes |
Location | /api/courses/12345 | URI of the created course |
Response codes
| Response code | Description |
|---|---|
201 Created | A new course was successfully created |
422 Unprocessable Entity | There were some validation errors (see the returned text) |