Journal
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 the DreamApply journal and provides access to journal events from the system.
/api/v9/journalGET List events
List journal events from the system using filters set as parameters. The number of journal events matching the search options is represented in the X-Count header.
This is an important API request, as in many cases you may want to pull some information from DreamApply to your systems. In order to know when something interesting has happened in the system, just poll this API request regularly, each time saving the logged timestamp or the incremental ID of the last request. For next requests, use the stored timestamp or ID for the bySince param. For example, if your last processed event was 123 (as in the example below), your next request might be ?bySince=124, in order to return rows starting from 124 (inclusive). This will skip all events up to and including 123.
For example, if you want to copy data to your system once an applicant is given a specific offer type, simply poll for the Offer was edited: ? event. This event is logged each time an offer is edited. If you go over the list of events received, you can easily pick out the ones where the offer type is the one you’re looking for and continue to poll more information about these applicants (documents, application data etc.)
This request will only return events from the last 6 months, for performance reasons. If you need to access older events, please request an exemption from customer support.
Use the GET request to actually fetch the events and follow them up on. Use the HEAD request to simply check if anything interesting has happened in the system.
GET /api/v9/journal
Host: apply.example.edu
Authorization: DREAM apikey="..."Parameters
| Name | Required/Optional | Description | Notes |
|---|---|---|---|
byEvents | Required | List of journal events you are interested in | [1] |
bySince | Optional | An ISO datetime or the (sequential) ID from which you want to start searching from | [2] |
byUntil | Optional | An ISO datetime or the (sequential) ID of the last event you wish to receive | [2] |
byAcademicYear | Optional | The academic year to filter by. | [5] |
byAcademicTermID | Optional | The academic terms to filter by. | [5] |
order | Optional | Specifies the order in which the results are returned. Legal values are newest-first and oldest-first (default). If an illegal value is provided, the default will be applied silently. | [3] |
limit | Optional | How many journal events to return (Allowed range is normally 1..1024, 1024 being the default). If the expand parameter is used, the limit is 512. If the limit is exceeded, it is silently capped. | [3] |
expand | Optional | Expand the chosen relational element(s), for example applicant,offer | [4] |
Notes
- Note [1]: See the list of journal events. The list must be comma-separated. All list items are combined with logical
ORoperators - in other words a journal event is considered matching if it matches to any of the values provided in the list. - Note [2]: An ISO 8601 compatible datetime (inclusive) or the journal event ID to start from (inclusive). The event ID-s are sequential integers, so you can simply save the last one you processed, and issue the next request with
bySince=$lastID+1 - Note [3]: For backwards compatibility reasons, the default order/limit are set to “oldest-first” and 1024, respectively. In many cases, for example when polling for new events, it makes sense to fetch the last 10 items. In this case, set “order” to “newest-first” and “limit” to 10.
- Note [4]: Some elements in the returned objects are links to other API requests. Using the
expandparameter, it is possible to expand this data to the actual records, saving additional API requests. The full list of possible expansions isapplicant,application,course,institution,invoice,offer,document,flag,tracker. You can set one or multiple expansions, combining them in a comma-separated fashion to theexpandparameter. Note also that using this parameter caps tolimitto 512 due to performance reasons. Also note that theinvoiceexpansion is not available when the API key is limited to an institution. - Note [5]: Some events are not associated with any applications and these filters are thus unavailable. If you choose an incompatible event while also setting the
byAcademicTermIDorbyAcademicYearfilter, an error will be returned.
Example request
curl \
-X GET \
-H "Authorization: DREAM apikey=\"YOUR-API-KEY\"" \
"https://apply.example.edu/api/v9/journalbyEvents=Application%20was%20submitted&order=newest-first&limit=1&expand=application"Response headers
| Header | Value | Description |
|---|---|---|
Content-Type | application/json | Media type of the resource |
Content-Length | 1456 | Size of the response body |
X-Count | 15 | Number of matching journal events |
Response codes
| Response code | Description |
|---|---|
200 OK | The list of matching events was successfully returned |
400 Bad Request | One of query parameters is invalid, see the error description |
Example response
{
"123": {
"id": 123,
"logged": "2026-04-22T12:23:36+00:00",
"event": "Application was submitted",
"bind": [],
"administrator": "/api/v9/administrators/10006",
"applicant": "/api/v9/applicants/321",
"application": {
"id": 100,
"created": "2026-04-22T12:22:08+00:00",
"revised": "2026-04-22T12:23:23+00:00",
"submitted": "2026-04-22T12:23:36+00:00",
"status": "Submitted",
"category": {
"id": 2,
"title": "International",
"colour": "#00ff00",
"mode": "Public"
},
"academic_term": "/api/v9/academic-terms/10",
"applicant": "/api/v9/applicants/321",
"flags": "/api/v9/applications/100/flags",
"courses": "/api/v9/applications/100/courses",
"offers": "/api/v9/applications/100/offers",
"exports": "/api/v9/applications/100/exports",
"documents": "/api/v9/applications/100/documents",
"references": "/api/v9/applications/100/references",
"scores": "/api/v9/applications/100/scores",
"tasks": "/api/v9/applications/100/tasks",
"pdf": "/api/v9/applications/100/pdf"
}
}
}