---
title: "Search Extracts"
method: POST
path: "/search/extracts"
tags: ["search"]
---

# Search Extracts

`POST /search/extracts`

## Request

- Base URL: `https://api.casenode.ai`
- URL: `https://api.casenode.ai/search/extracts`
- Auth: none declared

Extract paragraphs matching a term from cases matching filters.

Applies strict/exclude filters on authorities, then searches their
paragraphs for the term. Single JOIN query — no intermediate ID set.

With an empty term ("citation mode"), returns the paragraphs that contain
the cited authority instead (authority_citations.paragraph_ref →
authority_chunks). Requires a 'cites' filter. Citing cases with no recorded
pinpoint paragraph are omitted but counted in `cases_without_pinpoint`.

## Request body

- ExtractSearchRequest
  - `term` string
  - `also` string[]: Additional terms — paragraph must match ALL
  - `prec` 'exact' | 'fuzzy': Precision for `term`: 'exact' = literal phrase, 'fuzzy' = typo-tolerant word match.
  - `also_prec` string[]: Per-term precision for `also`, aligned by index. Entries missing (shorter than `also`) default to 'exact'.
  - `mode` 'keyword' | 'semantic'
  - `filters` SearchFilter[]
    - `field` 'domain' | 'court' | 'respondent' | 'claimant' | 'cites' | 'mentions' | 'judge' | 'year_from' | 'year_to' | 'case_id' | 'disposition' | 'judgment_status' | 'appeal_from' | 'cited_by_min' | 'jurisdiction' | 'topic' | 'ids', required: Filter field — see FILTER_FIELD_HELP in the API schema for values.
    - `value` string: Single value. Omit when `values` is given.
    - `values` string[], nullable: Alternative spellings of ONE entity, OR'd together. Use for unconsolidated party/judge names. Omit for single-value filters; when given, `value` is ignored and set to the first entry. An exclude filter with several values excludes ALL of them.
    - `match` 'strict' | 'exclude'
    - `prec` 'exact' | 'fuzzy', nullable: Text precision for phrase fields (mentions/party/judge): 'exact' = the value must appear contiguously, 'fuzzy' = its significant words must all appear, in any order. Defaults to 'fuzzy' for party and judge names and 'exact' everywhere else.
  - `filter_blocks` FilterBlock[], nullable
    - `query` string
    - `filters` SearchFilter[]
      - `field` 'domain' | 'court' | 'respondent' | 'claimant' | 'cites' | 'mentions' | 'judge' | 'year_from' | 'year_to' | 'case_id' | 'disposition' | 'judgment_status' | 'appeal_from' | 'cited_by_min' | 'jurisdiction' | 'topic' | 'ids', required: Filter field — see FILTER_FIELD_HELP in the API schema for values.
      - `value` string: Single value. Omit when `values` is given.
      - `values` string[], nullable: Alternative spellings of ONE entity, OR'd together. Use for unconsolidated party/judge names. Omit for single-value filters; when given, `value` is ignored and set to the first entry. An exclude filter with several values excludes ALL of them.
      - `match` 'strict' | 'exclude'
      - `prec` 'exact' | 'fuzzy', nullable: Text precision for phrase fields (mentions/party/judge): 'exact' = the value must appear contiguously, 'fuzzy' = its significant words must all appear, in any order. Defaults to 'fuzzy' for party and judge names and 'exact' everywhere else.
  - `group_by` 'case' | 'flat'
  - `limit` integer
  - `offset` integer
  - `target_court` string, nullable
  - `sort` 'relevance' | 'citations' | 'date': Order of the matching paragraphs, by their case, with the options /search takes: 'relevance' (how well the paragraph matches), 'citations' (most-cited case first), 'date' (newest judgment first). A non-relevance sort re-orders the best-matching paragraphs, as /search does.
  - `cited_by_min` integer, nullable: Only paragraphs from cases cited at least this many times. The same floor as a `cited_by_min` filter.

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/casenode/apis/casenode-api.md) · [All operations](https://skmtc.dev/casenode/apis/casenode-api/llms.txt) · [OpenAPI document](https://skmtc.dev/casenode/apis/casenode-api/revisions/5b2883d19661?raw)
