Download OpenAPI specification:
API for submitting basic and advanced power quality data in the NEM.
To control traffic, AEMO implements throttling on all API Endpoint requests. Also, some endpoints have a specific quota of requests. If a Participant's request exceeds this limit it will result in a 429 Too Many Requests response, and further requests are rejected. For more details, see the examples under each request.
| Endpoint | Limits |
|---|---|
| All endpoints | Each endpoint has a quota limit of 50 requests per participantId per minute. |
| x-initiatingParticipantId required | string [ 1 .. 10 ] characters ^[A-Z0-9]+$ Example: NEMMCO The participant Id for the participant who sent the request. |
| x-messageContextId required | string^[0-9a-z]{1,4}~[0-9a-z]{1,8}(?:_[0-9a-z_]{1,3... Example: pqd~bpqd~m~mdpid~20250819235520790a The unique The
NOTE: The The |
| x-signature required | string Example: RSA-SHA256;MIIGCwYJKoZIhvcNAQcCoIIGHzCCBh...QIDAQAB The non-repudiation signature used for signing. The format is a base-64 encoded string prefixed with a semi-colon-separated algorithm. RSA-256 should be used as the signing algorithm. |
| Content-Encoding required | string Value: "gzip" Example: gzip Content encoding is |
| x-schemaVersion | string Example: 23.0.1 Schema version of the payload or requested resource. Defaults to the latest if omitted.
During a schema version transition window the |
required | object |
{- "data": {
- "header": {
- "initiatingParticipantId": "EASTENGY",
- "receivingParticipantId": [
- "RETAILER01"
], - "messageId": "550e8400-e29b-41d4-a716-446655440000",
- "messageDateTime": "2026-02-06T12:30:45.123+10:00",
- "businessFunctionId": "pqd",
- "businessFunctionResourceId": "bpqd",
- "priority": "Low",
- "market": "NEM"
}, - "transactions": [
- {
- "transactionId": "TXN-20260206-000001",
- "transactionType": "BasicPowerQualityData",
- "transactionDateTime": "2026-02-06T12:31:00.000+10:00",
- "nmiDetails": [
- {
- "nmi": "NMI1234ABCD",
- "nmiChecksum": 7,
- "meterSerialNumber": "MTRSERIAL001",
- "intervalLength": 300,
- "intervalData": [
- {
- "intervalEndDateTime": "2026-02-06T05:00:00.000+10:00",
- "reads": {
- "V1": 231.52,
- "C1": 10.34,
- "A1": 0.25,
- "V2": 229.87,
- "C2": 9.98,
- "A2": 0.24,
- "V3": 232.1,
- "C3": 10.12,
- "A3": 0.26
}
}, - {
- "intervalEndDateTime": "2026-02-06T05:10:00.000+10:00",
- "reads": {
- "V1": 231.4,
- "C1": 10.2,
- "A1": 0.26,
- "V2": 230.1,
- "C2": 10.05,
- "A2": 0.23,
- "V3": 231.95,
- "C3": 10.18,
- "A3": 0.25
}
}
]
}
]
}
]
}
}{- "data": {
- "header": {
- "messageId": "example-message-400.01",
- "initiatingParticipantId": "MDPID",
- "receivingParticipantId": "LNSPID",
- "messageDateTime": "2025-09-03T08:53:24.000+10:00",
- "businessFunctionId": "pqd",
- "businessFunctionResourceId": "bpqd",
- "priority": "Low",
- "market": "NEM"
}, - "status": "success",
- "messageContextId": "pqd~bpqd~m~mdpid~20250819235520790a"
}
}| priority | string Enum: "low" "medium" "high" Example: priority=low Retrieve the list of messages in the queue by a given priority. |
| itemCount | integer Specifies the number of records in the list to be provided in the response. The maximum number of records returned is capped at the high‑watermark limit configured for this Business Function (e.g. 200). If the query parameter is not provided a default value of up to 100 records will be returned. |
| cursor | string Example: cursor=pqd_bpqd_m_mdpid_20250819235520790a The cursor is a pointer to the starting position for the next page of results.
The cursor value is defined in the |
| startDateTime | string <date-time> Example: startDateTime=2025-10-16T08:56:45+00:00 Filters messages up to the specified date-time (inclusive). If omitted, results are not constrained at the end. Format enforced 'YYYY-MM-DDTHH:mm:ss.SSS+HH:MM' (e.g., '2025-08-26T05:02:46.088+10:00') |
| endDateTime | string <date-time> Example: endDateTime=2025-10-17T08:56:45+00:00 Filters messages up to the specified date-time (inclusive). If omitted, results are not constrained at the end. Format enforced 'YYYY-MM-DDTHH:mm:ss.SSS+HH:MM' (e.g., '2025-08-26T05:02:46.088+10:00') |
| x-initiatingParticipantId required | string [ 1 .. 10 ] characters ^[A-Z0-9]+$ Example: NEMMCO The participant Id for the participant who sent the request. |
| Accept | string Value: "application/json" Example: application/json Specifies to the IDX Hub the content type your client application expects to receive. |
| Accept-Encoding required | string Value: "gzip" Example: gzip Indicates the client application accepts gzip-compressed responses. |
| x-schemaVersion | string Example: 23.0.1 Schema version of the payload or requested resource. Defaults to the latest if omitted.
During a schema version transition window the |
{- "data": [
- {
- "messageContextId": "pqd~bpqd~l~mdpid~9c1e2d3a-4b5f-6c7d-8e9f-0a1b2c3d4e5f",
- "priority": "low",
- "initiatingParticipantId": "MDPID",
- "messageDateTime": "2025-09-03T08:53:24.000+10:00",
- "schemaVersion": "1.2.3",
- "businessFunctionId": "pqd",
- "businessFunctionResourceId": "bpqd",
- "market": "NEM",
- "messageType": "message",
- "messageId": "3SJDIHHYU8FV137HU2U0-MSG-00561439507",
- "channel": "api"
}, - {
- "messageContextId": "pqd~bpqd~m~telas~9c1e2d3a-4b5f-6c7d-8e9f-0a1b2c3d4e5q",
- "priority": "medium",
- "initiatingParticipantId": "TELAS",
- "messageDateTime": "2025-09-03T08:54:48.000+10:00",
- "schemaVersion": "1.2.4",
- "businessFunctionId": "pqd",
- "businessFunctionResourceId": "bpqd",
- "market": "NEM",
- "messageType": "message",
- "messageId": "4SJDIHHYU8FV137HU2U0-MSG-00561439508",
- "channel": "api"
}
], - "links": {
- "prev": "URL string",
- "next": "URL string",
}, - "meta": {
- "totalRecords": 4,
- "totalPages": 2,
- "itemCount": 2,
- "nextCursor": "pqd_bpqd_m_actew_9c1e2d3a-4b5f-6c7d-8e9f-0a1b2c3d4e22"
}
}| messageContextId required | string^[0-9a-z]{1,4}~[0-9a-z]{1,8}(?:_[0-9a-z_]{1,3... Example: pqd~bpqd~m~mdpid~20250819235520790a Get a BPQD message by Message Context ID. The |
| x-initiatingParticipantId required | string [ 1 .. 10 ] characters ^[A-Z0-9]+$ Example: NEMMCO The participant Id for the participant who sent the request. |
| Accept | string Value: "application/json" Example: application/json Specifies to the IDX Hub the content type your client application expects to receive. |
| Accept-Encoding required | string Value: "gzip" Example: gzip Indicates the client application accepts gzip-compressed responses. |
{- "data": {
- "header": {
- "initiatingParticipantId": "string",
- "receivingParticipantId": [
- "string"
], - "messageId": "string",
- "messageDateTime": "2019-08-24T14:15:22Z",
- "businessFunctionId": "string",
- "businessFunctionResourceId": "string",
- "businessFunctionSubResourceId": "string",
- "priority": "High",
- "market": "AATELEC"
}, - "transactions": [
- {
- "transactionId": "string",
- "transactionType": "BasicPowerQualityData",
- "transactionDateTime": "2019-08-24T14:15:22Z",
- "nmiDetails": [
- {
- "nmi": "string",
- "nmiChecksum": 9,
- "meterSerialNumber": "string",
- "intervalLength": 300,
- "intervalData": [
- {
- "intervalEndDateTime": "2026-02-06T05:00:00.000+10:00",
- "reads": {
- "V1": -9999999999999.99,
- "C1": -9999999999999.99,
- "A1": -9999.99,
- "V2": -9999999999999.99,
- "C2": -9999999999999.99,
- "A2": -9999.99,
- "V3": -9999999999999.99,
- "C3": -9999999999999.99,
- "A3": -9999.99
}
}
]
}
]
}
]
}
}| priority | string Enum: "low" "medium" "high" Example: priority=medium Retrieve the first message by a given priority |
| x-initiatingParticipantId required | string [ 1 .. 10 ] characters ^[A-Z0-9]+$ Example: NEMMCO The participant Id for the participant who sent the request. |
| Accept | string Value: "application/json" Example: application/json Specifies to the IDX Hub the content type your client application expects to receive. |
| Accept-Encoding required | string Value: "gzip" Example: gzip Indicates the client application accepts gzip-compressed responses. |
{- "data": {
- "header": {
- "initiatingParticipantId": "string",
- "receivingParticipantId": [
- "string"
], - "messageId": "string",
- "messageDateTime": "2019-08-24T14:15:22Z",
- "businessFunctionId": "string",
- "businessFunctionResourceId": "string",
- "businessFunctionSubResourceId": "string",
- "priority": "High",
- "market": "AATELEC"
}, - "transactions": [
- {
- "transactionId": "string",
- "transactionType": "BasicPowerQualityData",
- "transactionDateTime": "2019-08-24T14:15:22Z",
- "nmiDetails": [
- {
- "nmi": "string",
- "nmiChecksum": 9,
- "meterSerialNumber": "string",
- "intervalLength": 300,
- "intervalData": [
- {
- "intervalEndDateTime": "2026-02-06T05:00:00.000+10:00",
- "reads": {
- "V1": -9999999999999.99,
- "C1": -9999999999999.99,
- "A1": -9999.99,
- "V2": -9999999999999.99,
- "C2": -9999999999999.99,
- "A2": -9999.99,
- "V3": -9999999999999.99,
- "C3": -9999999999999.99,
- "A3": -9999.99
}
}
]
}
]
}
]
}
}| messageContextId required | string Example: pqd~bpqd~m~mdpid~20250819235520790a Delete a BPQD message by Message Context ID. The |
| x-initiatingParticipantId required | string [ 1 .. 10 ] characters ^[A-Z0-9]+$ Example: NEMMCO The participant Id for the participant who sent the request. |
| Accept | string Value: "application/json" Example: application/json Specifies to the IDX Hub the content type your client application expects to receive. |
{- "title": "Invalid Resource",
- "status": 400,
- "detail": "The resource path used in the request is not supported by AEMO. Please use a valid path.",
- "instance": "urn:transactionId:example-400.01",
- "traceabilityId": "126361cc-414e-47d1-bbdb-f54a476eecb0",
- "data": {
- "header": {
- "messageId": "example-message-400.01",
- "initiatingParticipantId": "MDPID",
- "receivingParticipantId": "LNSPID",
- "messageDateTime": "2025-09-03T08:53:24.000+10:00",
- "businessFunctionId": "pqd",
- "businessFunctionResourceId": "bpqd",
- "priority": "Low",
- "market": "NEM"
}, - "errors": [
- {
- "code": "IDX.008",
- "detail": "The resource path used in the request is not supported by AEMO. Please use a valid path.",
- "field": "N/A"
}
]
}
}