---
title: "Sample request pipeline funnel counts"
method: GET
path: "/samples/pipeline-counts"
tags: ["Samples"]
---

# Sample request pipeline funnel counts

`GET /samples/pipeline-counts`

How many sample requests sit at each stage of the fulfilment funnel: ``toReview`` → ``readyToShip`` → ``shipped`` → ``pendingContent`` → ``completed``, plus ``cancelled``. Also returns the shop's ``completionRate``, its ``approvalTarget`` usage, the ``archivedCount``, and ``expiringCount`` (requests about to lapse if no decision is made).

Counts honour the same filters as the portal table, so a filtered funnel and a filtered list agree. The portal's advanced numeric creator filters (GMV / views / post-rate bands) are not exposed here — use ``POST /samples/list`` and aggregate if you need those.

``date_from``/``date_to`` must be given together. Single-shop only.

## Query parameters

- `product_ids` string, nullable — Comma-separated product IDs to filter by.
- `date_from` string, date, nullable — Start of the window (inclusive). Requires date_to.
- `date_to` string, date, nullable — End of the window (inclusive). Requires date_from.
- `exclude_rejected` boolean — Exclude creators previously rejected/cancelled by this shop.
- `include_archived` boolean — Include sample requests archived in the portal.
- `search` string, nullable — Free-text filter on creator handle / name.
- `tags` string, nullable — Comma-separated CRM tags to filter by.
- `show_expiring` boolean — Count only requests that are close to expiring.

## Response `200`

Successful Response

- PipelineCountsResponse
  - `counts` PipelineCounts, required
    - `toReview` integer
    - `readyToShip` integer
    - `shipped` integer
    - `pendingContent` integer
    - `completed` integer
    - `cancelled` integer
    - `all` integer
    - `inShipment` integer
    - `posted` integer
    - `allApproved` integer
    - `overdue` integer
    - `rejected` integer
    - `expired` integer
    - `ignored` integer
  - `completionRate` number, required
  - `approvalTarget` ApprovalTargetSummary, required
    - `limit` integer, nullable
    - `used` integer
  - `archivedCount` ArchivedCount
    - `creators` integer
    - `products` integer
    - `total` integer, required
  - `expiringCount` integer
  - `dataFreshness` DataFreshness
    - `lastSyncedAt` string, nullable
    - `isStale` boolean
    - `isRefreshing` boolean

## Other responses

- `422` — Validation Error

---

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