---
title: "Get Preparation"
method: GET
path: "/internal/evals/requirement-applicability/preparation"
tags: ["internal"]
---

# Get Preparation

`GET /internal/evals/requirement-applicability/preparation`

## 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/evals/requirement-applicability/preparation`
- Auth: none declared

Whether this collateral's guidelines have libraries yet, before a comparison is started.

Read-only: libraries are built by an agentic reading of a guideline set, which a reviewer starts
and approves on the customer surface, so this bench cannot conjure one for a standard that has
none. A guideline reported `never_run` here is one to go and read there, not a button.

## Query parameters

- `company_id` string, uuid, required
- `file_id` string, uuid, required

## Response `200`

Successful Response

- CollateralPreparation: What a comparison for this collateral would gather from, and what is missing. Answers the question the run itself cannot: a run against an undecomposed library succeeds and reports "0 of 0 survived", which is indistinguishable from a library that genuinely excludes everything. This says which guidelines have no library *before* anything is judged.
  - `company_id` string, uuid, required
  - `file_id` string, uuid, required
  - `collateral_filename` string, nullable, required
  - `preset_ids` string[], required
  - `unresolved_preset_ids` string[], required
  - `guidelines` GuidelineReadiness[], required
    - `file_id` string, uuid, required
    - `filename` string, nullable, 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.
    - `requirements` integer, required
    - `has_library` boolean, required
    - `error` string, nullable, required
  - `ready` integer, required
  - `in_flight` integer, required
  - `failed` integer, required
  - `never_run` integer, required

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-05** `eb329fb4c94a`: 1 warning
  - added the new `selecting` enum value to the `guidelines/items/stage/anyOf[subschema #1: DecompositionStage]/` response property for the response status `200`
- **2026-09-02** `425d5b8a3c17`: 1 warning
  - removed the optional property `skipped` from the response with the `200` status

[Operation history](https://skmtc.dev/kobaltlabs/apis/kobaltlabs-api/changes/internal/evals/requirement-applicability/preparation/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)
