Skip to main content
POST
Search OMOP concepts

Authorizations

X-API-Key
string
header
required

API key for organization authentication. Obtain from the organization settings or API key management endpoint.

Query Parameters

profile
enum<string>

Profile preset that bundles sensible defaults for a use case. mapping — find equivalent codes in the requested vocabularies (2-hop graph traversal, vocab-filtered, no bridges). explore — show the full graph neighborhood (3-hop, includes SNOMED bridge concepts, no vocab filter, no quality gate). hybrid — plain text search, no graph. Individual params in the request body override profile defaults.

Available options:
explore,
hybrid,
mapping
q
string

Search query string (e.g. 'diabetes', 'appendectomy'). Can also be supplied in the request body as query (one of q or query is required).

response_format
enum<string>
default:json

Response format. 'json' (default) returns structured JSON. 'llm' returns compact markdown tables (text/markdown) optimized for LLM consumption. When 'llm', the response body is markdown text rather than the JSON schema shown below.

Available options:
json,
llm
search_mode
enum<string>
default:hybrid

Search strategy. hybrid uses RRF+reranking (dense + sparse fusion); graph uses OMOP graph traversal for cross-vocabulary and hierarchical expansion. Overridden by the profile preset when both are set.

Available options:
graph,
hybrid

Body

query
string
required

Search query (e.g., 'diabetes', 'appendectomy')

Minimum string length: 1
vocabularies
string[]

List of vocabularies to search (e.g., ['ICD10', 'SNOMED']). If not provided, searches all.

Minimum string length: 1
domain_id
string

Filter by domain (e.g., 'Condition', 'Procedure')

Minimum string length: 1
top_k
integer
default:10

Number of results to return (1-100)

Required range: 1 <= x <= 100
find_relationship
boolean
default:false

If true, fetch 'Is a' relationships (parent concepts) for each result

relationship_filters
object

Additional filters for ConceptRelationship query. Allowed keys: concept_id_2__concept_class_id, concept_id_2__concept_class_id__in, concept_id_2__vocabulary_id, concept_id_2__vocabulary_id__in, concept_id_2__domain_id, concept_id_2__domain_id__in

search_type
enum<string>
default:websearch

FTS search type: plain (simple word match), phrase (exact phrase), raw (tsquery syntax), websearch (web-style with +/-)

  • plain - plain
  • phrase - phrase
  • raw - raw
  • websearch - websearch
Available options:
plain,
phrase,
raw,
websearch
language
string
default:english

PostgreSQL text search configuration (e.g., 'english', 'simple', 'french')

Minimum string length: 1
use_search_rank
boolean
default:true

Use SearchRank for ordering FTS results by relevance

rank_normalization
integer
default:0

SearchRank normalization flags (0-31). See PostgreSQL docs for details.

min_relevance
number<double> | null
default:-2

Cross-encoder logit threshold. Results scoring below this are dropped before being returned. ms-marco-MiniLM-L-6-v2 produces logits roughly in [-15, +15]; ~0 is the irrelevant/relevant boundary. Default -2.0 is permissive but blocks the 'no good match anywhere' case. Pass null to disable filtering and always return up to top_k results regardless of quality.

include_bridges
boolean
default:false

Graph mode only. When True, surface the SNOMED-style standard 'bridge' concepts used for 2-hop Maps-to traversal (each marked is_bridge: true in the response). Useful for showing the user why a non-standard code was suggested. Default False.

filter_to_input_vocab
boolean
default:true

Graph mode only. When True (default), restrict results to the vocabularies in the vocabularies filter. Set False to allow cross-vocab graph neighbors (e.g. for an LLM-agent profile).

Response

Search results with metadata

results
object[]
required
metadata
object
required