---
title: "Derive Stt Vocabulary"
method: POST
path: "/api/v1/campaigns/{campaign_id}/derive-stt-vocabulary"
tags: ["stt-vocabulary"]
---

# Derive Stt Vocabulary

`POST /api/v1/campaigns/{campaign_id}/derive-stt-vocabulary`

Extract and atomically replace publish-owned STT vocabulary entries.

``auto_extract=false`` returns a successful no-op. Otherwise only
publish_extraction entries are replaced; drift_feedback promotions and
staff-owned manual_terms / suppressed_terms / enabled / auto_extract /
auto_promote are preserved. Injection at call spawn stays off until both
STT_VOCABULARY_ENABLED and the row's enabled flag are on; auto-promotion
is gated separately by auto_promote.

## Path parameters

- `campaign_id` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `400` — Invalid campaign ID
- `404` — Campaign not found
- `422` — Validation Error
- `500` — Extraction or persistence failure

---

[API](https://skmtc.net/outrival/apis/fastapi.md) · [All operations](https://skmtc.net/outrival/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/outrival/fastapi/revisions/2ccec534ffce/schema)
