Prometheus metrics reference

Plans that include the Prometheus metrics endpoint can scrape their workspace's own figures into Prometheus, Grafana or any tool that reads the Prometheus text format.

Setting it up

  1. Open Settings → Developer in your workspace and press Create metrics endpoint.
  2. Copy the bearer token straight away — it is shown once. The page also shows the endpoint URL (a random address on your own workspace) and a ready-made scrape config.
  3. Add the job to Prometheus. Scraping more often than every 15 seconds gains nothing (figures are refreshed every 15 seconds), and scrapes are limited to 60 a minute.

Rotate URL & token replaces both at once, so an old config or a leaked token stops working immediately. A wrong URL or token always gets a plain 404.

What is — and is not — included

Only your own workspace's figures. Never stream keys, ingest keys, provider API keys (not even their last characters), OAuth tokens, webhook URLs or internal addresses. Ids in labels are opaque. Figures come from what the platform has already recorded, so viewers and bitrates can lag real time by up to a minute or so.

Per-object metrics (channels, destinations, integrations, webhook endpoints, AI streams and their channels) stop at 200 objects each; series_truncated tells you when that happened.

Available metrics

Every name starts with streamrepeater_workspace_. Money is in the currency's minor units (pence or cents) with a currency label.

Endpoint

Metric Type Labels Meaning
up gauge Always 1 while the endpoint answers.
scrape_timestamp_seconds gauge When the figures were computed (cached for up to 15 seconds).
series_truncated gauge family 1 when a per-object family hit the 200-object cap (channels, destinations, integrations, webhook_endpoints, ai_streams, ai_stream_targets).

Plan and billing

Metric Type Labels Meaning
plan_info gauge plan Always 1; the plan in effect is the label.
billing_state gauge state One series per state (free, trial, paid, overdue, lapsed, exempt); exactly one is 1.
invoice_amount_due_minor_units gauge currency Unpaid invoice total in minor units (pence/cents).
recording_storage_quota_bytes gauge Cloud recording / Video Library allowance (absent when unlimited).
bandwidth_used_bytes_total counter Egress counted against the plan this period; resets with the period.
bandwidth_ingress_bytes_total counter Ingest received this period; resets with the period.
bandwidth_quota_bytes gauge Egress allowance this period (absent when unlimited).
bandwidth_reset_timestamp_seconds gauge When the bandwidth counters next reset.

Channels and relays

Metric Type Labels Meaning
channels gauge status Channels by status (offline, reconnecting, live).
channel_live gauge channel_id, channel, title 1 while the channel is receiving its ingest.
channel_viewers gauge channel_id, channel, title Current viewers (0 when no sample in the last 5 minutes).
channel_inbound_bps gauge channel_id, channel, title Current ingest bitrate, bits per second.
channel_outbound_bps gauge channel_id, channel, title Current egress bitrate, bits per second.
destinations gauge state Destinations by state (enabled, disabled, auto_paused).
relays gauge status Relay processes by status.
destination_up gauge destination_id, destination, protocol, channel 1 while the relay to the destination is running.
destination_restarts gauge destination_id, destination, protocol, channel Relay restarts since it last started cleanly.
destination_failure_streak gauge destination_id, destination, protocol, channel Consecutive failures blamed on the destination.
relay_alert_events_24h gauge type Relay alert events in the last 24 hours (process_missing, start_failed, backing_off).

Integrations and webhooks

Metric Type Labels Meaning
integration_info gauge provider, account Always 1 per connected integration; account is the name the Integrations page shows (Twitch, Kick), otherwise empty.
integration_connected gauge provider 1 while the integration is enabled.
integration_needs_reconnect gauge provider 1 when it must be reconnected.
integration_token_invalid gauge provider 1 when the token can no longer be refreshed.
integration_token_expiry_timestamp_seconds gauge provider When the current access token expires, if known.
integration_token_refreshed_timestamp_seconds gauge provider Last successful token refresh, if any.
webhook_endpoints gauge state Developer webhook endpoints (enabled, disabled).
webhook_endpoint_last_status_code gauge endpoint_id HTTP status of the last delivery (0 = no response or never delivered). Never the URL.
webhook_endpoint_consecutive_failures gauge endpoint_id Failed deliveries since the last successful one.
webhook_endpoint_last_delivery_timestamp_seconds gauge endpoint_id When the last delivery was attempted.

Alerts

Metric Type Labels Meaning
alerts_active gauge area, severity Alerts raised for the workspace in the last 7 days, counted once however many members received them. Areas: billing, streams, integrations, ai, account, other. Severities: info, good, warn, critical.
alerts_unread gauge area, severity Active alerts that no member has read yet.

AI Streams

Metric Type Labels Meaning
ai_stream_running gauge stream_id, stream 1 while the stream's publisher is running. Only when the plan includes AI Streams.
ai_stream_active gauge stream_id, stream 1 while the stream is switched on. Only when the plan includes AI Streams.
ai_stream_diagnosis gauge stream_id, stream, reason The stream page's diagnosis; one series per reason (generating, stopped, not-entitled, no-provider, no-prompt, no-key, spend-limit, other), exactly one is 1. Only when the plan includes AI Streams.
ai_stream_buffered_clips gauge stream_id, stream Generated clips waiting to play. Only when the plan includes AI Streams.
ai_stream_clips_generated_total counter stream_id, stream Clips generated. Only when the plan includes AI Streams.
ai_stream_clips_played_total counter stream_id, stream Clips played on air. Only when the plan includes AI Streams.
ai_stream_clips_failed_total counter stream_id, stream Clips that could not be generated. Only when the plan includes AI Streams.
ai_stream_clips_refused_total counter stream_id, stream Requests refused by moderation or the spend limit. Only when the plan includes AI Streams.
ai_stream_last_clip_generated_timestamp_seconds gauge stream_id, stream When the latest clip was generated. Only when the plan includes AI Streams.
ai_stream_spend_estimate_minor_units gauge stream_id, stream, currency Estimated provider spend since the stream's budget was last reset, in minor units. Only when the plan includes AI Streams.
ai_stream_spend_limit_minor_units gauge stream_id, stream, currency The stream's spend limit, in minor units (absent when none). Only when the plan includes AI Streams.
ai_stream_target_state gauge stream_id, stream, channel, state Each target channel's state (receiving, connecting, dropped, waiting, busy, not_included, other); exactly one per target is 1. Only when the plan includes AI Streams.
ai_provider_key_state gauge provider, state The workspace's key for each AI video provider (working, no_credits, refused, unchecked); exactly one per provider is 1. Never the key. Only when the plan includes AI Streams.
ai_provider_key_checked_timestamp_seconds gauge provider When the key was last checked. Only when the plan includes AI Streams.
ai_video_library_bytes gauge Storage used by AI stream days saved to the Video Library. Only when the plan includes AI Streams.
Was this helpful?

← Back to Help Centre