LoguDocs
Open Logu

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#

NameInTypeRequiredDescription
idpathstringrequiredThe metric's id (met_…). · e.g. met_01K7DQ4A6C8E0G2J4L6N8Q0S2U
rangequery"24h" | "7d" | "30d" | "90d" | "1y"optionalThe window, ending now: 24h, 7d, 30d, 90d, 1y. · e.g. 30d
Logu-WorkspaceheaderstringoptionalHumans 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
FieldTypeRequiredNotes
metricIdstringrequired
range"24h" | "7d" | "30d" | "90d" | "1y"required
fromstringrequireddate-time
tostringrequireddate-time
bucketSecondsintegerrequired
source"analytics" | "recent"required
bucketsobject[]required
buckets[].atstringrequireddate-time
buckets[].valuenumberrequired
buckets[].minnumberrequired
buckets[].maxnumberrequired
buckets[].countnumberrequired
summaryobject | nullrequired
summary.minnumberrequired
summary.maxnumberrequired
summary.avgnumberrequired
summary.firstnumberrequired
summary.lastnumberrequired
summary.changenumber | nullrequired
summary.countnumberrequired
previousobject | nullrequired
previous.minnumberrequired
previous.maxnumberrequired
previous.avgnumberrequired
previous.firstnumberrequired
previous.lastnumberrequired
previous.changenumber | nullrequired
previous.countnumberrequired

Errors#

Every error is {"error":{"code","message","hint","docUrl","requestId"}}: branch on code. See Errors.

StatusCodeMeaning
400bad_requestThe request is malformed or a field is invalid (see issues).
401unauthorizedNo credentials, or the API key or session is invalid or revoked.
403forbiddenThe caller is authenticated but may not do this (wrong role, or an API key on a human-only endpoint).
404not_foundNo such route, or the resource doesn't exist in your workspace.
500internal_errorSomething went wrong on Logu's side.