Skip to main content
curl -X POST "https://api.omophub.com/v1/search/bulk" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "searches": [
      {
        "search_id": "s1",
        "query": "diabetes"
      },
      {
        "search_id": "s2",
        "query": "hypertension"
      },
      {
        "search_id": "s3",
        "query": "cardiac catheterization"
      }
    ]
  }'
{
  "success": true,
  "data": [
    {
      "search_id": "s1",
      "query": "diabetes",
      "status": "completed",
      "results": [
        {
          "concept_id": 201826,
          "concept_name": "Type 2 diabetes mellitus",
          "concept_code": "44054006",
          "vocabulary_id": "SNOMED",
          "domain_id": "Condition",
          "concept_class_id": "Clinical Finding",
          "standard_concept": "S",
          "search_score": 0.95
        },
        {
          "concept_id": 4000678,
          "concept_name": "Diabetes mellitus",
          "concept_code": "73211009",
          "vocabulary_id": "SNOMED",
          "domain_id": "Condition",
          "concept_class_id": "Clinical Finding",
          "standard_concept": "S",
          "search_score": 0.92
        }
      ],
      "duration": 856
    },
    {
      "search_id": "s2",
      "query": "hypertension",
      "status": "completed",
      "results": [
        {
          "concept_id": 320128,
          "concept_name": "Essential hypertension",
          "concept_code": "59621000",
          "vocabulary_id": "SNOMED",
          "domain_id": "Condition",
          "concept_class_id": "Clinical Finding",
          "standard_concept": "S",
          "search_score": 0.98
        },
        {
          "concept_id": 316866,
          "concept_name": "Hypertensive disorder",
          "concept_code": "38341003",
          "vocabulary_id": "SNOMED",
          "domain_id": "Condition",
          "concept_class_id": "Clinical Finding",
          "standard_concept": "S",
          "search_score": 0.94
        }
      ],
      "duration": 1034
    },
    {
      "search_id": "s3",
      "query": "cardiac catheterization",
      "status": "completed",
      "results": [
        {
          "concept_id": 4006969,
          "concept_name": "Cardiac catheterization",
          "concept_code": "41976001",
          "vocabulary_id": "SNOMED",
          "domain_id": "Procedure",
          "concept_class_id": "Procedure",
          "standard_concept": "S",
          "search_score": 1.0
        },
        {
          "concept_id": 4139525,
          "concept_name": "Left heart cardiac catheterization",
          "concept_code": "309814006",
          "vocabulary_id": "SNOMED",
          "domain_id": "Procedure",
          "concept_class_id": "Procedure",
          "standard_concept": "S",
          "search_score": 0.91
        }
      ],
      "duration": 957
    }
  ],
  "meta": {
    "request_id": "req_bulk_search_123",
    "timestamp": "2024-01-15T10:30:00Z",
    "vocab_release": "2025.2"
  }
}

Overview

This endpoint allows you to submit multiple search queries in a single request, enabling efficient batch processing of search operations. It’s ideal for applications that need to search for many terms simultaneously, such as data processing pipelines, bulk concept mapping, or batch validation workflows. Each query uses full-text search with a default limit of 20 results per query. Up to 50 queries can be submitted per request.
Each query returns a fixed maximum of 20 results. Pagination, filtering by vocabulary/domain, and alternative search modes are not supported on this endpoint. If you need paginated results or advanced filtering, use the Basic Search or Advanced Search endpoints instead.

Request Body

searches
array
required
Array of search query objects (1-50 items)

Query Parameters

vocab_release
string
Specific vocabulary release version (defaults to latest)

Response

success
boolean
Indicates if the request was successful
data
array
Array of search results, one per query
meta
object
curl -X POST "https://api.omophub.com/v1/search/bulk" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "searches": [
      {
        "search_id": "s1",
        "query": "diabetes"
      },
      {
        "search_id": "s2",
        "query": "hypertension"
      },
      {
        "search_id": "s3",
        "query": "cardiac catheterization"
      }
    ]
  }'
{
  "success": true,
  "data": [
    {
      "search_id": "s1",
      "query": "diabetes",
      "status": "completed",
      "results": [
        {
          "concept_id": 201826,
          "concept_name": "Type 2 diabetes mellitus",
          "concept_code": "44054006",
          "vocabulary_id": "SNOMED",
          "domain_id": "Condition",
          "concept_class_id": "Clinical Finding",
          "standard_concept": "S",
          "search_score": 0.95
        },
        {
          "concept_id": 4000678,
          "concept_name": "Diabetes mellitus",
          "concept_code": "73211009",
          "vocabulary_id": "SNOMED",
          "domain_id": "Condition",
          "concept_class_id": "Clinical Finding",
          "standard_concept": "S",
          "search_score": 0.92
        }
      ],
      "duration": 856
    },
    {
      "search_id": "s2",
      "query": "hypertension",
      "status": "completed",
      "results": [
        {
          "concept_id": 320128,
          "concept_name": "Essential hypertension",
          "concept_code": "59621000",
          "vocabulary_id": "SNOMED",
          "domain_id": "Condition",
          "concept_class_id": "Clinical Finding",
          "standard_concept": "S",
          "search_score": 0.98
        },
        {
          "concept_id": 316866,
          "concept_name": "Hypertensive disorder",
          "concept_code": "38341003",
          "vocabulary_id": "SNOMED",
          "domain_id": "Condition",
          "concept_class_id": "Clinical Finding",
          "standard_concept": "S",
          "search_score": 0.94
        }
      ],
      "duration": 1034
    },
    {
      "search_id": "s3",
      "query": "cardiac catheterization",
      "status": "completed",
      "results": [
        {
          "concept_id": 4006969,
          "concept_name": "Cardiac catheterization",
          "concept_code": "41976001",
          "vocabulary_id": "SNOMED",
          "domain_id": "Procedure",
          "concept_class_id": "Procedure",
          "standard_concept": "S",
          "search_score": 1.0
        },
        {
          "concept_id": 4139525,
          "concept_name": "Left heart cardiac catheterization",
          "concept_code": "309814006",
          "vocabulary_id": "SNOMED",
          "domain_id": "Procedure",
          "concept_class_id": "Procedure",
          "standard_concept": "S",
          "search_score": 0.91
        }
      ],
      "duration": 957
    }
  ],
  "meta": {
    "request_id": "req_bulk_search_123",
    "timestamp": "2024-01-15T10:30:00Z",
    "vocab_release": "2025.2"
  }
}

Usage Examples

Search multiple terms simultaneously:
curl -X POST "https://api.omophub.com/v1/search/bulk" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "searches": [
      {"search_id": "s1", "query": "diabetes"},
      {"search_id": "s2", "query": "hypertension"},
      {"search_id": "s3", "query": "asthma"}
    ]
  }'
Search for related terms to find overlapping concepts:
curl -X POST "https://api.omophub.com/v1/search/bulk" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "searches": [
      {"search_id": "s1", "query": "heart attack"},
      {"search_id": "s2", "query": "myocardial infarction"},
      {"search_id": "s3", "query": "MI"}
    ]
  }'

High-Volume Processing

Process larger batches from a file:
curl -X POST "https://api.omophub.com/v1/search/bulk" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d @bulk_queries.json
Example bulk_queries.json:
{
  "searches": [
    {"search_id": "q1", "query": "diabetes mellitus"},
    {"search_id": "q2", "query": "essential hypertension"},
    {"search_id": "q3", "query": "chronic kidney disease"},
    {"search_id": "q4", "query": "atrial fibrillation"},
    {"search_id": "q5", "query": "congestive heart failure"}
  ]
}

Optimization Strategies

Query Grouping

  • Batch Size: Optimal batch size is 10-50 queries per request
  • Bulk Mode: The bulk_mode parameter (default true) enables optimized query execution for better throughput
  • Result Limit: Each query returns up to 20 results

Performance Tips

  • Use concise, specific search terms for faster results
  • Split very large query sets into multiple requests of 50 queries each
  • Use the search_id field to correlate results with your source data

Error Handling

  • Each query in the batch is processed independently
  • Failed queries return status: "failed" with an error message
  • Successful queries are not affected by failures in other queries