Legacy Export API
This page describes the export links that existed before the Metric Export. They are legacy: they are served unchanged, with the same parameters, metric ids and columns, and they are no longer extended.
Existing Workbooks and Scripts Keep Working
The legacy links have no removal date. Nothing you built on them has to change. For new work use the Metric Export API; the migration guide maps every legacy id to its metric.
Routes
All paths follow https://service.mirox.io/api. An API token of the group Metric Export reads all of them.
| Route | Answer | Status |
|---|---|---|
GET /v1/export/metrics/template/{template_uid} | CSV | legacy — Template export |
GET /v1/export/metrics/query | CSV | legacy — Metric-id export |
GET /v1/export/raw/query | CSV | legacy — Raw time series export |
GET /v1/export/raw/component/query | CSV | legacy — Component raw export |
GET /v1/metrics/raw | JSON | legacy — the list of raw metric ids |
GET /v1/metrics/components | JSON | legacy — the list of component metric ids per component type |
GET /v1/export/report/{park_uid}/info | JSON | current — Plant information |
GET /v1/export/report/{park_uid}/events.csv | CSV | current — Events |
GET /v1/export/report/{park_uid}/data/template/{template_uid}/metrics.csv | CSV | deprecated |
POST /v1/export/metrics/query, POST /v1/export/raw/query, POST /v1/export/raw/component/query | JSON | deprecated |
GET /v1/export/template/metrics | JSON | deprecated |
What Is Deprecated
A deprecated route still answers, but it may be removed in a later release, and the interactive API reference marks it as deprecated.
- The single-plant template route under
/v1/export/report/{park_uid}/data/template/…. Use the template export instead; it takes the same templates. - The three
POSTroutes that answered the exports as JSON. The Metric Export API answers JSON withformat=json. GET /v1/export/template/metrics, the list of legacy metric ids for the template editor. The metric catalog replaces it.
Everything else on this page is legacy but not deprecated.
Several Plants: Merge or Split
All four exports accept comma-separated park and portfolio parameters. When both are given, the plants of each portfolio are added to the plants listed.
multi_park_agg decides how several plants are represented. It is available on the template, metric-id and raw export; the component export has multi_component_agg instead.
| Value | Result |
|---|---|
merge (default) | One column per metric. The plants are combined with the operator that metric declares — energy and power are summed, voltages, temperatures and ratios averaged. |
split | One column per plant per metric, named <plant name> - <metric name>. All of a plant's metrics stand together, plants ordered by name. |
With a single plant the two are identical and the parameter is ignored.
Template Export
GET /v1/export/metrics/template/{template_uid}
| Parameter | Purpose |
|---|---|
park / portfolio | Comma-separated UIDs that scope the export |
resolution | daily, weekly, monthly, quarterly or yearly; default monthly |
year + quarter / month / week / day | The calendar period (day requires month); year must be 2020 or later |
full_week | Weekly resolution only: extend the range to whole ISO weeks |
multi_park_agg | merge (default) or split |
separator_csv / separator_decimal / datetime_format / language | CSV formatting and translated column names |
curl "https://service.mirox.io/api/v1/export/metrics/template/ABCD12340001?park=ABC123DEF456&resolution=monthly" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Legacy System Templates
| Template | UID | Successor |
|---|---|---|
| Standard Export v1 | CAFE0000CAFE | CAFE1000CAFE |
| Extended Export v1 | CAFE0001CAFE | CAFE1001CAFE |
| Extended Export v2 | CAFE0002CAFE | CAFE1002CAFE |
| Energy Availability Export | CAFE0003CAFE | CAFE1003CAFE |
| Report Technical v1 | ABCD12340001 | ABCD12340002 |
In the app, these five are replaced by their successors on the Templates tab. Their links keep answering as before.
Report Technical v1 (ABCD12340001) holds:
Time Series Metrics:
- Energy Production (kWh) -
energy_grid_daily - Energy Radiation Total (kWh) -
energy_radiation_daily - GTI Sensor (kWh/m²) -
gti_sensor_daily - GTI Weather (kWh/m²) -
gti_weather_daily - Sunhours (h) -
sunhours_daily - Availability Inverter (%) -
availability_inverter - Availability Energy (%) -
availability_energy - Availability Data (%) -
availability_data - Availability Sensor (%) -
availability_sensor - Energy Shutdown by Grid (kWh) -
energy_shutdown_grid_daily - Energy Shutdown by External (kWh) -
energy_shutdown_external_daily
Report Configuration Metrics:
- Energy Report (kWh) -
energy_report - GTI Report Incident (kWh/m²) -
gti_report - GTI Report Effective (kWh/m²) -
gti_report_eff - PR Report Target (%) -
pr_report
Calculated Metrics (using MiroxQL):
- Irradiance Analysis (actual, weather usage, sensor-weather difference)
- Production Targets (weather-based, sensor-based, actual, corrected)
- Performance Ratios (weather, sensor, actual, corrected)
- Specific Yield (Wh/W)
- Loss Analysis (non-compensable losses)
Templates of the Metric Export on This Route
The template export also accepts the id of a template of the Metric Export, for example CAFE1000CAFE. It then answers the Metric Export of that template: the calendar parameters select the time range, resolution selects the step, and the file follows the conventions of the Metric Export. It has no "Days in Month" or "Calendar Week" column, and errors are answered with a code. Without resolution, the step of the template applies.
The deprecated single-plant route does not accept such a template and answers 400 with the link to use.
CSV Output
The files carry a header row with metric names and units. The structure follows the resolution:
- Daily — one row per day.
- Weekly — a "Date" column in ISO week format and a "Calendar Week" column with the week number.
- Monthly — a "Days in Month" column for normalization.
Values are aggregated per day and then rolled up: energy and hours are summed, everything else is averaged. A day is a UTC day. A missing value is written as 0.
Metric-Id Export
GET /v1/export/metrics/query exports a set of legacy metric ids without a template, with the period parameters and the CSV format of the template export.
| Parameter | Purpose |
|---|---|
metrics | Comma-separated metric ids (1-20), e.g. energy_grid_daily,energy_ac_daily |
park / portfolio | Comma-separated UIDs that scope the export |
year + quarter / month / week / day | The calendar period (day requires month) |
resolution | daily, weekly, monthly, quarterly or yearly |
full_week | Weekly resolution only: extend the range to whole ISO weeks |
multi_park_agg | merge (default) or split |
separator_csv / separator_decimal / datetime_format / language | CSV formatting and translated column names |
Raw Time Series Export
GET /v1/export/raw/query returns raw time series at plant level. GET /v1/metrics/raw lists every raw id with its name, unit, category and the operator it applies across series (sum, avg, min or max).
| Parameter | Purpose |
|---|---|
metrics | Comma-separated raw metric ids (1-20), e.g. raw_grid_energy_total,raw_power_ac |
start / end / step | Any ISO 8601 range at any step (5m, 15m, 1h, 1d) |
value | plain (as recorded), start_at_zero (first value becomes 0) or use_delta (change per interval instead of the running total). One choice for all metrics. |
multi_park_agg | With more than one plant: merge or split |
park / portfolio | Comma-separated UIDs that scope the export |
separator_csv / separator_decimal / language | CSV formatting and translated column names |
curl --compressed "https://service.mirox.io/api/v1/export/raw/query?metrics=raw_grid_energy_total&park=ABC123DEF456&start=2026-07-01T00:00:00Z&end=2026-07-08T00:00:00Z&step=15m&value=use_delta" \
-H "Authorization: Bearer YOUR_API_TOKEN" -o production_week.csv
Date;Grid Production (Wh)
2026-07-01 00:00;0,00
2026-07-01 06:15;1250,50
...
Energy is in Wh, and the time is in UTC.
Component Raw Export
GET /v1/export/raw/component/query exports the raw time series of individual components — inverters, combiner boxes or single strings — of exactly one plant. Component metric ids carry the prefix comp_raw_ and are listed, per component type, at GET /v1/metrics/components.
| Parameter | Purpose |
|---|---|
metrics | Comma-separated component raw metric ids (1-20), e.g. comp_raw_inverter_energy_ac — every id must match the chosen component_type |
park | Exactly one plant UID |
component_type | inverter, gak, or string |
components | Optional comma-separated component ids — exactly those, in order |
page / limit | Without components: page through all components of the type (up to 50 per page) |
multi_component_agg | split (default — one column per component per metric, named <component name> - <metric name>) or merge (the sum or average over the components) |
start / end / step / value / separators / language | As for the raw time series export |
Limits
Both raw exports refuse anything larger with 400:
| Limit | Value |
|---|---|
| Metric ids per request | 20 |
| Data points per series, plant-level export | 180,000 — 5 years at 15-minute resolution |
| Total samples, plant-level export | 1,800,000 (series × data points per series) |
| Data points per series, component-level export | 36,000 — a full year at 15-minute resolution |
Series in a plant split export | 50 (metrics × plants) |
| Explicitly selected components | 50 |
Columns in a component split export | 100 (metrics × components) |
Answers beyond about 1 MB are compressed when the request carries Accept-Encoding: gzip.
Legacy Metric Ids
The daily metrics of the template and metric-id export. Each can be aggregated to weekly, monthly, quarterly or yearly values. The formula column shows in simplified form how a value is derived. The metric that answers for each id in the Metric Export is in the id mapping.
Energy Production Metrics
| Metric ID | Name | Unit | Description | Formula |
|---|---|---|---|---|
energy_grid_daily | Energy Production | kWh | Daily energy fed into the grid | sum(delta(grid_energy_total)) per component |
energy_ac_daily | AC Production | kWh | Daily AC energy production | sum(delta(ac_energy_total)) per component |
energy_inverter_daily | Inverter Production | kWh | Daily energy production from inverters | sum(delta(inverter_ac_energy_total)) per inverter |
energy_radiation_daily | Energy Radiation Total | kWh | Daily total energy radiation | sum(delta(radiation_energy_total)) per component |
Shutdown and Loss Metrics
| Metric ID | Name | Unit | Description | Formula |
|---|---|---|---|---|
energy_shutdown_grid_daily | Energy Shutdown by Grid | kWh | Daily energy loss due to grid constraints | sum(delta(energy_loss_total)) where type='grid', per component |
energy_shutdown_external_daily | Energy Shutdown by External | kWh | Daily energy loss due to external control | sum(delta(energy_loss_total)) where type='external', per component |
Irradiance Metrics
| Metric ID | Name | Unit | Description | Formula |
|---|---|---|---|---|
gti_sensor_daily | GTI Sensor | kWh/m² | Daily global tilted irradiation from sensors | avg(delta(irradiation_total)) where position='module-level' or fallback |
gti_weather_daily | GTI Weather | kWh/m² | Daily global tilted irradiation from weather forecast | sum(weather_gti) / 4, sampling: 15min intervals |
gti_report | GTI Report | kWh/m² | GTI target from the plant configuration | value from the plant configuration |
Weather Metrics
| Metric ID | Name | Unit | Description | Formula |
|---|---|---|---|---|
solar_radiation_daily | Solar Radiation | Wh | Average daily solar radiation | avg(solar_radiation) over 24h |
sunhours_daily | Sunhours | h | Daily hours of sunshine | count(weather_gti > 0) / 4, sampling: 15min |
Environmental Metrics
| Metric ID | Name | Unit | Description | Formula |
|---|---|---|---|---|
temperature_ambient_avg | Ambient Temperature | °C | Average daily ambient temperature | avg(ambient_temperature) over 24h |
temperature_module_avg | Module Temperature | °C | Average daily module temperature | avg(module_temperature) over 24h |
wind_speed_avg | Wind Speed | m/s | Average daily wind speed | avg(wind_speed) over 24h |
humidity_avg | Humidity | % | Average daily humidity | avg(humidity) over 24h |
Availability Metrics
| Metric ID | Name | Unit | Description | Formula |
|---|---|---|---|---|
availability_inverter | Availability Inverter | % | Inverter availability based on power output and GTI conditions | avg(1 - count(inverter_power ≤ 0 AND weather_gti > 100)), sampling: 15min |
availability_technical | Availability Technical | % | Technical availability of the system | avg(sum(scraper_health == 1) / count(scraper_health)) per source, sampling: 15min |
availability_data | Availability Data | % | Data availability from the plant | 1 - avg(count(grid_energy_total)) where absent, sampling: 15min |
availability_sensor | Availability Sensor | % | Sensor availability | 1 - avg(count(solar_radiation)) where absent, sampling: 15min |
availability_energy | Availability Energy | % | Energy-based availability approximation | 1 - (sum(energy_loss_total) / (sum(grid_energy_total) + sum(energy_loss_total))) |
Battery Metrics
| Metric ID | Name | Unit | Description | Formula |
|---|---|---|---|---|
battery_energy_in_daily | Battery Energy Charged | kWh | Daily DC energy charged into the battery | sum(delta(battery_box_energy_dc_in_total)) per box |
battery_energy_out_daily | Battery Energy Discharged | kWh | Daily DC energy discharged from the battery | sum(delta(battery_box_energy_dc_out_total)) per box |
battery_soc_avg | Battery State of Charge | % | Average daily box-level state of charge | avg(battery_box_soc) over 24h |
battery_soh_avg | Battery State of Health | % | Average daily box-level state of health | avg(battery_box_soh) over 24h |
battery_energy_charged_avg | Battery Stored Energy | kWh | Average daily energy currently stored | avg(sum(battery_box_energy_charged)) over 24h |
temperature_battery_avg | Battery Temperature | °C | Average daily box-level battery temperature | avg(battery_box_temperature) over 24h |
Report Metrics
| Metric ID | Name | Unit | Description | Formula |
|---|---|---|---|---|
energy_report | Energy Report | kWh | Energy target from the plant configuration | value from the plant configuration |
The raw and component ids are listed by GET /v1/metrics/raw and GET /v1/metrics/components, and in the id mapping.
Known Behaviour That Stays As It Is
The numbers of the legacy exports are kept as they are, so that a workbook shows tomorrow what it showed yesterday. This includes three readings the Metric Export does differently:
| Legacy id or option | What the legacy export does | In the Metric Export |
|---|---|---|
raw_irradiation_energy_total, irradiation_energy_daily | Adds up the irradiation of all sensors of a plant. A plant with three sensors shows about three times the irradiation. | sensor.irradiation gives one column per sensor; plant.rad_pyranometer gives the plant value. |
raw_solar_radiation | Averages all irradiance sensors of a plant, horizontal and module-plane sensors together. | sensor.irradiance gives one column per sensor. |
multi_component_agg=merge with status codes or alarm states | Adds the codes of the components up. | Status codes and states are exported per component. |
Corrections
Two groups of columns of the raw time series export were empty and now carry values. A workbook that reads them shows numbers where it showed empty cells.
| Columns | What changed |
|---|---|
raw_availability_technical, raw_availability_data, raw_availability_sensor, raw_availability_network, raw_availability_inverter, raw_availability_grid | The columns carry values. Each row is the availability over a period as long as the exported range, ending at that row. The last row is therefore the availability of the exported range, the same figure the availability tiles show; earlier rows reach back before the start of the range. |
raw_curtailment_grid_nacelle, raw_curtailment_grid_windref, raw_curtailment_grid_windfixed, the same with marketer, and each with _energy | The wind curtailment columns carry the settled curtailment of wind plants. |
Plant Information
GET /v1/export/report/{park_uid}/info
Answers the core data of a plant as JSON: name, type and description, location and time zone, peak power, organization and portfolio, address and commissioning dates. An example is in the External Report Generator.
Events
GET /v1/export/report/{park_uid}/events.csv
| Parameter | Purpose |
|---|---|
year, quarter, month | The period. Without any of them, the export covers the current year. |
separator_csv / separator_decimal / datetime_format | CSV formatting; defaults ;, , and %Y-%m-%d %H:%M |
The columns are Event ID, Start Date, End Date, Duration (hours), Type, Creator, Description and Priority. The end date of an event that is still open is Ongoing. A priority of 1000 or more marks an important event.
Related Features
- Metric Export API — the current export
- Migrating to the Metric Export — what changes, and the id mapping
- MiroxQL Formulas — the formula API behind the calculated columns
- External Report Generator — plant information and events in a Python example
- API Tokens — the Metric Export token