Get reports
Returns historical Commander reporting data as rows: the same figures as the Reports page and its CSV download.
With group_by=time (the default) it returns a timeseries, one row per tick_size bucket; other group_by values return one row per combination of the requested breakdowns. A missing value is null, never 0. Requires a Commander Pro subscription (403 otherwise).
**Measures and compatible group_by values**
| Measure | Unit | Allowed group_by |
| --- | --- | --- |
| hashrate | H/s (Sol/s for equihash) | time, site, model, firmware, subaccount, client_id, miner_id |
| power_consumption | W | time, site, model, firmware, subaccount, client_id, miner_id |
| efficiency | J/TH | time, site, model, firmware, subaccount, client_id, miner_id |
| temperature | °C | time, site, model, firmware, subaccount, client_id, miner_id |
| energy_consumption | kWh | time, site, model, firmware, subaccount, client_id, miner_id |
| site_load | 0–1 ratio | time, site |
| online_miners | mean concurrent count | time, site, model, firmware, subaccount, client_id |
| hashing_miners | mean concurrent count | time, site, model, firmware, subaccount, client_id |
| failing_miners | mean concurrent count | time, site, model, firmware, subaccount, client_id |
| new_miners | count | time, site, model, firmware, client_id |
| new_errors | count | time, site, model, firmware, client_id |
| unresolved_errors | count | time, site, model, firmware, client_id |
| bulk_actions | count | time, site |
| triggers_executed | count | time, site |
| iminer_optimizations | count | time, site |
| tickets_opened | count | time, site |
| tickets_closed | count | time, site |
**Rules**
- miner_id can only be combined with time and/or site, and requires a period of 31 days or less.
- efficiency is sha256 only.
- tick_size is required when group_by includes time.
- At most 5000 time buckets per request: 1h covers about 208 days, 1d covers about 13.7 years.
- start_date must be before today (UTC), and end_date is clamped to the start of today: reports only cover complete days.
- At most 100,000 rows in total. Narrow the period, the breakdowns or site_ids if you hit this.
A request that breaks any rule, or names an unknown parameter or value, is rejected with 400 listing the violations found. A malformed or missing parameter is reported first, before the rules that combine parameters are checked.
**Examples**
Daily fleet timeseries:
GET /v2/commander/reports?start_date=2026-09-01&end_date=2026-09-28&measures=hashrate,power_consumption,hashing_miners&group_by=time&tick_size=1d
Energy by site by month:
GET /v2/commander/reports?start_date=2026-01-01&end_date=2026-06-30&measures=energy_consumption&group_by=time,site&tick_size=1M
Per-miner hashrate over a week:
GET /v2/commander/reports?site_ids=618ee7c5-bf5d-45b8-b845-b423cf5123d0&start_date=2026-09-21&end_date=2026-09-27&measures=hashrate,temperature&group_by=miner_id
Action counts by site:
GET /v2/commander/reports?start_date=2026-09-01&end_date=2026-09-28&measures=bulk_actions,triggers_executed,iminer_optimizations&group_by=site
Authorization
LuxorAPIKey Use your API key here.
In: header
Query Parameters
Comma-separated site UUIDs. Omit to report on every site in the workspace.
First day of the period (YYYY-MM-DD, UTC, inclusive). Must be before today: reports only cover complete days.
dateLast day of the period (YYYY-MM-DD, UTC, inclusive). Clamped to the start of today (UTC): the current, partial day is never returned.
dateComma-separated measures, at least one. hashrate: Mean hashrate in H/s (Sol/s for equihash); power_consumption: Mean power consumption in watts; efficiency: Mean efficiency in J/TH, sha256 only; temperature: Mean temperature in °C; energy_consumption: Energy consumed in kWh; site_load: Mean power consumption as a ratio of the site's configured max load (0–1); online_miners: Mean number of concurrently online miners; hashing_miners: Mean number of concurrently hashing miners; failing_miners: Mean number of concurrently failing miners; new_miners: Number of newly discovered miners; new_errors: Number of new errors; unresolved_errors: Number of unresolved errors; bulk_actions: Number of bulk actions executed; triggers_executed: Number of automation rule executions; iminer_optimizations: Number of Intelligent Miner optimizations; tickets_opened: Number of tickets opened; tickets_closed: Number of tickets closed. See the endpoint description for which group_by values each measure allows.
Comma-separated breakdowns. time: One row per tick_size bucket (date_time); site: Per site (site_id); model: Per miner model (model); firmware: Per firmware (firmware); subaccount: Per pool subaccount (subaccount); client_id: Per client ID (client_id); miner_id: Per miner (miner_id). miner_id only combines with time and site, and needs a period of 31 days or less.
"time"Bucket size of the time breakdown; required when group_by includes time, ignored otherwise. At most 5000 buckets per request.
Value in
- "1h"
- "1d"
- "1w"
- "1M"
Hashing algorithm whose hashrate, efficiency, miner counts, errors, actions and tickets the report reads; sha256 covers every miner that is not Equihash. Power, energy, temperature and site load are whole-fleet regardless.
"sha256"Value in
- "sha256"
- "equihash"
Page to return, starting at 1.
1 <= value <= 1000001Rows per page. Defaults to 1000, at most 5000.
1 <= value <= 50001000Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v2/commander/reports?start_date=2026-09-01&end_date=2026-09-28&measures=hashrate%2Cenergy_consumption"{ "start_date": "2026-09-01", "end_date": "2026-09-28", "tick_size": "1d", "algorithm": "sha256", "group_by": [ "time", "site" ], "measures": [ "hashrate", "energy_consumption" ], "actions_truncated": false, "rows": [ { "date_time": "2026-09-01T00:00:00.000Z", "site_id": "618ee7c5-bf5d-45b8-b845-b423cf5123d0", "miner_id": "10011156160260362486", "model": "Antminer S21", "firmware": "luxos", "subaccount": "my_subaccount", "client_id": "client-a", "hashrate": 110000000000000, "power_consumption": 62613, "efficiency": 20.3, "temperature": 51.6, "energy_consumption": 1532.5, "site_load": 0.65, "online_miners": 23, "hashing_miners": 22.5, "failing_miners": 2, "new_miners": 0, "new_errors": 6, "unresolved_errors": 7, "bulk_actions": 5, "triggers_executed": 0, "iminer_optimizations": 58, "tickets_opened": 1, "tickets_closed": 0 } ], "pagination": { "page_number": 1, "page_size": 1, "item_count": 0, "previous_page_url": null, "next_page_url": null }}{ "statusCode": 400, "code": "FST_ERR_VALIDATION", "error": "Bad Request", "message": "body/end_date Required"}{ "statusCode": 403, "code": "7", "error": "Forbidden", "message": "[permission_denied] site_id does not belong to this workspace"}{ "statusCode": 503, "code": "UNAVAILABLE", "error": "Service Unavailable", "message": "Something went wrong. Share this error code with support for assistance: 4bf92f3577b34da6a3ce929d0e0e4736"}