---
title: "Create Guideline Set"
method: POST
path: "/marketing/guideline-sets"
tags: ["marketing-guideline-sets"]
---

# Create Guideline Set

`POST /marketing/guideline-sets`

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

## Request body

- GuidelineSetWrite: Create or replace a guideline set.
  - `name` string, required
  - `description` string, nullable
  - `extraction_guidance` string, nullable
  - `documents` GuidelineSetDocument[]
    - `file_id` string, uuid, required
    - `role` 'primary' | 'supporting', required: What one document contributes to a guideline set. PRIMARY documents are read *for obligations*: every requirement traces to exactly one of them, and `MarketingGuidelineRequirement.file_id` names it. SUPPORTING documents — a brand book, a glossary, a claims-substantiation memo — are read *for context* and produce no requirement of their own. The distinction is not presentational. It decides which documents a product line drags into `gather_candidates`, so filing a glossary as primary is how a definitions list becomes a hundred obligations nobody wrote, and filing a standards document as supporting is how its rules quietly stop being checked.
  - `websites` GuidelineSetWebsite[]
    - `url` string, required
    - `title` string, nullable
    - `note` string, nullable
  - `auto_determine_supporting_documents` boolean

## Response `201`

Successful Response

- GuidelineSetSummary: One guideline set, its documents, and what it is attached to.
  - `guideline_set_id` string, uuid, required
  - `name` string, required
  - `description` string, nullable, required
  - `extraction_guidance` string, nullable
  - `documents` GuidelineSetDocumentSummary[], required
    - `file_id` string, uuid, required
    - `filename` string, nullable, required
    - `role` 'primary' | 'supporting', required: What one document contributes to a guideline set. PRIMARY documents are read *for obligations*: every requirement traces to exactly one of them, and `MarketingGuidelineRequirement.file_id` names it. SUPPORTING documents — a brand book, a glossary, a claims-substantiation memo — are read *for context* and produce no requirement of their own. The distinction is not presentational. It decides which documents a product line drags into `gather_candidates`, so filing a glossary as primary is how a definitions list becomes a hundred obligations nobody wrote, and filing a standards document as supporting is how its rules quietly stop being checked.
    - `ordinal` integer, required
  - `websites` GuidelineSetWebsiteSummary[]
    - `website_id` string, uuid, required
    - `url` string, required
    - `title` string, nullable, required
    - `note` string, nullable, required
    - `added_by_agent` boolean
  - `preset_ids` string[], required
  - `active_requirement_count` integer, required
  - `total_requirement_count` integer, required
  - `proposed_requirement_count` integer

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-05** `eb329fb4c94a`: 5 info
  - added the new optional request property `auto_determine_supporting_documents`
  - added the new optional request property `extraction_guidance`
  - added the new optional request property `websites`
  - added the optional property `extraction_guidance` to the response with the `201` status
  - …1 more
- **2026-09-02** `425d5b8a3c17`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/kobaltlabs/apis/fastapi/changes/marketing/guideline-sets/post.md)

---

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