AESO Current Supply Demand API (v2)

The current summary of Alberta's supply and demand balance — the JSON equivalent of the long-running ETS Current Supply Demand report that carries Alberta Total Net Generation, Net Actual Interchange, Alberta Internal Load, contingency reserve, and the generation mix by fuel type. Version 2 exposes /csd/summary/current.

OpenAPI Specification

aeso-currentsupplydemand-api-v2-openapi.json Raw ↑
{
  "openapi": "3.0.1",
  "info": {
    "title": "Current Supply Demand",
    "description": "Get Current Supply Demand Report",
    "version": "v2"
  },
  "servers": [
    {
      "url": "https://apimgw.aeso.ca/public/currentsupplydemand-api"
    },
    {
      "url": "https://gateway-apim.aeso.ca/public/currentsupplydemand-api"
    }
  ],
  "paths": {
    "/csd/summary/current": {
      "get": {
        "operationId": "getCSDSummaryDataReportv2",
        "summary": "Fetch the AIES's latest supply & demand summary data.\r\n",
        "description": "Fetch the AIES's latest supply & demand summary data with generation data aggregated by fuel type and flows on each interchange path..\r\n",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CSDSummaryDataVOv2"
                },
                "examples": {
                  "default": {
                    "value": {
                      "effective_datetime_utc": "2022-03-18 10:20",
                      "effective_datetime_mpt": "2022-03-18 16:20",
                      "total_max_generation_capability": 0,
                      "total_net_generation": 0,
                      "net_to_grid_generation": 0,
                      "net_actual_interchange": 0,
                      "alberta_internal_load": 0,
                      "contingency_reserve_required": 0,
                      "dispatched_contigency_reserve_total": 0,
                      "dispatched_contingency_reserve_gen": 0,
                      "dispatched_contingency_reserve_other": 0,
                      "ffr_armed_dispatch": 0,
                      "ffr_offered_volume": 0,
                      "long_lead_time_volume": 0,
                      "generation_data_list": [
                        {
                          "fuel_type": "string",
                          "aggregated_maximum_capability": 0,
                          "aggregated_net_generation": 0,
                          "aggregated_dispatched_contingency_reserve": 0
                        }
                      ],
                      "interchange_list": [
                        {
                          "path": "string",
                          "actual_flow": 0
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error"
          },
          "400": {
            "description": "Bad Request"
          },
          "405": {
            "description": "Invalid method"
          },
          "503": {
            "description": "Service unavailable"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKeyHeader": {
        "type": "apiKey",
        "name": "API-KEY",
        "in": "header"
      },
      "apiKeyQuery": {
        "type": "apiKey",
        "name": "subscription-key",
        "in": "query"
      }
    },
    "schemas": {
      "CSDGenerationFuelTypeVO": {
        "type": "object",
        "properties": {
          "fuel_type": {
            "type": "string",
            "description": "Fuel Type of the asset."
          },
          "aggregated_maximum_capability": {
            "type": "integer",
            "description": "Maximum capabilities (in MW) of all the generating assets, aggregated by fuel type.\r\nNote that the Maximum Capability (MC) of coal assets is net of auxiliary load.",
            "format": "int32"
          },
          "aggregated_net_generation": {
            "type": "integer",
            "description": "Net Generation (Gross Generation minus Asset service) in MW of all the generating assets, aggregated by fuel type.",
            "format": "int32"
          },
          "aggregated_dispatched_contingency_reserve": {
            "type": "integer",
            "description": "Dispatched (and Accepted) Contingency Reserve (in MW) of all the generating assets, aggregated by fuel type.",
            "format": "int32"
          }
        }
      },
      "CSDInterchangeVO": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "AIES's interchange path name."
          },
          "actual_flow": {
            "type": "integer",
            "description": "Flow on AIES's interchange path (in MW).",
            "format": "int32"
          }
        }
      },
      "CSDSummaryDataVOv2": {
        "type": "object",
        "properties": {
          "effective_datetime_utc": {
            "type": "string",
            "description": "The timestamp of when the data was last updated in UTC",
            "example": "2022-03-18 10:20"
          },
          "effective_datetime_mpt": {
            "type": "string",
            "description": "The timestamp of when the data was last updated in MPT",
            "example": "2022-03-18 16:20"
          },
          "total_max_generation_capability": {
            "type": "integer",
            "format": "int32"
          },
          "total_net_generation": {
            "type": "integer",
            "description": "Total Net Generation (Gross Generation minus Asset service) in MW of all AIES assets that are greater than 5MWs.",
            "format": "int32"
          },
          "net_to_grid_generation": {
            "type": "integer",
            "description": "Net-To-Grid Generation (in MW). is calculated as per the definition \"net generation the ISO determines is delivered to the grid\" in Alberta Reliability Standard BAL-002-WECC-AB-2).\r\nLoad used to calculate contingency reserves requirements, as per BAL-002-WECC-AB-2, is Net-To-Grid Generation minus Net Actual Interchange. Please see BAL-002-WECC-AB-2 for more information.",
            "format": "int32"
          },
          "net_actual_interchange": {
            "type": "integer",
            "description": "Control area interchange between Alberta and British Columbia, Saskatchewan and Montana  (in MW) - Defined as Import (-) or Export (+).)",
            "format": "int32"
          },
          "alberta_internal_load": {
            "type": "integer",
            "description": "Calculated total Alberta demand based on all telemetered Control Area Net Generation minus Net Actual Interchange (in MW).",
            "format": "int32"
          },
          "contingency_reserve_required": {
            "type": "integer",
            "description": "Based on the WSCC Reserve calculation Methodology. It is the amount of Contingency reserve that should be obtained on average during the hour (in MW).",
            "format": "int32"
          },
          "dispatched_contigency_reserve_total": {
            "type": "integer",
            "description": "Dispatched (and Accepted) Contingency Reserve (in MW).",
            "format": "int32"
          },
          "dispatched_contingency_reserve_gen": {
            "type": "integer",
            "description": "Total Dispatched (and Accepted) Contingency Reserve (in MW) of all AIES generation assets that are greater than 5MWs.",
            "format": "int32"
          },
          "dispatched_contingency_reserve_other": {
            "type": "integer",
            "description": "Total Dispatched Contingency Reserve (in MWs) obtained from Non- Generation assets (Interconnections, Load, etc).",
            "format": "int32"
          },
          "ffr_armed_dispatch": {
            "type": "integer",
            "description": "The total amount of real power (in MW), armed for FFR following a Dispatch.",
            "format": "int32"
          },
          "ffr_offered_volume": {
            "type": "integer",
            "description": "The total amount of real power offered by FFR Service Providers (in MW).",
            "format": "int32"
          },
          "long_lead_time_volume": {
            "type": "integer",
            "description": "Total amount of long lead time volume not available (in MW).",
            "format": "int32"
          },
          "generation_data_list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CSDGenerationFuelTypeVO"
            }
          },
          "interchange_list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CSDInterchangeVO"
            }
          }
        }
      }
    }
  },
  "security": [
    {},
    {
      "apiKeyHeader": []
    },
    {
      "apiKeyQuery": []
    }
  ],
  "x-provenance": {
    "harvestedBy": "API Evangelist",
    "harvestedOn": "2026-07-27",
    "sourcePortal": "https://developer-apim.aeso.ca/",
    "method": "Assembled verbatim from the AESO Azure API Management developer-portal data API, which is served anonymously. AESO's own OpenAPI export (?export=true&format=openapi) returns a valid document with an EMPTY paths object, so paths, parameters, responses, examples and component schemas were read from the portal's operations/ and schemas/ endpoints and reassembled without alteration. Nothing was invented.",
    "sources": [
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/currentsupplydemand-api-v2?api-version=2022-04-01-preview",
        "status": 200,
        "note": "API metadata"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/currentsupplydemand-api-v2?export=true&format=openapi%2Bjson&api-version=2022-04-01-preview",
        "status": 200,
        "note": "AESO OpenAPI export (empty paths) - basis for info/servers/security"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/currentsupplydemand-api-v2/operations?api-version=2022-04-01-preview",
        "status": 200,
        "note": "operation list"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/currentsupplydemand-api-v2/schemas?api-version=2022-04-01-preview",
        "status": 200,
        "note": "schema list"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/currentsupplydemand-api-v2/operations/getCSDSummaryDataReportv2?api-version=2022-04-01-preview",
        "status": 200,
        "note": "operation detail"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/currentsupplydemand-api-v2/schemas/68937f88445a960a0c7efc9f?api-version=2022-04-01-preview",
        "status": 200,
        "note": "schema document"
      }
    ]
  }
}