Last modified: Oct 6, 2026

Notification Log API for end users logged in to the portal

Overview of the end user API for retrieving the notification log of a dialog.

The Notification service keeps track of an association between dialogs and notifications that are registered. This makes it possible to later retrieve a list of all the notification addresses that received a notification related to a dialog. The log also includes any failed attempts to send a notification, so that a user can discover errors, for example with an email account.

The API is used by the portal at altinn.no when opening the activity log of a dialog.

This is currently only available for users logged in with ID-porten. Work will continue to make the feature available for end user systems with system user authentication.

Endpoint

GET /notifications/api/v1/future/enduser/log

Query parameters

Searching the notification log requires a dialog ID, while the transmission ID is optional.

ParameterTypeRequiredDescription
dialogIdstringYesDialogporten dialog identifier to filter by
transmissionIdstringNoDialogporten transmission identifier to filter by

Request examples

Query by dialog ID

GET /notifications/api/v1/future/enduser/log?dialogId=550e8400-e29b-41d4-a716-446655440000

Query by both dialog and transmission identifiers

GET /notifications/api/v1/future/enduser/log?dialogId=550e8400-e29b-41d4-a716-446655440000&transmissionId=550e8400-e29b-41d4-a716-446655440001

Response

Returns an array of log entries for notifications that match the specified filters. If no entries match the criteria, an empty list is returned.

Response schema

[
  {
    "notificationId": "550e8400-e29b-41d4-a716-446655440002",
    "dialogId": "550e8400-e29b-41d4-a716-446655440000",
    "transmissionId": "550e8400-e29b-41d4-a716-446655440001",
    "type": "Notification",
    "channel": "Email",
    "destination": "recipient@example.com",
    "status": "Delivered",
    "requestedSendTime": "2026-08-05T10:00:00Z",
    "lastUpdateTime": "2026-08-05T10:02:30Z"
  }
]

Response fields

FieldTypeNullableDescription
notificationIdUUIDNoUnique identifier for the email or SMS notification this log entry is derived from
dialogIdstringYesDialogporten dialog identifier
transmissionIdstringYesDialogporten transmission identifier, or null if there is no transmission association
typestringNoNotification order type: Notification (standard), Reminder (reminder), Instant (immediate send), or Composed (with attachments). See Composed Email and Instant Notifications.
channelstringNoDelivery channel: Email or Sms
destinationstringNoEmail address or phone number the notification was sent to
statusstringNoDelivery result status (see status values reference)
requestedSendTimeDateTimeNoUTC timestamp when the sender requested the notification be sent
lastUpdateTimeDateTimeNoUTC timestamp when the provider (email or SMS service) reported the delivery result

Status codes

StatusMeaningDescription
200OKLog entries matching the filter were retrieved. Returns an empty array if no entries match.
400Bad RequestOne or more parameters are invalid. dialogId is a required field and must be a valid UUID.
401UnauthorizedThe request did not include valid authentication credentials.
403ForbiddenThe caller is not authorized to access the notification log for the specified dialog.
499Request TerminatedThe client disconnected or cancelled the request.

Error responses

When a validation error occurs (missing or invalid query parameters), the API returns a standard validation response:

{
  "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": {
    "dialogId": [
      "The value '01a0ae3d-df1d-790d-8343-sasdasdasd' is not valid for dialogId.",
      "A value for the 'dialogId' parameter or property was not provided."
    ]
  },
  "traceId": "00-057e1d5fdfa49d63834136fc4f5a47d9-039d9fc51942fcf4-01"
}

When a request is terminated by the client (499), the API returns an error with code NOT-00002:

{
  "type": "https://altinn.no/problems/request-terminated",
  "title": "Request Terminated",
  "status": 499,
  "code": "NOT-00002",
  "detail": "The client disconnected or cancelled the request before the server could complete processing",
  "instance": "/notifications/api/v1/future/enduser/log",
  "traceId": "0HMVH5K9A0O5E:00000002"
}

For the complete error code reference, see Error Codes.

Example: Complete workflow

1. Query by dialog ID

curl -X GET \
  'https://platform.altinn.no/notifications/api/v1/future/enduser/log?dialogId=550e8400-e29b-41d4-a716-446655440000' \
  -H 'Authorization: ******'

Response:

[
  {
    "notificationId": "550e8400-e29b-41d4-a716-446655440002",
    "dialogId": "550e8400-e29b-41d4-a716-446655440000",
    "transmissionId": "550e8400-e29b-41d4-a716-446655440001",
    "type": "Notification",
    "channel": "Email",
    "destination": "john.doe@example.com",
    "status": "Delivered",
    "requestedSendTime": "2026-08-05T10:00:00Z",
    "lastUpdateTime": "2026-08-05T10:02:30Z"
  },
  {
    "notificationId": "550e8400-e29b-41d4-a716-446655440003",
    "dialogId": "550e8400-e29b-41d4-a716-446655440000",
    "transmissionId": "550e8400-e29b-41d4-a716-446655440001",
    "type": "Notification",
    "channel": "Sms",
    "destination": "+4798765432",
    "status": "Delivered",
    "requestedSendTime": "2026-08-05T10:00:00Z",
    "lastUpdateTime": "2026-08-05T10:01:15Z"
  },
  {
    "notificationId": "550e8400-e29b-41d4-a716-446655440002",
    "dialogId": "550e8400-e29b-41d4-a716-446655440000",
    "transmissionId": "550e8400-e29b-41d4-a716-446655440001",
    "type": "Notification",
    "channel": "Email",
    "destination": "jane.smith@example.com",
    "status": "Failed_Bounced",
    "requestedSendTime": "2026-08-05T10:00:00Z",
    "lastUpdateTime": "2026-08-05T11:14:32Z"
  }
]

2. Inspect log entries for troubleshooting

From the response above, you can see:

  • The first email was delivered (Delivered)
  • The SMS was delivered (Delivered)
  • The second email was rejected by the email server (Failed_Bounced)
  • All notifications were requested at the same time, but the delivery results were reported at different times

3. Query with a validation error

curl -X GET \
  'https://platform.altinn.no/notifications/api/v1/future/enduser/log?dialogId=01a0ae3d-df1d-790d-8343-sasdasdasd' \
  -H 'Authorization: ******'

Response (400 Bad Request):

{
  "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": {
    "dialogId": [
      "The value '01a0ae3d-df1d-790d-8343-sasdasdasd' is not valid for dialogId.",
      "A value for the 'dialogId' parameter or property was not provided."
    ]
  },
  "traceId": "00-057e1d5fdfa49d63834136fc4f5a47d9-039d9fc51942fcf4-01"
}

Notes and limitations

  • Query parameters are case-sensitive and must exactly match Dialogporten identifiers.
  • Whitespace-only values for dialogId or transmissionId are treated as missing.

See also