Search OMOP concepts (API)
Searches OMOP concepts across multiple medical vocabularies (ICD10, SNOMED, CPT4, etc.) with optional domain filtering. Returns matching concepts with metadata about the search.
Supports both JWT (Authorization: Bearer) and API key (X-API-Key) authentication.
Supported vocabularies: ICD10, ICD10CM, ICD10PCS, ICD9CM, ICD9Proc, SNOMED, CPT4, HCPCS, RxNorm, RxNorm Extension, OPCS4, DRG.
A search with no vocabularies filter scans ICD10, ICD10CM, ICD10PCS, ICD9CM, ICD9Proc, SNOMED, CPT4, HCPCS, RxNorm, RxNorm Extension. DRG, OPCS4 are supported but must be requested by name.
Supported domains: Condition, Procedure, Drug, Measurement, Observation, Device, Specimen.
Authorizations
API key for organization authentication. Obtain from the organization settings or API key management endpoint.
Query Parameters
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.
explore, hybrid, mapping 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. '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.
json, llm 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.
graph, hybrid Body
Search query (e.g., 'diabetes', 'appendectomy')
1List of vocabularies to search (e.g., ['ICD10', 'SNOMED']). If not provided, searches all.
1Filter by domain (e.g., 'Condition', 'Procedure')
1Number of results to return (1-100)
1 <= x <= 100If true, fetch 'Is a' relationships (parent concepts) for each result
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
FTS search type: plain (simple word match), phrase (exact phrase), raw (tsquery syntax), websearch (web-style with +/-)
plain- plainphrase- phraseraw- rawwebsearch- websearch
plain, phrase, raw, websearch PostgreSQL text search configuration (e.g., 'english', 'simple', 'french')
1Use SearchRank for ordering FTS results by relevance
SearchRank normalization flags (0-31). See PostgreSQL docs for details.
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.
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.
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).

