Skip to main content
Search for concepts by text:

Parameters

Filter by Vocabulary

Restrict search to specific vocabularies:

Filter by Domain

Search within specific domains:

Filter by Concept Class

Search for specific concept classes:

Standard Concepts Only

Filter to standard concepts:

Search with Synonyms

Include concept synonyms in search:

Combined Filters

Autocomplete

Get suggestions as the user types: autocomplete() returns the list of suggestions directly - it reads suggestions out of the response envelope for you, so there is no ["suggestions"] key left to index. Each compact suggestion contains the matched suggestion, its type, and the number of matching concepts.
Autocomplete returns grouped typeahead values, not concept records. Use basic search when you need concept IDs and other concept metadata.

Pagination

Manual Pagination

Auto-Pagination Iterator

Iterate through all results automatically:
Use advanced search with additional filtering options and facets:

Advanced Search Parameters

Relationship Filters

Apply relationship-based filtering:
Search for concepts using natural language with neural embeddings. Semantic search understands meaning, not just keywords.

Semantic Search Parameters

Semantic Search Iterator

Iterate through all semantic search results with automatic pagination:
Search for multiple queries in a single API call (up to 50 queries). Much more efficient than individual calls when you have many terms to look up.

Bulk Search Parameters

With Shared Defaults

Search for multiple natural-language queries using neural embeddings in a single call (up to 25 queries).

Bulk Semantic Parameters

Find Similar Concepts

Find concepts similar to a reference concept or query. Provide exactly one of: concept_id, concept_name, or query.

Similar Concepts Parameters

include_invalid=True is supported only with algorithm="lexical". The embedding index contains valid concepts only, so combining it with semantic or hybrid returns a 400 naming the combination rather than silently ignoring the filter.

Pagination

similar() returns a pagination key alongside similar_concepts and search_metadata:
total_candidates counts the concepts that cleared similarity_threshold inside a bounded candidate pool — not the concepts evaluated. It and the pagination totals may therefore be lower bounds — similar["search_metadata"]["totals_are_lower_bound"] says when. Reachable depth is bounded at roughly 500 / page_size pages — the pool is a constant 500 candidates, so a score never changes with page_size; a page past the end returns an empty list with has_next: False, not an error.

Result Fields

Algorithm Comparison

hybrid fuses both signals as 0.7 x semantic + 0.3 x lexical. Every candidate is scored by that rule, with a signal neither retrieval established counting as 0. So a concept sharing no words with the query keeps only 0.7 x its semantic score, and one the embedding search did not return keeps only 0.3 x its lexical score — capping it at 0.3. Hybrid scores sit on a different scale from both semantic and lexical scores, and the same similarity_threshold is stricter than in either. Lower the threshold for hybrid, use semantic for conceptual matches that share no vocabulary, or use lexical for exact name and code matches: hybrid is not a superset of the other two. If the embedding service is unavailable it serves its lexical half and reports algorithm_used: "lexical" with degraded_from: "hybrid" rather than failing.

Async Similar Concepts