---
title: "Health check with pipeline metrics"
method: GET
path: "/health"
tags: ["System"]
---

# Health check with pipeline metrics

`GET /health`

## Response `200`

System health status

- HealthCheckResponse
  - `status` string, required — "healthy" or "degraded"
  - `status_code` integer, required
  - `last_frame_timestamp` string, date-time, nullable
  - `last_audio_timestamp` string, date-time, nullable
  - `frame_status` string, required — "ok", "stale", "not_started", or "disabled"
  - `audio_status` string, required
  - `message` string, required
  - `verbose_instructions` string, nullable
  - `device_status_details` string, nullable
  - `monitors` string[], nullable
  - `pipeline` PipelineHealthInfo
    - `uptime_secs` number
    - `frames_captured` integer
    - `frames_db_written` integer
    - `frames_dropped` integer
    - `frame_drop_rate` number
    - `capture_fps_actual` number
    - `avg_ocr_latency_ms` number
    - `avg_db_latency_ms` number
    - `ocr_queue_depth` integer
    - `video_queue_depth` integer
    - `time_to_first_frame_ms` number, nullable
    - `pipeline_stall_count` integer
    - `ocr_cache_hit_rate` number
  - `audio_pipeline` AudioPipelineHealthInfo
    - `uptime_secs` number
    - `chunks_sent` integer
    - `chunks_channel_full` integer
    - `stream_timeouts` integer
    - `vad_passed` integer
    - `vad_rejected` integer
    - `vad_passthrough_rate` number
    - `avg_speech_ratio` number
    - `transcriptions_completed` integer
    - `transcriptions_empty` integer
    - `transcription_errors` integer
    - `db_inserted` integer
    - `total_words` integer
    - `words_per_minute` number
    - `transcription_mode` string, nullable
    - `transcription_paused` boolean, nullable
    - `segments_deferred` integer, nullable
    - `segments_batch_processed` integer, nullable
    - `batch_paused_reason` string, nullable

## Changes

- **2026-02-16** `e143bf8d73bc` — 12 info
  - api tag `System` added
  - added the optional property `audio_pipeline` to the response with the `200` status
  - added the optional property `device_status_details` to the response with the `200` status
  - added the optional property `last_audio_timestamp` to the response with the `200` status
  - …8 more
- **2026-02-11** `2825740bcf63` — 8 breaking, 1 info
  - removed the required property `audio_status` from the response with the `200` status
  - removed the required property `device_status_details` from the response with the `200` status
  - removed the required property `frame_status` from the response with the `200` status
  - removed the required property `last_audio_timestamp` from the response with the `200` status
  - …5 more
- **2026-02-11** `61c0a2f34556` — 1 info
  - endpoint added
- **2026-02-11** `4303af4aaeda` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/screenpipe/apis/screenpipe-api/changes/health/get.md)

---

[API](https://skmtc.dev/screenpipe/apis/screenpipe-api.md) · [All operations](https://skmtc.dev/screenpipe/apis/screenpipe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/screenpipe/screenpipe-api/revisions/e143bf8d73bc/schema)
