AEMO CDR API

Introduction

Operations 6

GET /electricity/servicepoints/{servicePointId}/der Get DER For Service Point #
POST /electricity/servicepoints/der Get DER For Specific Service Points #
GET /electricity/servicepoints/{servicePointId} Get Service Point Detail #
POST /electricity/servicepoints Get Service Points #
GET /electricity/servicepoints/{servicePointId}/usage Get Usage For Service Point #
POST /electricity/servicepoints/usage Get Usage For Specific Service Points #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aemo-cdr-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

aemo-cdr-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: CDR API
  description: '## Introduction

    The Consumer Data Right (CDR) APIs allow Registered Financially Responsible Market Participants (FRMPs) to service API requests for AEMO data from Accredited Data Recipients.'
  version: '3.0'
  x-origin:
  - format: openapi
    source: AEMO API Management developer portal
    url: https://dev.aemo.com.au/developer/apis/cdr/operations?api-version=2022-04-01-preview
servers:
- url: https://api-prd.aemo.local/NEMRetail/cds-au/v1/secondary/energy
security:
- {}
- apiKeyHeader: []
- apiKeyQuery: []
tags:
- name: CDR
  description: Introduction
paths:
  /electricity/servicepoints/{servicePointId}/der:
    get:
      operationId: getDERForServicePoint
      summary: Get DER For Service Point
      tags:
      - CDR
      description: Obtain a list of DER data from a particular service point
      parameters:
      - name: servicePointId
        in: path
        required: true
        schema:
          type: string
        description: nmi
      - name: Accept
        in: header
        required: true
        schema:
          type: string
        description: Details the expected content type of the response.
      - name: Accept-Encoding
        in: header
        required: false
        schema:
          type: string
        description: Specifies the encoding support for the response.
      - name: X-initiatingParticipantId
        in: header
        required: true
        schema:
          type: string
        description: The participant ID who the request is from.
      - name: x-v
        in: header
        required: true
        schema:
          type: string
        description: Version of the API supported by AEMO. E.g 1
      - name: x-min-v
        in: header
        required: false
        schema:
          type: string
        description: Minimum version of the API supported by AEMO that can be accepted.  E.g. 1
      - name: x-fapi-interaction-id
        in: header
        required: true
        schema:
          type: string
        description: The x-fapi-interaction-id is supplied for end to end tracing. If the ADR has not populated this on their API call to the retailer, the retailer must generate a unique value to pass through to AEMO.
      - name: x-cds-arrangement
        in: header
        required: true
        schema:
          type: string
        description: Arrangement ID for the consent that the request is being made under to be used for tracing and audit purposes. AEMO will not validate the consent associated with the arrangement.
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Base64 encoding of the URM username and password, concatenated with a colon.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                data:
                  servicePointId: string
                  approvedCapacity: 0
                  availablePhasesCount: 0
                  installedPhasesCount: 0
                  islandableInstallation: string
                  hasCentralProtectionControl: false
                  protectionMode:
                    exportLimitkva: 0
                    underFrequencyProtection: 0
                    underFrequencyProtectionDelay: 0
                    overFrequencyProtection: 0
                    overFrequencyProtectionDelay: 0
                    underVoltageProtection: 0
                    underVoltageProtectionDelay: 0
                    overVoltageProtection: 0
                    overVoltageProtectionDelay: 0
                    sustainedOverVoltage: 0
                    sustainedOverVoltageDelay: 0
                    frequencyRateOfChange: 0
                    voltageVectorShift: 0
                    interTripScheme: string
                    neutralVoltageDisplacement: 0
                  acConnections:
                  - connectionIdentifier: 0
                    count: 0
                    equipmentType: INVERTER
                    manufacturerName: string
                    inverterSeries: string
                    inverterModelNumber: string
                    commissioningDate: string
                    status: ACTIVE
                    inverterDeviceCapacity: 0
                    derDevices:
                    - deviceIdentifier: 0
                      count: 0
                      manufacturer: string
                      modelNumber: string
                      status: ACTIVE
                      type: FOSSIL
                      subtype: string
                      nominalRatedCapacity: 0
                      nominalStorageCapacity: 0
                links:
                  self: string
                meta: {}
        '400':
          description: For 4XX error codes, Refer to the Data Standards for the full list of HTTP response and error codes that may be returned for this API.<br/><a href>https://consumerdatastandardsaustralia.github.io/standards/#error-codes
          content:
            application/json:
              example:
                errors:
                - code: string
                  title: string
                  detail: string
        '401':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: Invalid Username or Password
        '403':
          description: Expected error encountered
          content:
            application/json:
              example:
                error 1:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: X-initiatingParticipantId is not valid or No CDR permission associated with this account
        '405':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: 'Input request HTTP method is POST but operation /electricity/servicepoints/1234567890/der accepts only: [GET]'
        '429':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Too many requests
                  detail: Number of inbound requests exceeded the throttling limits; try after some time
        '500':
          description: The following error codes MUST be supported:<br/><li>500 - Service Unavailable</li>
          content:
            application/json:
              example:
                errors:
                - code: 'urn:au-cds:error:cds-all:GeneralError/Unexpected '
                  title: Unexpected Error encountered/Internal Server Error
                  detail: Unexpected error encountered
  /electricity/servicepoints/der:
    post:
      operationId: getDERForSpecificServicePoints
      summary: Get DER For Specific Service Points
      tags:
      - CDR
      description: Obtain DER data for a specific set of service points
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
        description: Page of results being requested (standard pagination)
      - name: page-size
        in: query
        required: false
        schema:
          type: integer
        description: Page size. Default is 25 (standard pagination). Maximum page size of 1000 results.
      - name: continuation-token
        in: query
        required: false
        schema:
          type: string
        description: For Internal AEMO pagination purpose
      - name: Accept
        in: header
        required: true
        schema:
          type: string
        description: Details the expected content type of the response.
      - name: Accept-Encoding
        in: header
        required: false
        schema:
          type: string
        description: Specifies the encoding support for the response.
      - name: X-initiatingParticipantId
        in: header
        required: true
        schema:
          type: string
        description: The participant ID who the request is from.
      - name: x-v
        in: header
        required: true
        schema:
          type: string
        description: Version of the API supported by AEMO. E.g 1
      - name: x-min-v
        in: header
        required: false
        schema:
          type: string
        description: Minimum version of the API supported by AEMO that can be accepted.  E.g. 1
      - name: x-fapi-interaction-id
        in: header
        required: true
        schema:
          type: string
        description: The x-fapi-interaction-id is supplied for end to end tracing. If the ADR has not populated this on their API call to the retailer, the retailer must generate a unique value to pass through to AEMO.
      - name: x-cds-arrangement
        in: header
        required: true
        schema:
          type: string
        description: Arrangement ID for the consent that the request is being made under to be used for tracing and audit purposes. AEMO will not validate the consent associated with the arrangement.
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Base64 encoding of the URM username and password, concatenated with a colon.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                data:
                  derRecords:
                  - servicePointId: string
                    approvedCapacity: 0
                    availablePhasesCount: 0
                    installedPhasesCount: 0
                    islandableInstallation: string
                    hasCentralProtectionControl: false
                    protectionMode:
                      exportLimitkva: 0
                      underFrequencyProtection: 0
                      underFrequencyProtectionDelay: 0
                      overFrequencyProtection: 0
                      overFrequencyProtectionDelay: 0
                      underVoltageProtection: 0
                      underVoltageProtectionDelay: 0
                      overVoltageProtection: 0
                      overVoltageProtectionDelay: 0
                      sustainedOverVoltage: 0
                      sustainedOverVoltageDelay: 0
                      frequencyRateOfChange: 0
                      voltageVectorShift: 0
                      interTripScheme: string
                      neutralVoltageDisplacement: 0
                    acConnections:
                    - connectionIdentifier: 0
                      count: 0
                      equipmentType: INVERTER
                      manufacturerName: string
                      inverterSeries: string
                      inverterModelNumber: string
                      commissioningDate: string
                      status: ACTIVE
                      inverterDeviceCapacity: 0
                      derDevices:
                      - deviceIdentifier: 0
                        count: 0
                        manufacturer: string
                        modelNumber: string
                        status: ACTIVE
                        type: FOSSIL
                        subtype: string
                        nominalRatedCapacity: 0
                        nominalStorageCapacity: 0
                links:
                  self: string
                  first: string
                  prev: string
                  next: string
                  last: string
                meta:
                  totalRecords: 0
                  totalPages: 0
        '400':
          description: For 4XX error codes, Refer to the Data Standards for the full list of HTTP response and error codes that may be returned for this API.<br/><a href>https://consumerdatastandardsaustralia.github.io/standards/#error-codes
          content:
            application/json:
              example:
                errors:
                - code: string
                  title: string
                  detail: string
        '401':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: Invalid Username or Password
        '403':
          description: Expected error encountered
          content:
            application/json:
              example:
                error 1:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: X-initiatingParticipantId is not valid or No CDR permission associated with this account
        '405':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: 'Input request HTTP method is GET but operation /electricity/servicepoints/der accepts only: [POST]'
        '429':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Too many requests
                  detail: Number of inbound requests exceeded the throttling limits; try after some time
        '500':
          description: The following error codes MUST be supported:<br/><li>500 - Service Unavailable</li>
          content:
            application/json:
              example:
                errors:
                - code: 'urn:au-cds:error:cds-all:GeneralError/Unexpected '
                  title: Unexpected Error encountered/Internal Server Error
                  detail: Unexpected error encountered
  /electricity/servicepoints/{servicePointId}:
    get:
      operationId: getServicePointDetail
      summary: Get Service Point Detail
      tags:
      - CDR
      description: Obtain standingData details for the requested Service point
      parameters:
      - name: servicePointId
        in: path
        required: true
        schema:
          type: string
        description: nmi
      - name: Accept
        in: header
        required: true
        schema:
          type: string
        description: Details the expected content type of the response.
      - name: Accept-Encoding
        in: header
        required: false
        schema:
          type: string
        description: Specifies the encoding support for the response.
      - name: X-initiatingParticipantId
        in: header
        required: true
        schema:
          type: string
        description: The participant ID who the request is from.
      - name: x-v
        in: header
        required: true
        schema:
          type: string
        description: Version of the API supported by AEMO. e.g 1
      - name: x-min-v
        in: header
        required: false
        schema:
          type: string
        description: Minimum version of the API supported by AEMO that can be accepted.  e.g. 1
      - name: x-fapi-interaction-id
        in: header
        required: true
        schema:
          type: string
        description: The x-fapi-interaction-id is supplied for end to end tracing. If the ADR has not populated this on their API call to the retailer, the retailer must generate a unique value to pass through to AEMO.
      - name: x-cds-arrangement
        in: header
        required: true
        schema:
          type: string
        description: Arrangement ID for the consent that the request is being made under to be used for tracing and audit purposes. AEMO will not validate the consent associated with the arrangement.
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Base64 encoding of the URM username and password, concatenated with a colon.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                data:
                  servicePointId: string
                  nationalMeteringId: string
                  servicePointClassification: EXTERNAL_PROFILE
                  servicePointStatus: ACTIVE
                  jurisdictionCode: ALL
                  isGenerator: true
                  validFromDate: string
                  lastUpdateDateTime: string
                  consumerProfile:
                    classification: BUSINESS
                    threshold: LOW
                  distributionLossFactor:
                    code: string
                    description: string
                    lossValue: string
                  relatedParticipants:
                  - party: string
                    role: FRMP
                  location:
                    addressUType: paf
                    simple:
                      mailingName: string
                      addressLine1: string
                      addressLine2: string
                      addressLine3: string
                      postcode: string
                      city: string
                      state: string
                      country: AUS
                    paf:
                      dpid: string
                      thoroughfareNumber1: 0
                      thoroughfareNumber1Suffix: string
                      thoroughfareNumber2: 0
                      thoroughfareNumber2Suffix: string
                      flatUnitType: string
                      flatUnitNumber: string
                      floorLevelType: string
                      floorLevelNumber: string
                      lotNumber: string
                      buildingName1: string
                      buildingName2: string
                      streetName: string
                      streetType: string
                      streetSuffix: string
                      postalDeliveryType: string
                      postalDeliveryNumber: 0
                      postalDeliveryNumberPrefix: string
                      postalDeliveryNumberSuffix: string
                      localityName: string
                      postcode: string
                      state: string
                  meters:
                  - meterId: string
                    specifications:
                      status: CURRENT
                      installationType: BASIC
                      manufacturer: string
                      model: string
                      readType: string
                      nextScheduledReadDate: string
                    registers:
                    - registerId: string
                      registerSuffix: string
                      averagedDailyLoad: 0
                      registerConsumptionType: INTERVAL
                      networkTariffCode: string
                      unitOfMeasure: string
                      timeOfDay: ALLDAY
                      multiplier: 0
                      controlledLoad: true
                      consumptionType: ACTUAL
                links:
                  self: string
                meta: {}
        '400':
          description: For 4XX error codes, Refer to the Data Standards for the full list of HTTP response and error codes that may be returned for this API.<br/><a href>https://consumerdatastandardsaustralia.github.io/standards/#error-codes
          content:
            application/json:
              example:
                errors:
                - code: string
                  title: string
                  detail: string
        '401':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: Invalid Username or Password
        '403':
          description: Expected error encountered
          content:
            application/json:
              example:
                error 1:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: X-initiatingParticipantId is not valid or No CDR permission associated with this account
        '405':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: 'Input request HTTP method is GET but operation /electricity/servicepoints accepts only: [POST]'
        '429':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Too many requests
                  detail: Number of inbound requests exceeded the throttling limits; try after some time
        '500':
          description: The following error codes MUST be supported:<br/><li>500 - Service Unavailable</li>
          content:
            application/json:
              example:
                errors:
                - code: 'urn:au-cds:error:cds-all:GeneralError/Unexpected '
                  title: Unexpected Error encountered/Internal Server Error
                  detail: Unexpected error encountered
  /electricity/servicepoints:
    post:
      operationId: getServicePoints
      summary: Get Service Points
      tags:
      - CDR
      description: Obtain StandigData details for the specific set of service points.
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
        description: Page of results being requested (standard pagination)
      - name: page-size
        in: query
        required: false
        schema:
          type: integer
        description: Page size. Default is 25 (standard pagination). Maximum page size of 1000 results.
      - name: continuation-token
        in: query
        required: false
        schema:
          type: string
        description: For Internal AEMO pagination purpose
      - name: Accept
        in: header
        required: true
        schema:
          type: string
        description: Details the expected content type of the response.
      - name: Accept-Encoding
        in: header
        required: false
        schema:
          type: string
        description: Specifies the encoding support for the response.
      - name: X-initiatingParticipantId
        in: header
        required: true
        schema:
          type: string
        description: The participant ID who the request is from.
      - name: x-v
        in: header
        required: true
        schema:
          type: string
        description: Version of the API supported by AEMO. e.g 1
      - name: x-min-v
        in: header
        required: false
        schema:
          type: string
        description: Minimum version of the API supported by AEMO that can be accepted.  e.g. 1
      - name: x-fapi-interaction-id
        in: header
        required: true
        schema:
          type: string
        description: The x-fapi-interaction-id is supplied for end to end tracing. If the ADR has not populated this on their API call to the retailer, the retailer must generate a unique value to pass through to AEMO.
      - name: x-cds-arrangement
        in: header
        required: true
        schema:
          type: string
        description: Arrangement ID for the consent that the request is being made under to be used for tracing and audit purposes. AEMO will not validate the consent associated with the arrangement.
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Base64 encoding of the URM username and password, concatenated with a colon.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                data:
                  servicePoints:
                  - servicePointId: string
                    nationalMeteringId: string
                    servicePointClassification: EXTERNAL_PROFILE
                    servicePointStatus: ACTIVE
                    jurisdictionCode: ALL
                    isGenerator: true
                    validFromDate: string
                    lastUpdateDateTime: string
                    consumerProfile:
                      classification: BUSINESS
                      threshold: LOW
                links:
                  self: string
                  first: string
                  prev: string
                  next: string
                  last: string
                meta:
                  totalRecords: 0
                  totalPages: 0
        '400':
          description: For 4XX error codes, Refer to the Data Standards for the full list of HTTP response and error codes that may be returned for this API.<br/><a href>https://consumerdatastandardsaustralia.github.io/standards/#error-codes
          content:
            application/json:
              example:
                errors:
                - code: string
                  title: string
                  detail: string
        '401':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: Invalid Username or Password
        '403':
          description: Expected error encountered
          content:
            application/json:
              example:
                error 1:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: X-initiatingParticipantId is not valid or No CDR permission associated with this account
        '405':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Expected error encountered
                  detail: 'Input request HTTP method is POST but operation /electricity/servicepoints/1234567890 accepts only: [GET]'
        '429':
          description: Expected error encountered
          content:
            application/json:
              example:
                errors:
                - code: urn:au-cds:error:cds-all:GeneralError/Expected
                  title: Too many requests
                  detail: Number of inbound requests exceeded the throttling limits; try after some time
        '500':
          description: The following error codes MUST be supported:<br/><li>500 - Service Unavailable</li>
          content:
            application/json:
              example:
                errors:
                - code: 'urn:au-cds:error:cds-all:GeneralError/Unexpected '
                  title: Unexpected Error encountered/Internal Server Error
                  detail: Unexpected error encountered
  /electricity/servicepoints/{servicePointId}/usage:
    get:
      operationId: getUsageForServicePoint
      summary: Get Usage For Service Point
      tags:
      - CDR
      description: Obtain a list of electricity usage data from a particular service point.
      parameters:
      - name: servicePointId
        in: path
        required: true
        schema:
          type: string
        description: nmi
      - name: page
        in: query
        required: false
        schema:
          type: integer
        description: Page of results being requested (standard pagination)
      - name: page-size
        in: query
        required: false
        schema:
          type: integer
        description: Page size. Default is 25 (standard pagination). Maximum page size of 1000 results.
      - name: continuation-token
        in: query
        required: false
        schema:
          type: string
        description: For Internal AEMO pagination purpose
      - name: oldest-date
        in: query
        required: false
        schema:
          type: string
        description: Oldest date data is to be returned for. Should be no earlier than current date minus 24 months. If not provided, current date minus 24 months is assumed.
      - name: newest-date
        in: query
        required: false
        schema:
          type: string
        description: Newest date data is to be returned for. Must be greater than current date minus 24 months. If not provided, current date is assumed.
      - name: interval-reads
        in: query
        required: false
        schema:
          type: string
        description: Interval read values,FULL or 30MIN.Default value is NONE if no value provided.
      - name: Accept
        in: header
        required: true
        schema:
          type: string
        description: Details the expected content type of the response.
      - name: Accept-Encoding
        in: header
        required: false
        schema:
          type: string
        description: Specifies the encoding support for the response.
      - name: X-initiatingParticipantId
        in: header
        required: true
        schema:
          type: string
        description: The participant ID who the request is from.
      - name: x-v
        in: header
        required: true
        schema:
          type: string
        description: Version of the API supported by AEMO. e.g 1
      - name: x-min-v
        in: header
        required: false
        schema:
          type: string
        description: Minimum version of the API supported by AEMO that can be accepted.  e.g. 1
      - name: x-fapi-interaction-id
        in: header
        required: true
        schema:
          type: string
        description: The x-fapi-interaction-id is supplied for end to end tracing. If the ADR has not populated this on their API call to the retailer, the retailer must generate a unique value to pass through to AEMO.
      - name: x-cds-arrangement
        in: header
        required: true
        schema:
          type: string
        description: Arrangement ID for the consent that the request is being made under to be used for tracing and audit purposes. AEMO will not validate the consent associated with the arrangement.
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Base64 encoding of the URM username and password, concatenated with a colon.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                data:
                  reads:
                  - servicePointId: string
                    registerId: string
                    registerSuffix: string
                    meterID: string
                    controlledLoad: true
                    readStartDate: string
                    readEndDate: string
                    unitOfMeasure: string
                    readUType: basicRead
                    basicRead:
                      quality: ACTUAL
                      value: 0
                    intervalRead:
                      readIntervalLength: 0
                      aggregateValue: 0
                      intervalReads:
                      - quality: ACTUAL
                        value: 0
                      readQualities:
                      - startInterval: 

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/aemo/refs/heads/main/openapi/aemo-cdr-api-openapi.yml