Journal

Represents the DreamApply journal and provides access to journal events that occur in the system.

URI
/api/v10/journal

GET List events

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

This API request is important for synchronizing data from DreamApply with external systems. To detect when relevant events occur in the system, use this API request to poll the API regularly and store either of the following values:

  • logged: The event timestamp
  • id: The incremental ID of the last processed event

For subsequent requests, use the stored timestamp or ID in the bySince parameter. For example, if the last processed event was 123, the next request should use ?bySince=124. This request will return events starting from 124 (inclusive), skipping all events up to and including 123.

For example, to copy data to your system when an applicant is assigned a specific offer type, poll for the Offer was edited: ? event. DreamApply logs this event each time an offer is edited. Go over the list of returned events, identify those that match the required offer type and continue to retrieve the required data such as applicants, documents or applications.

For performance reasons, this request returns events for the previous 6 months only. If you need access to earlier events, contact the DreamApply team to request an exemption.

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

Parameters

NameRequired/OptionalDescriptionNotes
byEventsRequiredA list of journal events to return. For details, see Event list.[1]
bySinceOptionalAn ISO datetime or journal event ID from which to start retrieving results (inclusive).[2]
byUntilOptionalAn ISO datetime or journal event ID at which to stop retrieving results (inclusive).[2]
byAcademicYearOptionalA single 4-digit academic year to filter events by.[5]
byAcademicYearsOptionalA list of academic years to filter events by.[5]
byAcademicTermIDOptionalAn academic term ID to filter events by.[5]
orderOptionalSpecifies the sort order for results. Allowed values: newest-first, oldest-first. The default is oldest-first. If an invalid value is provided, the default value is used. For details, see Ordering and grouping events.[3]
limitOptionalThe maximum number of events to return. The allowed range is 1 to 1024. The default is 1024. When the expand parameter is used, the maximum is 512. Values above the limit are capped without error.[3]
expandOptionalOne or more related entities to include in the response, for example, applicant,offer.[4]

Notes

  • Note [1]: The list must be comma-separated. All list items are combined with logical OR operators, meaning a journal event is included if it matches any value in the list. For details, see Event list.
  • Note [2]: An ISO 8601 compatible datetime or the journal event ID to start from (inclusive). The event IDs are sequential integers, so you can save the last processed ID 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, you can fetch the last 10 items. To do this, 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 expand parameter, you can expand this data to the actual records, saving additional API requests. The full list of possible expansions is administrator,applicant,application,course,institution,invoice,offer,document,flag,tracker. To request multiple expansions, combine them as a comma-separated list in the expand parameter. Use of this parameter caps to limit to 512 for performance reasons. The invoice expansion 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 and set the byAcademicTermID or byAcademicYear filter, an error will be returned.

Example request

Request
curl
curl \
  -X GET \
  -H "Authorization: DREAM apikey=\"YOUR-API-KEY\"" \
  "https://apply.example.edu/api/v10/journal?byEvents=Application%20was%20submitted&order=newest-first&limit=5&expand=application"

Response headers

HeaderValueDescription
Content-Typeapplication/jsonThe media type of the resource
Content-Length1456The size of the response body
X-Count15The number of matching journal events

Response codes

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

Example response

Response
{
  "1000": {
    "id": 1000,
    "logged": "2026-05-28T09:32:31+00:00",
    "event": "Application was submitted",
    "bind": [],
    "applicant": "/api/v10/applicants/321",
    "application": {
      "id": 123,
      "created": "2026-05-28T09:31:41+00:00",
      "revised": "2026-05-28T09:32:17+00:00",
      "submitted": "2026-05-28T09:32:31+00:00",
      "status": "Reopened",
      "category": {
        "id": 2,
        "title": "International",
        "colour": "#00ff00",
        "mode": "Public"
      },
      "academic_term": "/api/v10/academic-terms/10",
      "applicant": "/api/v10/applicants/321",
      "flags": "/api/v10/applications/123/flags",
      "courses": "/api/v10/applications/123/courses",
      "offers": "/api/v10/applications/123/offers",
      "exports": "/api/v10/applications/123/exports",
      "documents": "/api/v10/applications/123/documents",
      "references": "/api/v10/applications/123/references",
      "scores": "/api/v10/applications/123/scores",
      "tasks": "/api/v10/applications/123/tasks",
      "pdf": "/api/v10/applications/123/pdf",
      "interviews": "/api/v10/applications/123/interviews"
    }
  },
  "1001": {
    "id": 1001,
    "logged": "2026-05-15T06:47:58+00:00",
    "event": "Application was submitted",
    "bind": [],
    "applicant": "/api/v10/applicants/322",
    "application": {
      "id": 124,
      "created": "2026-05-15T06:47:50+00:00",
      "revised": "2026-05-15T07:02:11+00:00",
      "submitted": "2026-05-15T06:47:58+00:00",
      "status": "Reopened",
      "category": {
        "id": 2,
        "title": "International",
        "colour": "#00ff00",
        "mode": "Public"
      },
      "academic_term": "/api/v10/academic-terms/10",
      "applicant": "/api/v10/applicants/322",
      "flags": "/api/v10/applications/124/flags",
      "courses": "/api/v10/applications/124/courses",
      "offers": "/api/v10/applications/124/offers",
      "exports": "/api/v10/applications/124/exports",
      "documents": "/api/v10/applications/124/documents",
      "references": "/api/v10/applications/124/references",
      "scores": "/api/v10/applications/124/scores",
      "tasks": "/api/v10/applications/124/tasks",
      "pdf": "/api/v10/applications/124/pdf",
      "interviews": "/api/v10/applications/124/interviews"
    }
  }
}