Link entities (batch)
curl --request POST \
--url https://api.eka.care/med-link/nel/link/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"queries": [
"fever",
"headache"
],
"ontology": "snomed",
"version": "20250401_extended",
"top_k": 2
}
'import requests
url = "https://api.eka.care/med-link/nel/link/batch"
payload = {
"queries": ["fever", "headache"],
"ontology": "snomed",
"version": "20250401_extended",
"top_k": 2
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
queries: ['fever', 'headache'],
ontology: 'snomed',
version: '20250401_extended',
top_k: 2
})
};
fetch('https://api.eka.care/med-link/nel/link/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eka.care/med-link/nel/link/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'queries' => [
'fever',
'headache'
],
'ontology' => 'snomed',
'version' => '20250401_extended',
'top_k' => 2
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eka.care/med-link/nel/link/batch"
payload := strings.NewReader("{\n \"queries\": [\n \"fever\",\n \"headache\"\n ],\n \"ontology\": \"snomed\",\n \"version\": \"20250401_extended\",\n \"top_k\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eka.care/med-link/nel/link/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"queries\": [\n \"fever\",\n \"headache\"\n ],\n \"ontology\": \"snomed\",\n \"version\": \"20250401_extended\",\n \"top_k\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eka.care/med-link/nel/link/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"queries\": [\n \"fever\",\n \"headache\"\n ],\n \"ontology\": \"snomed\",\n \"version\": \"20250401_extended\",\n \"top_k\": 2\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"request_id": "e4b280cf-40a1-4a83-9f25-f7f07f3766ed",
"query": "fever",
"query_breakdown": null,
"ontology": "snomed",
"version": "20250401_extended",
"index_name": "snomed_20250401_extended_c88b15811956d4fcb54da9ae_1bfcc90540_pg",
"model_version": "c88b15811956d4fcb54da9ae6d14a733ac90e7a7",
"results": [
{
"term_id": "386661006",
"term_name": "Febrile",
"score": 0.89858478307724,
"is_linked": true,
"metadata": {
"semantic_tag": "finding",
"is_core": true,
"source": "snomed_ct_20250401_extended",
"language": "en",
"script": "latin"
}
}
]
},
{
"request_id": "e4b280cf-40a1-4a83-9f25-f7f07f3766ed",
"query": "headache",
"query_breakdown": null,
"ontology": "snomed",
"version": "20250401_extended",
"index_name": "snomed_20250401_extended_c88b15811956d4fcb54da9ae_1bfcc90540_pg",
"model_version": "c88b15811956d4fcb54da9ae6d14a733ac90e7a7",
"results": [
{
"term_id": "25064002",
"term_name": "Headache",
"score": 0.9999999403953606,
"is_linked": true,
"metadata": {
"semantic_tag": "finding",
"is_core": true,
"source": "snomed_ct_20250401_extended",
"language": "en",
"script": "latin"
}
}
]
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Medical Entity Codification
Link Entities (Batch)
Links up to 5 free-text entities in a single call. All queries in a batch share the same ontology, version, top_k and metadata. The response contains one result block per query, in request order.
POST
/
med-link
/
nel
/
link
/
batch
Link entities (batch)
curl --request POST \
--url https://api.eka.care/med-link/nel/link/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"queries": [
"fever",
"headache"
],
"ontology": "snomed",
"version": "20250401_extended",
"top_k": 2
}
'import requests
url = "https://api.eka.care/med-link/nel/link/batch"
payload = {
"queries": ["fever", "headache"],
"ontology": "snomed",
"version": "20250401_extended",
"top_k": 2
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
queries: ['fever', 'headache'],
ontology: 'snomed',
version: '20250401_extended',
top_k: 2
})
};
fetch('https://api.eka.care/med-link/nel/link/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eka.care/med-link/nel/link/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'queries' => [
'fever',
'headache'
],
'ontology' => 'snomed',
'version' => '20250401_extended',
'top_k' => 2
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eka.care/med-link/nel/link/batch"
payload := strings.NewReader("{\n \"queries\": [\n \"fever\",\n \"headache\"\n ],\n \"ontology\": \"snomed\",\n \"version\": \"20250401_extended\",\n \"top_k\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eka.care/med-link/nel/link/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"queries\": [\n \"fever\",\n \"headache\"\n ],\n \"ontology\": \"snomed\",\n \"version\": \"20250401_extended\",\n \"top_k\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eka.care/med-link/nel/link/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"queries\": [\n \"fever\",\n \"headache\"\n ],\n \"ontology\": \"snomed\",\n \"version\": \"20250401_extended\",\n \"top_k\": 2\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"request_id": "e4b280cf-40a1-4a83-9f25-f7f07f3766ed",
"query": "fever",
"query_breakdown": null,
"ontology": "snomed",
"version": "20250401_extended",
"index_name": "snomed_20250401_extended_c88b15811956d4fcb54da9ae_1bfcc90540_pg",
"model_version": "c88b15811956d4fcb54da9ae6d14a733ac90e7a7",
"results": [
{
"term_id": "386661006",
"term_name": "Febrile",
"score": 0.89858478307724,
"is_linked": true,
"metadata": {
"semantic_tag": "finding",
"is_core": true,
"source": "snomed_ct_20250401_extended",
"language": "en",
"script": "latin"
}
}
]
},
{
"request_id": "e4b280cf-40a1-4a83-9f25-f7f07f3766ed",
"query": "headache",
"query_breakdown": null,
"ontology": "snomed",
"version": "20250401_extended",
"index_name": "snomed_20250401_extended_c88b15811956d4fcb54da9ae_1bfcc90540_pg",
"model_version": "c88b15811956d4fcb54da9ae6d14a733ac90e7a7",
"results": [
{
"term_id": "25064002",
"term_name": "Headache",
"score": 0.9999999403953606,
"is_linked": true,
"metadata": {
"semantic_tag": "finding",
"is_core": true,
"source": "snomed_ct_20250401_extended",
"language": "en",
"script": "latin"
}
}
]
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}About this endpoint
POST /med-link/nel/link/batch links up to 5 free-text entities in a single
call. Every query in the batch shares the same ontology, version, top_k
and metadata.
The response results[] array contains one block per query, in request order —
each block has the same shape as a single
Link Entity response.
When to use it
- Coding several entities from the same document (e.g. all symptoms in a note).
- Reducing round-trips when the ontology and
metadataare identical.
Because
metadata is shared across the whole batch, group queries that need
different hints — especially LOINC tests with different units or specimens —
into separate batches, or use the single
Link Entity endpoint.Limits
| Constraint | Value |
|---|---|
| Queries per request | 1–5 |
top_k | 1–10 (default 5) |
Authorizations
Bearer access token issued by the Eka authorization flow. See Authorization.
Body
application/json
List of free-text entities to link (1–5).
Required array length:
1 - 5 elementsOntology name applied to every query in the batch.
Example:
"snomed"
Ontology version applied to every query in the batch.
Example:
"20250401_extended"
Number of candidate results to return per query.
Required range:
1 <= x <= 10Ontology-specific hints applied to every query in the batch.
Optional request ID. Generated automatically if omitted.
Response
One result block per query, in request order.
One NELResponse per query, in request order.
Show child attributes
Show child attributes
Was this page helpful?

