Infermedica provides an API (Application Programming Interface) for patient triage and preliminary medical diagnosis that can help you implement an intelligent symptom checker or an adaptive patient intake form for your health application.
If you send us basic patient health data (such as symptoms, risk factors, lab test results or demographics), our AI inference engine will analyze the data and provide you with a list of the most likely conditions and relevant questions to ask next. This is possible thanks to the sophisticated statistical algorithms we use to perform diagnostic reasoning.
If you would like to learn more about Infermedica, please contact us or schedule a live demo.
Please take a look at some of our case studies.
Every account is verified and approved by our team. We want to make sure all the information you provide is real and accurate. This approach allows us:
If you are a college student/researcher applying to access Infermedica API, please refer to the question: I am a student. Is there any special plan I can use?
The positive decision to grant you access to the free trial depends almost entirely on the information you enter in the request form. To get through the approval process smoothly, please make sure you’re providing:
If we have trouble verifying your information, we'll reach out to you.
There might be a few different reasons why your account hasn’t been approved:
You can always resubmit your form with the proper information. Please refer to: What are the requirements to get a free trial?
The first 2,000 requests are free. If you need more requests, please contact us. We’ll help you choose the most suitable plan for your needs.
You can upgrade to a paid plan, which allows you to complete the product, share it with the wider public, and commercialize it.
To get a pricing quote, contact us as sales@infermedica.com. We’ll respond within one business day and help you pick the most suitable plan.
If your account has been blocked/deleted, it’s probably due to a violation of the Infermedica API Terms & Conditions. The most common violations involve one of the following:
If your account is blocked or deleted, we will send you an email explaining why.
If you believe your account has been blocked/deleted by mistake, please contact support.
We are always happy to support ambitious educational projects. If you are a college student and you need more API calls, just contact us.
Remember, your developer portal profile should allow us to identify you as a legitimate college student. Please, make sure to:
Please be aware we support only projects complying with the above conditions.
Yes. You can build a symptom checker chatbot using Infermedica API. While you need to handle the conversation flow on your own, you can rely on our language technology to read symptoms mentioned in user messages. Also, our diagnostic endpoint will provide you with questions that the user may be asked directly (such as “Is your headache severe?”).
We have a special endpoint for reading symptoms mentioned in user messages (read more about the NLP endpoint). This service is currently available only for English.
If you are interested in this subject, we also recommend that you check our blog post about challenges when building a chatbot – Three challenges you’re going to face when building a chatbot.
Although the Infermedica API can be used in many different languages, our NLP endpoint currently only supports English.
Translating the API to a new language is easy and relatively fast. This would provide you with the basic information translated into your language (names of clinical concepts, questions about symptoms, categories of diseases, etc.) and allow you to use the diagnostic endpoint and search for concepts in your language.
To build a chatbot, you also need an engine for recognition of concept mentions in user messages. Currently, we only have support for English, but our long-term plans include supporting other languages, too. If you are interested in eventually building a chatbot in your language, we’ll be happy to discuss this with you – please contact us.
Yes, we have a special endpoint for reading observations mentioned in user messages. Read more about the NLP endpoint.
Yes! Our Natural Language Processing technology makes it possible to understand observations in user’s messages. We don’t provide voice recognition or text-to-speech, but you can use a commercially available platform, such as Alexa Voice Service, Baidu Deep Voice, Google Speech, or Yandex Speechkit.
We would be happy to spread the word about your voice application supported by Infermedica. If you wish, feel free to share!
The search endpoint assumes that you are looking for one particular observation — a symptom, risk factor or lab test — and returns a list of candidate matches. The whole input text is treated as a query for one observation. The behavior is customized for searching (possibly partial) user input. It is best for implementing search boxes in the UI.
The
/parse
endpoint gives you access to our NLP technology. You can use it to read a user’s own words, describing one or more observations. It is best suited for reading user messages sent to a chatbot or an unstructured description of the patient’s observations in health records. This endpoint returns a list of captured mentions of observations, each of them assigned with an id code and understood status (present or absent).
The most reliable way is to obtain them through the API itself (using the /symptoms
or /conditions
endpoint), as this will always fetch the current version.
The easiest way to obtain the list is to use the API Reference section in our developer portal (after you’ve successfully logged in) or to use Postman.
We also publish a list of symptoms and conditions so you can browse them easily.
English is the primary language of our medical database. In custom plans, however, we support multiple languages, including:
Please refer to our documentation to learn more about using our model in your language of choice.
Our platform also supports custom translations, so interested partners can provide their own translations using our dedicated translation panel. For more information contact us.
The content development process is divided into stages. These include defining the scope of the desired changes, eliciting expert knowledge based on the literature and other available sources, specifying test criteria, performing manual and automated acceptance tests, and finally deploying the verified model to the API. The process can be efficiently repeated with automated regression tests to guarantee the stability of the system.
You can read more about the knowledge base in the Medical content section of the API documentation.
If you would like to learn even more, please contact us or schedule a live demo and talk to us about it directly.
The knowledge base is nurtured by our team of doctors, who rely on respected literature, medical textbooks and publications. This process is also supported by the analysis of huge data sets to extract statistical relations and numerical approximations of diseases. You can read about the knowledge base in the Medical concepts section of the API documentation.
If you would like to learn even more, you can contact us or schedule a live demo.
Infermedica API is a language-independent, standard web service that can be easily integrated with any existing HTTP client using virtually all popular programming languages and frameworks.
The /diagnosis
endpoint returns a structure containing a few pieces of useful information. One of the items returned is the most relevant question given the current knowledge about the person being examined. This is the question we suggest asking the user unless you decide that enough questions have already been asked. This question has three possible types:
single
– a yes/no question about a single symptom (e.g. “Do you have a headache?”); when the user answers this type of question, you should send back all the evidence collected thus far, including the status of the symptom that has just been learned (present
, absent
or unknown
)
group_single
– a single-choice question about a group of related symptoms (e.g. “What is your body temperature?”); in the case of single-choice questions, it is sufficient to send only the answer chosen by the user (the ID of the answer with the present status), obviously together with the evidence collected in earlier stages
group_multiple
– a multiple-choice question about a group of related symptoms (e.g. “What is the character of your headache?”); any number of symptoms (including none) can be sent as present
; if you are sure that the others should be interpreted as absent
, please send them explicitly as such; you may also send some symptoms as unknown
to prevent getting questions about them (this makes sense if the user didn’t answer conclusively).
If you are getting error 403 in response to your API call, it’s most likely because you have exceeded your monthly limit of API requests. Go to “How can I continue using the API if I have exceeded the monthly limit?”
You can learn more about Infermedica API errors. If that doesn’t help, please contact support.
When using the /diagnosis
endpoint, you can disable group questions to make sure the API returns only single questions by sending "disable_groups": true
in "extras"
. Here is an example:
{
"age": 50,
"sex": "male",
"evidence": [
{"id": "s_98", "choice_id": "present"}
],
"extras": {"disable_groups": true},
}
This is not available directly in the current API version, but you could compute BMI on your side and add one of the corresponding BMI-related risk factors to the evidence about the current case and send it along when calling /diagnosis
.
There are two such risk factors:
p_6
– BMI below 19
p_7
– BMI over 30
If the computed value of the person’s BMI exceeds 30, add "p_7": "present"
. If the value is lower than 19, add "p_6": "present"
. If the value falls within the healthy range (19 < BMI < 30), it’s best to add both of these risk factors as absent
to prevent the API from asking about BMI.
The endpoint gives access to our in-house Natural Language Processing technology. It allows you to capture symptoms and risk factors mentioned in unstructured text descriptions, such as user messages sent to a chatbot or a text description extracted from a medical record.
Our language technology is also able to understand some typical ways of expressing negation (e.g. “I don’t have a headache” or “lymph nodes are not enlarged”).
Each captured mention is assigned an ID code and a status (present
or absent
), which makes it compatible with our diagnostic endpoint. This way you can send the captured evidence directly for assessment and learn current predictions, the triage level, and what question to ask next (not unlike differential diagnosis).
The service works best with simple phrases or sentences (such as “I have a terrible headache and back pain” or “feeling sick”). It may be unable to understand complex stories (descriptions of accidents, complications, and in general descriptions of series of events whose mutual relationship in time is relevant).
Our technology is based on automated syntactic analysis and matching techniques tailored to the medical domain. We are constantly improving the quality of this service.
We’re doing all we can to make the service as accurate as possible, but no NLP technology is perfect, including ours. The service works best with simple phrases and sentences (such as “I have a sore throat” or “no vomiting but feeling sick”). It’s not good at understanding complex stories, in particular descriptions of accidents or complications after diseases.
If you feel that it’s not working properly for a case that it should be able to handle, please report this to us via support@infermedica.com. While we can’t promise to understand every possible description correctly, we’re constantly improving the technology and such feedback is very important to us.
This is due to security measures. For all API calls containing less than three reported observations, the list of conditions will be limited to a single condition. For all calls with more than two observations (either present or absent), the API will return the full ranking of relevant conditions.
In all real life situations, you want to collect more than two pieces of evidence (e.g. two symptoms, two answers), so we believe that this API behavior is not a limitation for any proper application.
If you didn’t find the answer you were looking for, please contact us.