active until it ends or expires; frames may be arriving, not arriving yet, or arriving at a weak cadence.
Frame availability
Frame availability is exposed throughGET /streams/{id}:
first_frame_at_msis non-null after the first frame is captured.recent_fpsis computed over the current frame-metrics bucket for active streams.retained_frame_countcounts frames still available for inference.evicted_frame_countcounts frames evicted from the stream history window.last_frame_indexis the 0-indexed lifetime index of the most recent frame.first_available_frame_indexis the 0-indexed lifetime index of the oldest frame still retained.first_available_frame_at_msis the epoch ms timestamp of that oldest retained frame.end_reasonisnullwhile active. On ended streams it is"deleted"for explicit deletes and"expired"for system-driven termination.
Frame indexing
Frame indices used by inference URLs are stream-lifetime indices, not retained-window positions.frame_index=0 means the first frame ever captured for that stream. Exact image lookups fail if that frame has been evicted; video ranges are intersected with the retained window.
When a stream ends, live counters and timestamps are snapshotted. GET /streams/{id} on an ended stream returns those final values.