---
title: "Provides the processing details of the message"
method: GET
path: "/dip-channel/{id}/deliveryStatus/{recipient-id}/{message-id}"
tags: ["DIP Message Delivery Status"]
---

# Provides the processing details of the message

`GET /dip-channel/{id}/deliveryStatus/{recipient-id}/{message-id}`

## Request

- Base URL: `https://dip-api-documentation.elexon.co.uk`
- URL: `https://dip-api-documentation.elexon.co.uk/dip-channel/{id}/deliveryStatus/{recipient-id}/{message-id}`
- Auth: API key in header `X-API-Key`

Reports on the status of messages identified by their Sender Unique reference

## Path parameters

- `id` 'IF-001' | 'IF-002' | 'IF-003' | 'IF-004' | 'IF-005' | 'IF-006' | 'IF-007' | 'IF-008' | 'IF-009' | 'IF-013' | 'IF-014' | 'IF-015' | 'IF-016' | 'IF-018' | 'IF-019' | 'IF-020' | 'IF-021' | 'IF-022' | 'IF-023' | 'IF-024' | 'IF-025' | 'IF-026' | 'IF-027' | 'IF-028' | 'IF-031' | 'IF-032' | 'IF-033' | 'IF-034' | 'IF-035' | 'IF-036' | 'IF-037' | 'IF-038' | 'IF-039' | 'IF-040' | 'IF-041' | 'IF-043' | 'IF-044' | 'IF-045' | 'IF-047' | 'IF-050' | 'IF-051' | 'IF-061' | 'IF-062' | 'IF-063' | 'IF-064' | 'IF-065' | 'REP-002' | 'REP-002A' | 'REP-002B' | 'REP-003' | 'REP-003A' | 'REP-004' | 'REP-006' | 'REP-007' | 'REP-008' | 'REP-009' | 'REP-900' | 'REP-901', required: Interface ID
- `recipient-id` string, required: DIP Participant Id
- `message-id` string, required: Sender Unique Reference

## Headers

- `X-DIP-Signature` string, required
- `X-DIP-Signature-Date` string, required
- `X-DIP-Content-Hash` string, required
- `X-DIP-Signature-Certificate` string, required

## Response `200`

DIP Journalling Information

- DIPJournalRecord
  - `SentDateTime` string, required: Date/time as emitted by the Message Tracker source system. CONFIRMED: not tied to DT-003-DateTime — modelled as a generic string rather than a formatted/validated date-time.
  - `Interface` 'IF-001' | 'IF-002' | 'IF-003' | 'IF-004' | 'IF-005' | 'IF-006' | 'IF-007' | 'IF-008' | 'IF-009' | 'IF-013' | 'IF-014' | 'IF-015' | 'IF-016' | 'IF-018' | 'IF-019' | 'IF-020' | 'IF-021' | 'IF-022' | 'IF-023' | 'IF-024' | 'IF-025' | 'IF-026' | 'IF-027' | 'IF-028' | 'IF-031' | 'IF-032' | 'IF-033' | 'IF-034' | 'IF-035' | 'IF-036' | 'IF-037' | 'IF-038' | 'IF-039' | 'IF-040' | 'IF-041' | 'IF-043' | 'IF-044' | 'IF-045' | 'IF-047' | 'IF-050' | 'IF-051' | 'IF-061' | 'IF-062' | 'IF-063' | 'IF-064' | 'IF-065' | 'REP-002' | 'REP-002A' | 'REP-002B' | 'REP-003' | 'REP-003A' | 'REP-004' | 'REP-006' | 'REP-007' | 'REP-008' | 'REP-009' | 'REP-900' | 'REP-901', required: Interface ID
  - `SenderUniqueReference` string, required: Sender Unique Reference
  - `DIPTransactionID` string, required: Transaction ID
  - `DIPCorrelationID` string, nullable: Correlation Id
  - `MPANCore` string, required: MPAN Core
  - `JournalEntries` JournalEntry[], required
    - `TimeGenerated` string, required: Date/time with millisecond precision, as emitted by the Message Tracker source system. CONFIRMED: generic string, not tied to DT-003-DateTime.
    - `SenderDIPID` string, required: DIP Participant Id
    - `Interface` 'IF-001' | 'IF-002' | 'IF-003' | 'IF-004' | 'IF-005' | 'IF-006' | 'IF-007' | 'IF-008' | 'IF-009' | 'IF-013' | 'IF-014' | 'IF-015' | 'IF-016' | 'IF-018' | 'IF-019' | 'IF-020' | 'IF-021' | 'IF-022' | 'IF-023' | 'IF-024' | 'IF-025' | 'IF-026' | 'IF-027' | 'IF-028' | 'IF-031' | 'IF-032' | 'IF-033' | 'IF-034' | 'IF-035' | 'IF-036' | 'IF-037' | 'IF-038' | 'IF-039' | 'IF-040' | 'IF-041' | 'IF-043' | 'IF-044' | 'IF-045' | 'IF-047' | 'IF-050' | 'IF-051' | 'IF-061' | 'IF-062' | 'IF-063' | 'IF-064' | 'IF-065' | 'REP-002' | 'REP-002A' | 'REP-002B' | 'REP-003' | 'REP-003A' | 'REP-004' | 'REP-006' | 'REP-007' | 'REP-008' | 'REP-009' | 'REP-900' | 'REP-901', required: Interface ID
    - `EventCode` string, nullable, required: Event Code
    - `Reason` string, nullable: Populated for failure/rejection events; null on success.
    - `SentDateTime` string, required: Date/time as emitted by the Message Tracker source system. CONFIRMED: generic string, not tied to DT-003-DateTime.
    - `Duration` integer, required: Processing duration in milliseconds.
    - `MessageDelayInMilliSeconds` integer, required
    - `SenderUniqueReference` string, nullable, required: Sender Unique Reference
    - `DIPTransactionID` string, nullable, required: Transaction ID
    - `DIPCorrelationID` string, nullable: Correlation Id
    - `MPANCore` string, nullable, required: MPAN Core
    - `DIPStage` 'Inbound' | 'MPANUpdateQueue' | 'Addressing' | 'Outbound' | 'StatusMessage', required: Processing stage within the DIP pipeline. StatusMessage added per confirmed stage-to-status mapping below (delivery-status callback stage, distinct from Outbound itself).
    - `Status` 'GoodToGo' | 'InternalServerError' | 'InboundRuleFailure' | 'Exception' | 'SentToTopic' | 'Failed' | 'OK' | 'Delivered' | 'DeliveryFailure' | 'RejectedByRecipient' | 'Retrying' | 'UnknownDeliveryStatus' | 'RetriesExhausted' | 'Paused', required: Shared status enum across all DIPStage values, introduced per review feedback for consistency. See JournalEntry.Status for the confirmed stage-to-status subset mapping; this enum is the union of all stage-specific values and does not itself enforce which subset applies to a given DIPStage.
    - `StatusCode` integer, required: HTTP response status code. Confirmed as-is; no catalogue DT match.
    - `Message` string, nullable: Status/Error messages
    - `Recipient` string, nullable: DIP Participant Id
    - `Recipients` DT006NDIPParticipantID[], nullable: List of recipient DIP IDs. Source system currently emits this as a comma-separated string; modelled as an array here to remove consumer-side parsing.
    - `RecipientMap` object, nullable: Structured routing map, keyed by delivery priority tier. Source system emits this as a delimited string (e.g. "Primary:[SUP:2300000185];Secondary:[LDSO:2500000033];Always:[MDS:1800000001]"). UPDATED per review feedback: each tier is now an array of objects carrying an explicit role sub-node (e.g. SUP, LDSO, MDS) alongside the recipient DIP ID, rather than a flattened string.
      - `Primary` RecipientMapEntry[]
        - `role` string, required: Role code for this recipient (e.g. SUP, LDSO, MDS). Sourced from the bracketed prefix in the current delimited-string format — confirm the full set of allowable role codes.
        - `dipId` string, required: DIP Participant Id
      - `Secondary` RecipientMapEntry[]
        - `role` string, required: Role code for this recipient (e.g. SUP, LDSO, MDS). Sourced from the bracketed prefix in the current delimited-string format — confirm the full set of allowable role codes.
        - `dipId` string, required: DIP Participant Id
      - `Always` RecipientMapEntry[]
        - `role` string, required: Role code for this recipient (e.g. SUP, LDSO, MDS). Sourced from the bracketed prefix in the current delimited-string format — confirm the full set of allowable role codes.
        - `dipId` string, required: DIP Participant Id
    - `uri` string, uri, nullable: Delivery endpoint URI; populated only at Outbound stage.
    - `rn` integer, required: Row/sequence number within the journal. Confirmed as-is; no catalogue DT match.

## Other responses

- `204`: No Content
- `400`: Bad Request
- `401`: Unauthorised Error
- `403`: Forbidden
- `429`: Too Many Requests
- `500`: Internal Server Error
- `502`: Bad Gateway
- `503`: Service Unavailable
- `504`: Gateway Timeout

## Changes

- **2026-10-22** `d9dfdef064ae`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elexon/apis/mhhs-dip/changes/dip-channel/:id/deliveryStatus/:recipient-id/:message-id/get.md)

---

[API](https://skmtc.dev/elexon/apis/mhhs-dip.md) - [All operations](https://skmtc.dev/elexon/apis/mhhs-dip/llms.txt) - [OpenAPI document](https://skmtc.dev/elexon/apis/mhhs-dip/revisions/d9dfdef064ae?raw)
