Usage

List usage records

Returns raw voice, SMS, and data usage records for your organization whose timeStarted falls between startDate and endDate, as one feed — you do not need to know that we store calls and data separately. Records come in the order we stored or last corrected them, not by timeStarted.

Walk a period with the opaque cursor: send the first request with a startDate/endDate, then keep passing the nextCursor from each response until hasMore is false. Filter to one subscriber with userId.

Records are granular enough to bill on. Each arrives once the network reports it, from minutes to days after the usage depending on the market, and keeps its original timeStarted; a record we correct later comes round again with the same id. To poll incrementally, keep the cursor you sent for the last page and send it again, with the same window, on the next poll: you receive everything stored or corrected since, including records whose timeStarted is earlier than any you have seen. De-duplicate on id, keeping the latest copy. Records written in the last few minutes are held back until they settle. Expect usage from the last 24–48 hours to keep changing as late records arrive and are rated; the cursor delivers those updates.

Polling budget. Each API key allows 1000 requests per 24 hours, shared across every endpoint. Walk a whole organisation with the default page size rather than polling per subscriber — a request over the budget returns 429.

get/v1/usage

Request

  • Base URL
    https://api.telgea.com
  • Auth
    API key in header x-api-key

Query parameters

startDatestring date required

Inclusive start of the usage window (YYYY-MM-DD, UTC).

Example:2026-09-01
endDatestring date required

Inclusive end of the usage window (YYYY-MM-DD, UTC). The window may span at most 31 days.

Example:2026-09-30
pageSizeinteger

Records per page (max 100)

Example:50
cursorstring

Opaque cursor from a previous response's nextCursor. Omit for the first page.

Example:eyJjIjoiMjAyNi0wOS0xMVQwODozMDowMC4xMjM0NTZaIiwicyI6ImRhdGEiLCJpIjoiY2RyXzEifQ
userIdstring uuid

Restrict to one end-user your organization owns. Omit for every user.

Example:9c1f2a6e-3b7d-4e0a-8f21-5d6c7b8a9e01

Response

A page of usage records with a forward cursor.

nextCursorstring nullable required

Pass as cursor to fetch the next page; null once the feed is exhausted. To pick up later changes, resend the cursor that fetched the last page.

hasMoreboolean required

Whether another page follows. Equivalent to nextCursor being non-null.

Example response

{
  "items": [
    {
      "id": "cdr_01j9v2k8f3m4n5p6q7r8s9t0u1",
      "type": "DATA",
      "provider": "telia-denmark",
      "msisdn": "+4520123456",
      "timeStarted": "2026-09-11T08:30:00.000Z",
      "timeEnded": "2026-09-11T08:34:12.000Z",
      "amount": 10485760,
      "unit": "bytes",
      "servingCountryCode": "DK",
      "usageClass": "domestic",
      "counterpartyMsisdn": "+4598765432",
      "callDirection": "outbound",
      "counterpartyCountryCode": "DK",
      "networkType": "5G",
      "userId": "9c1f2a6e-3b7d-4e0a-8f21-5d6c7b8a9e01",
      "date": "2026-09-11",
      "totalPrice": "0.043200",
      "unitPrice": "0.004320",
      "currency": "EUR",
      "rateId": "rate_01j9v2k8f3m4n5p6q7r8s9t0u1"
    }
  ],
  "nextCursor": "eyJjIjoiMjAyNi0wOS0xMVQwODozMDowMC4xMjM0NTZaIiwicyI6ImRhdGEiLCJpIjoiY2RyXzEifQ",
  "hasMore": true
}

Changes

No recorded changes to this operation across all 1 revision of this API.