Model Groups
List model groups
get/v1/model-group
Returns every model group accessible to your organisation. A model group bundles together each revision of the same model.
Parameters
timeHorizonstringFilter to groups on a single time horizon. Accepts the time-horizon
key (for example day_ahead).Returns
idstringUnique model group identifier.
namestringHuman-readable name for the model group.
latestRevisionnumberHighest revision number currently published in the group.
publicbooleanWhether the model group is publicly accessible. Private groups are visible only to the owning organisation.
createdAtstringISO 8601 timestamp at which the model group was created.
timeHorizonTimeHorizonSummaryThe time horizon this model group belongs to.
modelsModelGroupModelSummary[]Non-archived model revisions in this group, sorted newest first.
Error codes
400Bad Request
The timeHorizon filter is not a known time-horizon key.
401Unauthorized
Missing or invalid bearer token.
GET /v1/model-group
curl "https://api.v2.pd4castr.com.au/v1/model-group?timeHorizon=day_ahead" \
-H "Authorization: Bearer $PD4CASTR_TOKEN"Response
[
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Demand Forecast",
"latestRevision": 3,
"public": false,
"createdAt": "2025-08-01T10:00:00.000Z",
"timeHorizon": {
"name": "Day Ahead",
"shortName": "DA",
"key": "day_ahead"
},
"models": [
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"revision": 3,
"createdAt": "2026-05-01T08:00:00.000Z"
},
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"revision": 2,
"createdAt": "2026-03-15T08:00:00.000Z"
},
{
"id": "d4e5f6a7-b8c9-0123-def0-234567890123",
"revision": 1,
"createdAt": "2026-01-20T08:00:00.000Z"
}
]
},
{
"id": "c3d4e5f6-7890-abcd-ef12-34567890a1b2",
"name": "Price Forecast",
"latestRevision": 5,
"public": true,
"createdAt": "2025-06-14T10:00:00.000Z",
"timeHorizon": {
"name": "Day Ahead",
"shortName": "DA",
"key": "day_ahead"
},
"models": [
{
"id": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"revision": 5,
"createdAt": "2026-05-20T08:00:00.000Z"
}
]
}
]Get the latest model revision
get/v1/model-group/:id/latest-model
Convenience endpoint that returns the highest-revision model in the group.
Parameters
idstringrequired
Unique model group identifier.
Returns
idstringUnique model identifier.
modelGroupIdstringIdentifier of the model group this model belongs to.
namestringStable model identifier slug.
displayNamestringHuman-readable display name.
notesstring | nullNotes from the model's publisher. Returned only to members of the owning organisation; null otherwise.
descriptionstringShort human-readable description of the model.
revisionnumberModel revision number. Increments each time a new revision is published into the same model group.
dockerImagestringContainer image reference for the model. Returned only to members of the owning organisation; an empty string otherwise.
createdAtstringISO 8601 timestamp at which the model was created.
runMode"AUTOMATIC" | "ON_DEMAND"How the model is triggered. AUTOMATIC runs on a schedule; ON_DEMAND only when explicitly invoked.
horizonTimeHorizonThe model's forecast time horizon.
modelMetadataobjectFree-form metadata about the model. Shape varies per model.
outputVariablesOutputVariable[]Output variables produced by the model, including chart display configuration.
outputSpecificationColumnSpecification[]deprecated
Deprecated. Always returned as an empty array. Use
outputVariables instead.inputsModelInputSpecification[] | nullInputs the model accepts, if any.
datasetsModelDatasetSpecification[] | nullDatasets bound to the model, if any.
archivedbooleanWhether the model is archived. Archived models are excluded from
GET /v1/model unless archived=true.enabledbooleanWhether the model is enabled. When enabled, the model runs according to its configuration; when disabled, it does not run.
tagsstring[]Tags associated with the model.
sensitivitiesSensitivitySpecification[]Sensitivity configurations available for the model.
inputAggregationsInputAggregation[]Input aggregations available for the model.
outputFileFormat"json" | "csv" | "parquet"Format the model's run output is delivered in.
displayTimezonestringIANA timezone identifier used to display forecast results.
forecastVariableForecastVariableSpecificationVariable being forecast by the model.
isOwnerbooleanTrue when the requesting user's organisation owns the model.
Error codes
401Unauthorized
Missing or invalid bearer token.
404Not Found
Model group not found, or contains no models.
GET /v1/model-group/:id/latest-model
curl "https://api.v2.pd4castr.com.au/v1/model-group/a1b2c3d4-e5f6-7890-abcd-ef1234567890/latest-model" \
-H "Authorization: Bearer $PD4CASTR_TOKEN"Response
{
"id": "d2f4e0c0-1c1a-4f7c-9b6c-3a4f2c1c1f8d",
"modelGroupId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "demand-forecast-r3",
"displayName": "Demand Forecast (30min)",
"notes": "Retraining cadence: weekly.",
"description": "Day-ahead electricity demand forecast for NEM regions.",
"revision": 3,
"dockerImage": "registry.pd4castr.com.au/acme/demand-forecast:r3",
"createdAt": "2026-01-09T10:00:00.000Z",
"runMode": "AUTOMATIC",
"horizon": {
"name": "Day Ahead",
"shortName": "DA",
"key": "day_ahead"
},
"modelMetadata": {
"resolution": "30min"
},
"outputVariables": [
{
"name": "price",
"key": "price",
"type": "float",
"seriesKey": false,
"colours": []
}
],
"outputSpecification": [],
"inputs": [
{
"id": "b2f4e0c0-1c1a-4f7c-9b6c-3a4f2c1c1f8d",
"key": "demand_forecast"
}
],
"datasets": [
{
"id": "c4e1a0d2-9b6c-4f7c-8a1e-2f3c4d5e6f70",
"key": "historical_demand",
"source": "e6f3c2b1-7a5d-4c9e-8b2f-1d3e4f5a6b7c",
"fileFormat": "parquet"
}
],
"archived": false,
"enabled": true,
"tags": [
"demand",
"nem"
],
"sensitivities": [
{
"id": "7c1d6c9f-0a8e-4f7c-9b6c-3a4f2c1c1f8d",
"name": "High demand",
"key": "high_demand"
}
],
"inputAggregations": [
{
"id": "9a2c1e7b-4d3f-4a8c-b1e2-5f6a7c8d9e0f",
"name": "Solar & Wind",
"key": "solar-wind"
}
],
"outputFileFormat": "json",
"displayTimezone": "Australia/Sydney",
"forecastVariable": {
"name": "Price",
"shortName": "price",
"key": "price"
},
"isOwner": true
}List a group's models
get/v1/model-group/:id/models
Returns every model revision that belongs to the model group, ordered by revision.
Parameters
idstringrequired
Unique model group identifier.
Returns
idstringUnique model identifier.
modelGroupIdstringIdentifier of the model group this model belongs to.
namestringStable model identifier slug.
displayNamestringHuman-readable display name.
notesstring | nullNotes from the model's publisher. Returned only to members of the owning organisation; null otherwise.
descriptionstringShort human-readable description of the model.
revisionnumberModel revision number. Increments each time a new revision is published into the same model group.
dockerImagestringContainer image reference for the model. Returned only to members of the owning organisation; an empty string otherwise.
createdAtstringISO 8601 timestamp at which the model was created.
runMode"AUTOMATIC" | "ON_DEMAND"How the model is triggered. AUTOMATIC runs on a schedule; ON_DEMAND only when explicitly invoked.
horizonTimeHorizonThe model's forecast time horizon.
modelMetadataobjectFree-form metadata about the model. Shape varies per model.
outputVariablesOutputVariable[]Output variables produced by the model, including chart display configuration.
outputSpecificationColumnSpecification[]deprecated
Deprecated. Always returned as an empty array. Use
outputVariables instead.inputsModelInputSpecification[] | nullInputs the model accepts, if any.
datasetsModelDatasetSpecification[] | nullDatasets bound to the model, if any.
archivedbooleanWhether the model is archived. Archived models are excluded from
GET /v1/model unless archived=true.enabledbooleanWhether the model is enabled. When enabled, the model runs according to its configuration; when disabled, it does not run.
tagsstring[]Tags associated with the model.
sensitivitiesSensitivitySpecification[]Sensitivity configurations available for the model.
inputAggregationsInputAggregation[]Input aggregations available for the model.
outputFileFormat"json" | "csv" | "parquet"Format the model's run output is delivered in.
displayTimezonestringIANA timezone identifier used to display forecast results.
forecastVariableForecastVariableSpecificationVariable being forecast by the model.
isOwnerbooleanTrue when the requesting user's organisation owns the model.
Error codes
401Unauthorized
Missing or invalid bearer token.
404Not Found
Model group not found.
GET /v1/model-group/:id/models
curl "https://api.v2.pd4castr.com.au/v1/model-group/a1b2c3d4-e5f6-7890-abcd-ef1234567890/models" \
-H "Authorization: Bearer $PD4CASTR_TOKEN"Response
[
{
"id": "d2f4e0c0-1c1a-4f7c-9b6c-3a4f2c1c1f8d",
"modelGroupId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "demand-forecast-r3",
"displayName": "Demand Forecast (30min)",
"notes": "Retraining cadence: weekly.",
"description": "Day-ahead electricity demand forecast for NEM regions.",
"revision": 3,
"dockerImage": "registry.pd4castr.com.au/acme/demand-forecast:r3",
"createdAt": "2026-01-09T10:00:00.000Z",
"runMode": "AUTOMATIC",
"horizon": {
"name": "Day Ahead",
"shortName": "DA",
"key": "day_ahead"
},
"modelMetadata": {
"resolution": "30min"
},
"outputVariables": [
{
"name": "price",
"key": "price",
"type": "float",
"seriesKey": false,
"colours": []
}
],
"outputSpecification": [],
"inputs": [
{
"id": "b2f4e0c0-1c1a-4f7c-9b6c-3a4f2c1c1f8d",
"key": "demand_forecast"
}
],
"datasets": [
{
"id": "c4e1a0d2-9b6c-4f7c-8a1e-2f3c4d5e6f70",
"key": "historical_demand",
"source": "e6f3c2b1-7a5d-4c9e-8b2f-1d3e4f5a6b7c",
"fileFormat": "parquet"
}
],
"archived": false,
"enabled": true,
"tags": [
"demand",
"nem"
],
"sensitivities": [
{
"id": "7c1d6c9f-0a8e-4f7c-9b6c-3a4f2c1c1f8d",
"name": "High demand",
"key": "high_demand"
}
],
"inputAggregations": [
{
"id": "9a2c1e7b-4d3f-4a8c-b1e2-5f6a7c8d9e0f",
"name": "Solar & Wind",
"key": "solar-wind"
}
],
"outputFileFormat": "json",
"displayTimezone": "Australia/Sydney",
"forecastVariable": {
"name": "Price",
"shortName": "price",
"key": "price"
},
"isOwner": true
},
{
"id": "a3b5c6d7-2c1a-4f7c-9b6c-3a4f2c1c1f8d",
"modelGroupId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "demand-forecast-r2",
"displayName": "Demand Forecast (30min)",
"notes": "Retraining cadence: weekly.",
"description": "Day-ahead electricity demand forecast for NEM regions.",
"revision": 2,
"dockerImage": "registry.pd4castr.com.au/acme/demand-forecast:r2",
"createdAt": "2025-11-04T10:00:00.000Z",
"runMode": "AUTOMATIC",
"horizon": {
"name": "Day Ahead",
"shortName": "DA",
"key": "day_ahead"
},
"modelMetadata": {
"resolution": "30min"
},
"outputVariables": [
{
"name": "price",
"key": "price",
"type": "float",
"seriesKey": false,
"colours": []
}
],
"outputSpecification": [],
"inputs": [
{
"id": "b2f4e0c0-1c1a-4f7c-9b6c-3a4f2c1c1f8d",
"key": "demand_forecast"
}
],
"datasets": [
{
"id": "c4e1a0d2-9b6c-4f7c-8a1e-2f3c4d5e6f70",
"key": "historical_demand",
"source": "e6f3c2b1-7a5d-4c9e-8b2f-1d3e4f5a6b7c",
"fileFormat": "parquet"
}
],
"archived": false,
"enabled": true,
"tags": [
"demand",
"nem"
],
"sensitivities": [
{
"id": "7c1d6c9f-0a8e-4f7c-9b6c-3a4f2c1c1f8d",
"name": "High demand",
"key": "high_demand"
}
],
"inputAggregations": [
{
"id": "9a2c1e7b-4d3f-4a8c-b1e2-5f6a7c8d9e0f",
"name": "Solar & Wind",
"key": "solar-wind"
}
],
"outputFileFormat": "json",
"displayTimezone": "Australia/Sydney",
"forecastVariable": {
"name": "Price",
"shortName": "price",
"key": "price"
},
"isOwner": true
}
]Get a model group
get/v1/model-group/:id
Returns a single model group by its unique id.
Parameters
idstringrequired
Unique model group identifier.
Returns
idstringUnique model group identifier.
namestringHuman-readable name for the model group.
latestRevisionnumberHighest revision number currently published in the group.
publicbooleanWhether the model group is publicly accessible. Private groups are visible only to the owning organisation.
createdAtstringISO 8601 timestamp at which the model group was created.
timeHorizonTimeHorizonSummaryThe time horizon this model group belongs to.
modelsModelGroupModelSummary[]Non-archived model revisions in this group, sorted newest first.
Error codes
401Unauthorized
Missing or invalid bearer token.
404Not Found
No model group exists with the given id.
GET /v1/model-group/:id
curl "https://api.v2.pd4castr.com.au/v1/model-group/a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer $PD4CASTR_TOKEN"Response
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Demand Forecast",
"latestRevision": 3,
"public": false,
"createdAt": "2025-08-01T10:00:00.000Z",
"timeHorizon": {
"name": "Day Ahead",
"shortName": "DA",
"key": "day_ahead"
},
"models": [
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"revision": 3,
"createdAt": "2026-05-01T08:00:00.000Z"
},
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"revision": 2,
"createdAt": "2026-03-15T08:00:00.000Z"
},
{
"id": "d4e5f6a7-b8c9-0123-def0-234567890123",
"revision": 1,
"createdAt": "2026-01-20T08:00:00.000Z"
}
]
}