Power Quality Data API (1.0.0)

Download OpenAPI specification:

API for submitting basic and advanced power quality data in the NEM.

Throttling and quotas

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.

Submit Basic Power Quality Data

Submit a BPQD message

Authorizations:
AEMO-OAuth2
header Parameters
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 messageContextId for the message.

The messageContextID is used in the following ways:

  • To provide a contextID for the message exchange. The participant/IDX-Hub uses this contextID of the original request when handling delivery.
  • For large file Business Functions, the filename is set to .zip.
  • The name of the archive files is set to .zip.
  • To provide context to the failure messages to be returned where the incoming payload is unreadable such as, the payload is schema invalid.

NOTE: The UniqueID is defined by the Participant. Unique identifiers do not have to be globally unique, only unique to a particular sender. However, the length has been chosen such that UUIDs can be used as message identifiers if considered appropriate, guaranteeing global uniqueness.

The messageContextID format is: [BusinessFunctionID 0-9_a-z]{1,4} + "~" + [BusinessFunctionResourceID 0-9_a-z]{1,8} + "~" + [Priority h|m|l] + "~" + [InitiatingParticipantID]{1,10} + "~" + [UniqueID 0-9_a-z_-]{1,36}

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 gzip only.

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 n or n-1 schema can be sent or retrieved.

Request Body schema: application/json
required
required
object

Responses

Request samples

Content type
application/json
{
  • "data": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

List Basic Power Quality Data metadata

A list of metadata for BPQD messages in the queue

Authorizations:
AEMO-OAuth2
query Parameters
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 meta section of the previous response as the nextCursor value. If the query parameter is not provided the first page of results will be returned.

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')

header Parameters
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 n or n-1 schema can be sent or retrieved.

Responses

Response samples

Content type
application/json
{}

Get a Basic Power Quality Data message

Get a BPQD message by MessageContextID

Authorizations:
AEMO-OAuth2
path Parameters
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 messageContextID format is: [BusinessFunctionID 0-9_a-z]{1,4} + "~"" + [BusinessFunctionResourceID 0-9_a-z]{1,8} + "~" + [Priority h|m|l] + "~" + [InitiatingParticipantID]{1,10} + "~" + [UniqueID, 0-9_a-z_-]{1,36}

header Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get the first BPQD message from the queue

Authorizations:
AEMO-OAuth2
query Parameters
priority
string
Enum: "low" "medium" "high"
Example: priority=medium

Retrieve the first message by a given priority

header Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete a Basic Power Quality Data message

Delete a BPQD message by MessageContextID

Authorizations:
AEMO-OAuth2
path Parameters
messageContextId
required
string
Example: pqd~bpqd~m~mdpid~20250819235520790a

Delete a BPQD message by Message Context ID. The messageContextID format is: [BusinessFunctionID 0-9_a-z]{1,4} + "~" + [BusinessFunctionResourceID 0-9_a-z]{1,8} + "~" + [Priority h|m|l] + "~" + [InitiatingParticipantID]{1,10} + "~" + [UniqueID, 0-9_a-z_-]{1,36}

header Parameters
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.

Responses

Response samples

Content type
application/json
Example
{
  • "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": {
    }
}