---
title: "Get content counts by status"
method: GET
path: "/content/summary"
tags: ["Content"]
---

# Get content counts by status

`GET /content/summary`

## Request

- Base URL: `https://next.frase.io/api/v1`
- URL: `https://next.frase.io/api/v1/content/summary`
- Auth: API key in header `X-API-KEY`

A single lightweight roll-up of how much content your organization has in each workflow state — cheaper than listing content and counting client-side, and the usual first call when an agent needs to orient itself. Requires the `read:content` scope. Read-only, no side effects.

Counts are org-scoped and exclude trashed (soft-deleted) content. `status_counts` contains only the statuses that actually have rows, in no guaranteed order — a status with zero rows is omitted entirely, so do not rely on all five appearing. `total` is the sum of the returned counts. There are no query parameters and no pagination.

CORS preflight is supported (OPTIONS returns 204; allowed methods GET, OPTIONS; allowed headers Content-Type, X-API-KEY).

## Response `200`

Content status counts

- object
  - `data` object
    - `status_counts` object[]: One entry per status that has at least one non-trashed content row.
      - `status` 'draft' | 'generating' | 'review' | 'published' | 'archived' | 'unknown': Workflow status. `unknown` is a defensive fallback for a row with no status.
      - `count` integer
    - `total` integer: Sum of every count above — all non-trashed content in the organization.

## Other responses

- `401`: Authentication failed
- `403`: Forbidden - action not allowed on this resource
- `429`: Rate limit exceeded
- `500`: The count query failed

---

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