Australian Energy Market Commission Rule Content API

The structural tree of a rule version — chapters, parts, divisions, rules and clauses.

Operations 3

GET /rules/{versionId}/toc Get the full table of contents for a rule version #
GET /rules/{versionId}/chapters List the top-level chapters of a rule version #
GET /rules/{versionId}/content/{contentId} Get one content node of a rule version #

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/aemc-rule-content-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

aemc-rule-content-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AEMC Energy Rules Rule Content API
  version: '2026-07-27'
  description: 'Machine-readable description of the undocumented JSON API that serves the Australian Energy Market Commission''s Energy Rules application at https://energy-rules.aemc.gov.au. It exposes the consolidated, versioned text of the National Electricity Rules (NER), National Gas Rules (NGR) and National Energy Retail Rules (NERR) — the rule versions and their PDF/DOCX artefacts, the table of contents, every chapter/part/division/rule/clause node, the full-text search index and the complete defined-terms glossary.


    AEMC publishes NO OpenAPI, no developer portal and no API documentation for this surface. This document is DERIVED, not harvested. Every path below is a literal route string taken from AEMC''s own shipped production JavaScript bundle (https://de4oj9etm9d7w.cloudfront.net/b8470902-3d28-4902-8883-2c59d10e7818/js/app.js), and each one was probed live and anonymously on 2026-07-27 with the observed HTTP status recorded in `x-evidence`. Response schemas are derived ONLY from responses actually observed on those probes — no field, parameter or status code is invented.


    ACCESS: entirely anonymous. No API key, no OAuth, no cookie and no CSRF token was required for any read endpoint probed; responses carry `x-ratelimit-limit: 1000` and `x-ratelimit-remaining`, served through AWS API Gateway (`apigw-requestid`) in front of a Laravel application (Laravel API Resource `data`/`links`/`meta` envelope, Laravel-style pagination).


    NOT MODELLED: the production bundle also contains an administrative, token-gated approval route of the form `/api/v1/{type}/{version}/approve/{token}` used by the editorial preview workflow. It is a state-changing endpoint, it was deliberately NOT probed, and it is deliberately not modelled here. The `previewToken` query parameter that several read endpoints accept belongs to the same editorial preview workflow and is not usable anonymously.


    STATUS: this is an undocumented internal API of a public website, not a product AEMC offers or supports. There is no published terms-of-use, rate-limit policy, SLA, versioning policy or contact for it. Treat it as subject to change without notice, and report inaccuracies rather than treating this document as an authoritative contract.'
  contact:
    name: AEMC
    url: https://www.aemc.gov.au/contact-us
  x-provenance:
    generated: '2026-07-27'
    method: derived
    sources:
    - https://de4oj9etm9d7w.cloudfront.net/b8470902-3d28-4902-8883-2c59d10e7818/js/app.js
    - live anonymous HTTP probes 2026-07-27
    note: Not published by AEMC. Derived by API Evangelist from AEMC's own production client bundle plus live anonymous probes of every route.
servers:
- url: https://energy-rules.aemc.gov.au/api/v1
  description: Production
tags:
- name: Rule Content
  description: The structural tree of a rule version — chapters, parts, divisions, rules and clauses.
paths:
  /rules/{versionId}/toc:
    get:
      operationId: getRuleTableOfContents
      summary: Get the full table of contents for a rule version
      description: 'Returns the complete nested structure of a rule version — chapters, parts, divisions, rules, clauses and schedules — as a recursive tree of content nodes, each with the relative link to its own content resource. Verified live 2026-07-27 for version id 803 (NER v251): 19 top-level nodes, 86 KB gzipped.'
      tags:
      - Rule Content
      parameters:
      - $ref: '#/components/parameters/VersionId'
      responses:
        '200':
          description: Table of contents tree.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TocNode'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        probed: '2026-07-27'
        requests:
        - url: https://energy-rules.aemc.gov.au/api/v1/rules/803/toc
          status: 200
          bytes: 86222
        - url: https://energy-rules.aemc.gov.au/api/v1/rules/9999/toc
          status: 404
        - url: https://energy-rules.aemc.gov.au/api/v1/rules/251/toc
          status: 404
          note: the path parameter is the version id, not the version number
  /rules/{versionId}/chapters:
    get:
      operationId: listRuleChapters
      summary: List the top-level chapters of a rule version
      description: Returns the top-level content nodes (chapters and schedules) of a rule version without their descendants. Discovered from the `links.chapters` URL returned on every rule version object.
      tags:
      - Rule Content
      parameters:
      - $ref: '#/components/parameters/VersionId'
      responses:
        '200':
          description: Top-level chapter nodes.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TocNode'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        probed: '2026-07-27'
        requests:
        - url: https://energy-rules.aemc.gov.au/api/v1/rules/803/chapters
          status: 200
          bytes: 3216
  /rules/{versionId}/content/{contentId}:
    get:
      operationId: getRuleContent
      summary: Get one content node of a rule version
      description: Returns a single content node — a chapter, part, division, rule or clause — with its parent, its immediate children and, for leaf nodes, the rule text. A `meta` block reports whether the version is approved, current or archived.
      tags:
      - Rule Content
      parameters:
      - $ref: '#/components/parameters/VersionId'
      - name: contentId
        in: path
        required: true
        description: Content node id, as returned in `links.self` on any table-of-contents or search result node.
        schema:
          type: integer
      - name: previewToken
        in: query
        required: false
        description: Editorial preview token. Not usable anonymously.
        schema:
          type: string
      responses:
        '200':
          description: One content node.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ContentNode'
                  meta:
                    $ref: '#/components/schemas/ContentMeta'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        probed: '2026-07-27'
        requests:
        - url: https://energy-rules.aemc.gov.au/api/v1/rules/803/content/872794
          status: 200
          bytes: 5567
        - url: https://energy-rules.aemc.gov.au/api/v1/rules/803/content/872796
          status: 200
          bytes: 591
components:
  schemas:
    ContentMeta:
      type: object
      properties:
        archived:
          type: integer
        approved:
          type: integer
        current:
          type: integer
        approve_link:
          type:
          - string
          - 'null'
    TocNode:
      type: object
      properties:
        id:
          type: integer
        parent_id:
          type:
          - integer
          - 'null'
        version_id:
          type: integer
        sort_index:
          type: integer
        title:
          type: string
        description:
          type:
          - string
          - 'null'
        index:
          type: string
          description: Citation index, e.g. "1.1.1" or "11.Part ZF".
        chapter:
          type: string
        content_type:
          type: string
          description: Observed values on NER v251.
          enum:
          - chapter
          - part
          - division
          - rule
          - clause
          - chapter_schedule
          - part_schedule
        metadata:
          type:
          - object
          - 'null'
          properties:
            is_glossary:
              type: boolean
        is_glossary:
          type: boolean
        children:
          type: array
          items:
            $ref: '#/components/schemas/TocNode'
        links:
          type: object
          properties:
            self:
              type: string
              description: Relative content link, e.g. "content/872796".
    Error:
      type: object
      description: Error envelope observed on 404 responses. Not RFC 9457 problem+json.
      properties:
        message:
          type: string
          examples:
          - Not found
    ContentNode:
      type: object
      properties:
        id:
          type: integer
        parent_id:
          type:
          - integer
          - 'null'
        title:
          type: string
        description:
          type:
          - string
          - 'null'
        index:
          type: string
        chapter:
          type: string
        content:
          type:
          - string
          - 'null'
          description: HTML rule text for leaf nodes.
        content_type:
          type: string
        metadata:
          type:
          - object
          - 'null'
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
            parent:
              type:
              - string
              - 'null'
              format: uri
        parent:
          type:
          - object
          - array
          - 'null'
          description: Parent node
          or an empty array at the root.: null
        children:
          type: array
          items:
            $ref: '#/components/schemas/ContentNode'
  responses:
    NotFound:
      description: No such rule version, content node or term.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    VersionId:
      name: versionId
      in: path
      required: true
      description: The rule version **id** (the `id` field of a rule version object, e.g. 803 for NER v251) — NOT the human-facing version number. Passing the version number returns HTTP 404.
      schema:
        type: integer
        examples:
        - 803