---
title: "List Guidelines"
method: GET
path: "/marketing/guidelines/documents"
tags: ["marketing-guidelines"]
---

# List Guidelines

`GET /marketing/guidelines/documents`

## Request

- Base URL: `https://api.kobaltlabs.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kobaltlabs.com/marketing/guidelines/documents`
- Auth: none declared

Every marketing standard, with the state of its requirement library.

The one endpoint the guideline list polls while anything is running: it already carries each
guideline's decomposition status, so there is never a request per row.

## Response `200`

Successful Response

- GuidelineSummary[]
  - `file_id` string, uuid, required
  - `filename` string, nullable, required
  - `upload_id` string, uuid, nullable, required
  - `newer_version_processing` boolean, required
  - `active_requirement_count` integer, required
  - `total_requirement_count` integer, required
  - `proposed_requirement_count` integer
  - `needs_requirements` boolean, required
  - `stale` boolean, required
  - `latest_decomposition` DecompositionSummary, required: One extraction run, and how it went. `status` is the *effective* status: a run whose worker never reported back reads as failed rather than as permanently running, so the surface never offers a spinner that will not resolve.
    - `decomposition_id` string, uuid, required
    - `upload_id` string, uuid, required
    - `status` 'queued' | 'running' | 'succeeded' | 'failed', required: Lifecycle of one decomposition run.
    - `stage` 'queued' | 'selecting' | 'downloading' | 'extracting' | 'grounding' | 'storing' | 'done', required: Where a running decomposition has got to. Only the stages a watching human can perceive. Resolving the model's channel names to `MarketingCollateralType` and writing the rows are both sub-second, so they are not stages — a step that never renders is a step that misleads. `EXTRACTING` is the one that takes the minute.
    - `queue_wait_seconds` integer, nullable, required
    - `requirements_total` integer, nullable, required
    - `requirements_written` integer, required
    - `page_count` integer, nullable, required
    - `error` string, nullable, required
    - `started_at` string, date-time, nullable, required
    - `finished_at` string, date-time, nullable, required
    - `requested_by_email` string, nullable, required
    - `superseded` boolean, required

## Changes

- **2026-09-05** `eb329fb4c94a`: 1 warning
  - added the new `selecting` enum value to the `items/latest_decomposition/anyOf[subschema #1: DecompositionSummary]/stage` response property for the response status `200`
- **2026-09-02** `425d5b8a3c17`: 1 info
  - added the optional property `items/proposed_requirement_count` to the response with the `200` status

[Operation history](https://skmtc.dev/kobaltlabs/apis/kobaltlabs-api/changes/marketing/guidelines/documents/get.md)

---

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