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

# Search Authorities

`POST /search`

## Request

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

Hybrid search with structured filters (strict/exclude).

Modes:
- 'keyword': full-text search only
- 'semantic': embedding similarity only
- 'hybrid' (default): both, merged by score
- No query: returns top-cited authorities

Filters use match modes:
- 'strict': must match (WHERE clause)
- 'exclude': must not match (WHERE NOT)

## Request body

- SearchRequest
  - `query` string
  - `domain` string, nullable
  - `court` string, nullable
  - `year_from` integer, nullable
  - `year_to` integer, nullable
  - `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.
  - `mode` 'keyword' | 'semantic' | 'hybrid'
  - `sort` 'relevance' | 'citations' | 'date'
  - `limit` integer
  - `offset` integer
  - `ids` string[], nullable
  - `target_court` string, nullable

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