---
title: "Count quotes per status"
method: GET
path: "/v1/quotes/status-counts"
tags: ["Quotes"]
---

# Count quotes per status

`GET /v1/quotes/status-counts`

## Request

- Base URL: `https://api.officina.it`
- URL: `https://api.officina.it/v1/quotes/status-counts`
- Auth: HTTP bearer

Returns how many quotes sit in each status, for the tab counters
above the mobile list. Accepts the same filters as
`GET /v1/quotes` minus `status` and pagination (`q`,
`from`/`to`/`preset` with the same date-filter semantics), so
the numbers always match what the list shows.
The applied range is echoed in `date_filter`.

## Query parameters

- `q` string
- `from` string, date
- `to` string, date
- `preset` 'rel30' | 'rel90' | 'rel365' | 'year' | 'Q1' | 'Q2' | 'Q3' | 'Q4' | 'month' | 'custom' | 'all'

## Response `200`

Counts per status.

- QuoteStatusCounts
  - `object` 'quote_status_counts', required
  - `waiting` integer, required
  - `accepted` integer, required
  - `rejected` integer, required
  - `date_filter` DateFilter, required: The effective date range the server applied to a date-scoped list request, echoed on the list envelope so clients can render the active filter without re-deriving it. A request that sends no `from`/`to`/`preset` gets the default window, the last 12 months (`rel365`); nothing is carried over between requests. Relative presets are resolved here to concrete dates and roll forward over time.
    - `object` 'date_filter', required
    - `preset` 'rel30' | 'rel90' | 'rel365' | 'year' | 'Q1' | 'Q2' | 'Q3' | 'Q4' | 'month' | 'custom' | 'all', required: Effective selection label. Relative (`rel30`/`rel90`/`rel365`) and absolute (`year`/`Q1`-`Q4`/`month`/`custom`) carry `from`/`to`; `all` omits them.
    - `from` string, date: Inclusive lower bound (YYYY-MM-DD). Omitted when `preset` is `all`.
    - `to` string, date: Inclusive upper bound (YYYY-MM-DD). Omitted when `preset` is `all`.

## Other responses

- `401`: Missing, malformed, expired, or wrong-audience bearer token.
- `402`: The company has no active subscription, or its plan does not include API access. API access is included in the Business and Illimitato plans.
- `403`: The authenticated user lacks the required permission.
- `422`: A request field is missing or invalid (fast-fail).
- `500`: Unhandled server error. Detail is logged, not exposed.

---

[API](https://skmtc.dev/officina/apis/officina-it-api.md) · [All operations](https://skmtc.dev/officina/apis/officina-it-api/llms.txt) · [OpenAPI document](https://skmtc.dev/officina/apis/officina-it-api/revisions/7da3fccfe551?raw)
