---
title: "Upload And Run Requirements Extraction"
method: POST
path: "/internal/evals/requirements-extraction/upload"
tags: ["internal"]
---

# Upload And Run Requirements Extraction

`POST /internal/evals/requirements-extraction/upload`

## 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/requirements-extraction/upload`
- Auth: none declared

Upload a guideline PDF and bench the extraction over it.

Returns as soon as the upload exists and the run is registered; extraction takes tens of
seconds, so it continues in the background and the run's `status` reports where it is.

`document_type` types the stored file, and defaults from the profile: marketing standards for
`marketing`, `GENERIC_POLICY` otherwise. Pass it explicitly when you know what the document is
— the regulatory default is deliberately unopinionated about content, and `GENERIC_POLICY` is
one of the types `is_guideline_document` refuses, so re-benching that upload from the CLI needs
`--allow-any-doc-type`. A document typed specifically does not.

The run itself is not subject to that guard: the document was uploaded expressly to be benched.

## Request body `multipart/form-data`

- BodyUploadAndRunRequirementsExtractionInternalEvalsRequirementsExtractionUploadPost
  - `file` string, binary, required
  - `profile` 'regulatory' | 'marketing': Which product's guidance to extract with.
  - `document_type` string, nullable
  - `model` string
  - `temperature` number

## Response `200`

Successful Response

- UploadAndRunResponse: Where to look for the run that was just started.
  - `run_id` string, required
  - `upload_id` string, required

## Other responses

- `422`: Validation Error

---

[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)
