---
title: "Re-extract conversations"
method: POST
path: "/api/v1/initiatives/{id}/reextract"
tags: ["Initiatives"]
---

# Re-extract conversations

`POST /api/v1/initiatives/{id}/reextract`

## Request

- Base URL: `https://www.useboom.ai`
- URL: `https://www.useboom.ai/api/v1/initiatives/{id}/reextract`
- Auth: HTTP bearer

Re-run extraction over an initiative's existing conversations — the fix for participants whose replies were never read (a schema authored after the conversations happened, or an initiative that never had extraction run at all). Start with dryRun to see how many conversations are eligible and how many actually carry enough transcript to extract from. Only conversations with at least 3 messages including one reply can produce anything.

## Path parameters

- `id` string, required: The initiative id.

## Request body

- object
  - `dryRun` boolean: Count what would run without queueing anything. Do this first — the counts tell you whether re-extraction is worth the spend.
  - `force` boolean: Re-extract conversations already extracted at the current schema version. Off by default, so a plain call only fills gaps.
  - `fromDate` string, date-time: Only consider conversations created at or after this ISO 8601 instant.
  - `environmentId` string: Which environment to re-extract. Optional only while the organization has exactly one; with more than one it is required, because this rewrites values in exactly one environment and defaulting could rewrite production from a staging test.

## Response `201`

Success

- object
  - `initiativeId` string, required
  - `eligible` integer, required: Conversations targeted for re-extraction.
  - `queued` integer, required: Extractions actually enqueued — always 0 on a dry run.
  - `willExtract` integer, required: Of the eligible set, how many carry enough transcript to produce values.
  - `insufficient` integer, required: Eligible but below the analyzability bar (under 3 messages, or no reply on this initiative) — these will be marked INSUFFICIENT_DATA rather than extracted. A high number here usually means the replies live on a different initiative.
  - `dryRun` boolean, required

## Other responses

- `400`: Validation failed or the request cannot proceed.
- `401`: Missing, malformed, or revoked API key.
- `404`: The resource does not exist in this organization.
- `409`: Conflicts with the current state (duplicates, wrong lifecycle state).
- `422`: The request is well-formed but semantically invalid.
- `429`: Rate limit exceeded — retry after `Retry-After`.
- `500`: Internal server error.
- `503`: Transient error — retry with a narrower request.

## Changes

- **2026-11-03** `7c7a773b12ce`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/useboom/apis/boom-api/changes/api/v1/initiatives/:id/reextract/post.md)

---

[API](https://skmtc.dev/useboom/apis/boom-api.md) - [All operations](https://skmtc.dev/useboom/apis/boom-api/llms.txt) - [OpenAPI document](https://skmtc.dev/useboom/apis/boom-api/revisions/d596d92ed092?raw)
