/developers
Developer docsAtom Files ↗
← API referenceUsage & billing · API access unavailable
API REFERENCE / USAGE

GET /v1/usage/events

Page through metering records for reconciliation. Each event has a stable ID, timestamp, meter, quantity, and related transfer or operation ID. Do not expose private peer addresses, Mac paths, or provider credentials.

Request fields

LocationFieldTypeRequiredDescription
HeaderAuthorizationstringYesCredential scoped to the authorized resource.
Queryfromstring (date)NoPeriod start.
Querytostring (date)NoPeriod end.
QuerymeterstringNoMeter filter.
QuerycursorstringNoOpaque pagination cursor.

Request example

Example request
GET /v1/usage/events?meter=relay_egress_bytes
Authorization: Bearer <scoped token>

HTTP status codes

StatusMeaning
200 OKSuccess response shown below.
400 Bad RequestInvalid period, meter, or cursor.
401 UnauthorizedMissing, expired, or invalid credential.
403 ForbiddenCredential is valid but lacks the required scope or role.
429 Too Many RequestsRate limit reached; honor Retry-After when provided.
503 Service UnavailableService temporarily unavailable; retry safely.

Response fields

FieldTypeExample
itemsobject[][1 shown]
items[].idstringusage_123
items[].meterstringrelay_egress_bytes
items[].quantityinteger16777216
items[].unitstringbyte
items[].operation_idstringop_456
items[].occurred_atstring (date-time)2026-10-20T18:00:00Z
next_cursorstring | nullnull
observed_throughstring (date-time)2026-10-20T18:00:00Z

Response example

Example response
200 OK
Content-Type: application/json

{
  "items": [
    {
      "id": "usage_123",
      "meter": "relay_egress_bytes",
      "quantity": 16777216,
      "unit": "byte",
      "operation_id": "op_456",
      "occurred_at": "2026-10-20T18:00:00Z"
    }
  ],
  "next_cursor": null,
  "observed_through": "2026-10-20T18:00:00Z"
}

How it works

Filtersfrom, to, meter, and opaque cursor.
CorrectionsRetain auditability if an event is adjusted; do not rewrite history invisibly.
FreshnessReturn observed_through because aggregates may lag activity.

Retention, exact event schema, and meter IDs remain design decisions.