Skip to main content
Version: v2

Usage monitoring

The usage monitoring page lets you track how your streams are consumed and how much transcoding capacity is used. The dashboard shows these metrics visually. You can also query them directly through the API.

Your usage — and pricing — is made up of two independent components:

  1. Transcoding — the time your engines spend actively transcoding video. This is measured in transcoding minutes.
  2. Viewing — the consumption by your viewers. Depending on your contract, this is measured either in viewing minutes (time spent watching) or bytes transferred (data delivered).

Common parameters

All three endpoints share the same base parameters:

ParameterTypeRequiredDescription
startstringYesStart date for the analytics period.
endstringYesEnd date for the analytics period.
resolutionstringYesTime granularity: 15min, hour, day, or month.
utcOffsetstringNoUTC offset in minutes. Adjusts how data points align to time boundaries.

Viewing minutes

Returns how many minutes viewers spent watching a channel's streams.

GET https://api.theo.live/v2/channels/{channelId}/analytics/viewing-minutes

ParameterTypeRequiredDescription
groupBystringNochannel, distribution, or streaming-format.
distributionIdsstringNoComma-separated list of distribution IDs to filter by.
streamingFormatsstringNoComma-separated list of streaming formats to filter by.

Example

GET /v2/channels/{channelId}/analytics/viewing-minutes?start=2025-01-01&end=2025-01-31&resolution=day&groupBy=distribution

Bytes transferred

Returns the total amount of data delivered to viewers for a channel.

GET https://api.theo.live/v2/channels/{channelId}/analytics/bytes-transferred

ParameterTypeRequiredDescription
groupBystringNochannel, distribution, or streaming-format.
streamingFormatsstringNoComma-separated list of streaming formats to filter by.

Example

GET /v2/channels/{channelId}/analytics/bytes-transferred?start=2025-01-01&end=2025-01-31&resolution=day&groupBy=streaming-format

Transcoding minutes

Returns how many minutes of transcoding capacity was used by a channel's engines.

GET https://api.theo.live/v2/channels/{channelId}/analytics/transcoding-minutes

ParameterTypeRequiredDescription
groupBystringNoengine or channel.
engineIdsstringNoComma-separated list of engine IDs to filter by.

Example

GET /v2/channels/{channelId}/analytics/transcoding-minutes?start=2025-01-01&end=2025-01-31&resolution=month&groupBy=engine

Response format

All three endpoints return the same response structure:

{
"data": [
{
"timestamp": "2025-01-01T00:00:00.000Z",
"records": [
{
"id": "channel-id-or-group-id",
"amount": 1234.5
}
]
}
]
}
  • timestamp — the start of the time bucket, based on the chosen resolution.
  • records — one entry per group (e.g. per distribution, per engine). When no groupBy is specified, there is a single record per bucket.
    • id — identifier of the grouped entity (channel ID, distribution ID, engine ID, or streaming format name).
    • amount — the metric value for that time bucket.