---
title: "Start Bulk Guideline Set Decompositions"
method: POST
path: "/internal/marketing/guideline-sets/decompositions"
tags: ["internal"]
---

# Start Bulk Guideline Set Decompositions

`POST /internal/marketing/guideline-sets/decompositions`

## 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/internal/marketing/guideline-sets/decompositions`
- Auth: none declared

Read, choose supporting documents for, or re-enrich some or all of a company's guideline
sets, reporting an outcome for each.

**Partial success is the normal result, not an error.**
`uq_mg_decomposition_one_in_flight_per_set` means a set already being read refuses this press,
and a customer's library routinely has one or two in that state. A 409 for the whole request
would make the common case look like a failure and lose the sets that did start; so each set is
attempted in its own nested transaction and reports its own outcome.

Sets are read as composed unless `auto_determine_supporting_files` is set, in which case each
gets a selection run first and its readings are created by that run — see
`marketing_supporting_file_selection_task`. `enrich` does not start a reading: it fans out
research over the unapproved rules already standing, including ones a previous press already
researched.

## Request body

- BulkDecompositionRequest
  - `company_id` string, uuid, required
  - `guideline_set_ids` string[], required
  - `action` 'read' | 'select_supporting' | 'enrich'
  - `auto_determine_supporting_files` boolean
  - `enrichment_parallelism` integer, nullable

## Response `200`

Successful Response

- BulkDecompositionResponse
  - `outcomes` BulkDecompositionOutcome[], required
    - `guideline_set_id` string, uuid, required
    - `name` string, required
    - `outcome` 'queued' | 'selecting' | 'already_running' | 'skipped' | 'failed', required
    - `documents_queued` integer
    - `reason` string, nullable

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-08** `9fe2fb8a3631`: 1 info
  - added the new `enrich` enum value to the request property `action`
- **2026-09-05** `eb329fb4c94a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/kobaltlabs/apis/kobaltlabs-api/changes/internal/marketing/guideline-sets/decompositions/post.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)
