---
title: "Post Pipeline Telemetry"
method: POST
path: "/logs/telemetry"
tags: ["logs"]
---

# Post Pipeline Telemetry

`POST /logs/telemetry`

## Request

- Base URL: `https://api.verdun.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.verdun.ai/logs/telemetry`
- Auth: API key in header `X-API-Key`

Internal, batched ingest-worker telemetry. Never accepts operator auth.

## Request body

- PostPipelineTelemetryRequest
  - `records` CameraPipelineTelemetryRecord[], required
    - `camera_id` string, uuid, required
    - `observed_at` string, date-time, required
    - `healthy` boolean, required
    - `counters_only` boolean: Late statistics from a stopped worker; do not update camera health or heartbeat freshness.
    - `monitoring_active` boolean
    - `worker_id` string, nullable
    - `image_version` string, nullable
    - `frames_received` integer
    - `motions_detected` integer
    - `validator_confirmed` integer
    - `validator_rejected` integer
    - `validator_fail_open` integer
    - `clip_failures` integer
    - `upload_failures` integer
    - `event_create_failures` integer
    - `ai_submit_failures` integer
    - `ai_submit_queued` integer: AI submissions enqueued since the previous telemetry flush
    - `ai_submit_retried` integer: AI submissions retried since the previous telemetry flush
    - `ai_submit_queue_full` integer: AI submissions refused since the previous flush because the queue was full (clip never reached the AI)
    - `ai_submit_stranded` integer: Queued AI submissions abandoned at worker shutdown since the previous flush (clip never reached the AI)
    - `ai_submit_queue_depth` integer, nullable: Point-in-time AI-submit queue depth at flush (gauge, not a counter — stored as the bucket's high-water mark); null when not reported
    - `ai_submit_inflight` integer, nullable: Point-in-time in-flight AI submissions at flush (gauge, not a counter — stored as the bucket's high-water mark); null when not reported
    - `last_frame_at` string, date-time, nullable
    - `last_motion_at` string, date-time, nullable
    - `last_deepalert_at` string, date-time, nullable
    - `deepalert_state` 'not_configured' | 'healthy' | 'degraded'
    - `last_error_code` string, nullable
    - `last_error_message` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/verdun/apis/verdun-api.md) - [All operations](https://skmtc.dev/verdun/apis/verdun-api/llms.txt) - [OpenAPI document](https://skmtc.dev/verdun/apis/verdun-api/revisions/35a2a6ebedda?raw)
