---
title: "Get Pipeline Health"
method: GET
path: "/admin/pipeline"
tags: ["admin-pipeline"]
---

# Get Pipeline Health

`GET /admin/pipeline`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/admin/pipeline`
- Auth: none declared

Where ingestion is stuck, across every tenant (admin).

Three per-tenant stall signals — failed analysis, failed archiving, and intakes sitting
in `failed` / `needs_input` / `awaiting_analysis` — which the customer experiences
identically ("my documents never arrived") and which need different fixes.

**`poison` is the one that justifies this being a platform surface.** `file` is a
cross-tenant cache keyed on sha256: an existing hash reuses the row as-is, and a
terminally failed row is never re-queued. So one file that failed once makes every
FUTURE tenant ingesting those same bytes born stuck, claimed by no queue, with nothing
on any screen to explain it — and a shared Swiss supplier's invoice template is exactly
the kind of bytes that recur across tenants. The row belongs to no company, so no
per-tenant page can show it.

The `companies` count on each poison row is the finding, not decoration: 1 would be one
tenant's bad document; more than 1 is a cache entry poisoning the estate. Only rows
above 1 are listed.

⚠️ **There is no bulk requeue yet.** This surface diagnoses; clearing a poisoned entry
is still a manual operation. Said plainly because a health page with no remedy is
easily mistaken for one that already fixed things.

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `200`

Successful Response

- PipelineHealthOut
  - `rows` PipelineRowOut[], required
    - `company_id` string, required
    - `company_name` string, required
    - `failed_files` integer, required
    - `failed_items` integer, required
    - `stuck_intakes` integer, required
  - `poison` PoisonRowOut[], required
    - `file_id` string, required
    - `sha256` string, required
    - `filename` string, nullable
    - `companies` integer, required
  - `failed_files` integer, required
  - `failed_items` integer, required
  - `stuck_intakes` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zeno-works/apis/zeno-api.md) · [All operations](https://skmtc.dev/zeno-works/apis/zeno-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zeno-works/apis/zeno-api/revisions/1eb93dde146c?raw)
