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

# Search Tdocs

`POST /tdocs/search`

## Request

- Base URL: `https://api.3gppscout.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.3gppscout.com/tdocs/search`
- Auth: none declared

Search the text of 3GPP TDocs (meeting contributions, CRs, LSs, summaries, chair notes, reports) by meaning and by exact term.

Use for "are there any TDocs about X", "who is proposing Y", or finding where an IE, parameter, spec, or
TDoc ID is discussed. Merges semantic (vector) and keyword (lexical) matches, then reranks. Exact
identifiers in the query (TDoc IDs such as R2-2008188, IE names such as ta-CommonDrift, spec numbers such
as 38.213, quoted phrases) are matched literally, and passages that contain them come first.

`filters` takes the same fields as GET /tdocs (source company with alias matching, meeting, group,
agenda_item, doc_kind, status, work_item, spec, release, since, until). `unit_types` limits results to
passages holding numbered proposals or observations.

Each result is one passage with its TDoc's ID, title, doc_kind, register status and status_label, meeting,
agenda item, source companies with roles, official_url, unit type and labels (for example "Proposal 3"),
page and paragraph anchor, and text. `anchor` is where the passage starts; `units` gives each numbered
proposal or observation in the passage with its own anchor, which is the one to cite for that unit. `coverage` lists the meetings whose TDoc text is indexed, so an empty
result is a real "nothing found in these meetings".

Evidence rules: a passage from a contribution is its source companies' proposal, not an agreement. Use
list_meeting_decisions for what was agreed, and get_tdoc to read a whole TDoc.

Errors: 400 `invalid_parameter`, 409 `organization_ambiguous` (candidates returned), 502
`search_unavailable`.

## Request body

- TdocSearchRequest
  - `query` string, required: What the TDocs should discuss, in plain words or exact terms, e.g. 'timing advance pre-compensation for NTN', 'ta-CommonDrift', 'R2-2008188'.
  - `filters` TdocSearchFilters: Catalog filters, the same fields as GET /tdocs. Comma-separated values match any of them.
    - `source` string, nullable: Company name, alias, or org_id, e.g. 'Mavenir' or 'huawei'. Matches TDocs where it is a submitter or co-submitter.
    - `meeting` string, nullable: Meeting IDs, e.g. 'R1-126' or 'RAN1#126'.
    - `group` string, nullable: Groups, e.g. 'R1', 'RAN2', 'S2'.
    - `agenda_item` string, nullable: Agenda items; '10.7' also matches 10.7.1.
    - `doc_kind` string, nullable: Kinds: contribution, pcr, cr, draft_cr, cr_pack, summary, way_forward, ls_in, ls_out, report, chair_notes, agenda, wid, sid, status_report, work_plan, draft_spec.
    - `status` string, nullable: Register statuses, e.g. 'agreed,approved' or 'noted'. Joined from the register at query time.
    - `work_item` string, nullable: Work item code, e.g. 'NR_NTN_Ph3-Core'.
    - `spec` string, nullable: Target spec number, e.g. '38.213'.
    - `release` string, nullable: Release, e.g. 'Rel-20'.
    - `since` string, nullable: Meetings starting on or after this date (YYYY-MM-DD).
    - `until` string, nullable: Meetings starting on or before this date (YYYY-MM-DD).
  - `unit_types` string[], nullable: Only chunks holding these units: 'proposal', 'observation', or 'body' (text outside numbered proposals and observations).
  - `rerank_top_k` integer: Results to return after reranking.
  - `max_per_tdoc` integer: At most this many passages from one TDoc. Use 1 for a list of distinct TDocs.
  - `include_text` boolean: Include each passage's text.
  - `rerank` boolean: Rerank candidates for precision. Leave true.

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/3gppscout/apis/3gpp-scout-api.md) · [All operations](https://skmtc.dev/3gppscout/apis/3gpp-scout-api/llms.txt) · [OpenAPI document](https://skmtc.dev/3gppscout/apis/3gpp-scout-api/revisions/60bd6896e5b9?raw)
