Metrics · getMetricHistory
A metric's history over a range
GET /v1/metrics/{id}/history
The metric over range (24h, 7d, 30d, 90d or 1y, ending now), grouped in buckets (15 minutes for 24h, 1 hour for 7d, 6 hours for 30d, 1 day for 90d, 1 week for 1y): each bucket's average, min, max and number of reports, and the range's min, max, average and change from the first bucket to the last; previous summarizes the period of the same length just before it (null when that has no reports), to compare with. source: "analytics" is the long-term history (every live report, kept by Analytics Engine for about three months); source: "recent" means only the last reports kept in Logu, when the server has no long-term history set up or couldn't reach it, and always for test metrics. Answers are reused for up to a minute.
- Who may call it
- humans: every member
- Server
- https://api.logu.dev
Parameters#
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | required | The metric's id (met_…). · e.g. met_01K7DQ4A6C8E0G2J4L6N8Q0S2U |
range | query | "24h" | "7d" | "30d" | "90d" | "1y" | optional | The window, ending now: 24h, 7d, 30d, 90d, 1y. · e.g. 30d |
Logu-Workspace | header | string | optional | Humans only: the workspace to act in (default: your personal workspace). Agents always act in their API key's workspace. · e.g. wsp_01K7D7Y8Z0B2D4F6H8K0M2P4R6 |
Example#
curl -s "https://api.logu.dev/v1/metrics/met_01K7DQ4A6C8E0G2J4L6N8Q0S2U/history" \
-H "Authorization: Bearer $LOGU_SESSION_TOKEN"
Responses#
200
The metric's history.
{
"metricId": "met_01K7DQ4A6C8E0G2J4L6N8Q0S2U",
"range": "7d",
"from": "2026-10-06T14:00:00.000Z",
"to": "2026-10-13T14:00:00.000Z",
"bucketSeconds": 3600,
"source": "analytics",
"buckets": [
{
"at": "2026-10-12T13:00:00.000Z",
"value": 37,
"min": 35,
"max": 39,
"count": 4
},
{
"at": "2026-10-13T13:00:00.000Z",
"value": 41.5,
"min": 41,
"max": 42,
"count": 2
}
],
"summary": {
"min": 35,
"max": 42,
"avg": 38.5,
"first": 37,
"last": 41.5,
"change": 12.16,
"count": 6
},
"previous": {
"min": 30,
"max": 38,
"avg": 34,
"first": 31,
"last": 36,
"change": 16.13,
"count": 9
}
}
Response fields
| Field | Type | Required | Notes |
|---|---|---|---|
metricId | string | required | |
range | "24h" | "7d" | "30d" | "90d" | "1y" | required | |
from | string | required | date-time |
to | string | required | date-time |
bucketSeconds | integer | required | |
source | "analytics" | "recent" | required | |
buckets | object[] | required | |
buckets[].at | string | required | date-time |
buckets[].value | number | required | |
buckets[].min | number | required | |
buckets[].max | number | required | |
buckets[].count | number | required | |
summary | object | null | required | |
summary.min | number | required | |
summary.max | number | required | |
summary.avg | number | required | |
summary.first | number | required | |
summary.last | number | required | |
summary.change | number | null | required | |
summary.count | number | required | |
previous | object | null | required | |
previous.min | number | required | |
previous.max | number | required | |
previous.avg | number | required | |
previous.first | number | required | |
previous.last | number | required | |
previous.change | number | null | required | |
previous.count | number | required |
Errors#
Every error is {"error":{"code","message","hint","docUrl","requestId"}}: branch on code. See Errors.
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_request | The request is malformed or a field is invalid (see issues). |
| 401 | unauthorized | No credentials, or the API key or session is invalid or revoked. |
| 403 | forbidden | The caller is authenticated but may not do this (wrong role, or an API key on a human-only endpoint). |
| 404 | not_found | No such route, or the resource doesn't exist in your workspace. |
| 500 | internal_error | Something went wrong on Logu's side. |