Human Phenotype Ontology API
Free Human Phenotype Ontology API with no key: phenotype term definitions, synonyms, cross-references to SNOMED and UMLS, translations and disease associations.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Human Phenotype Ontology API?
The Human Phenotype Ontology API, hosted by the Jackson Laboratory, is a free key-free service returning HPO terms with their definitions, curator comments, synonyms, descendant counts, cross-references to SNOMED CT and UMLS, literature references and community translations.
HPO gives clinical genetics a shared vocabulary for describing what is observed in a patient — around 18,000 terms covering phenotypic abnormalities, each with a precise definition and a place in a hierarchy. `HP:0001250` means seizure to every tool that speaks HPO, which is what makes automated phenotype-driven diagnosis possible at all. The API exposes term records directly, including the `descendantCount` that tells you how broad a term is: 346 descendants under Seizure means it is a high-level concept rather than a specific finding.
Two details reward attention. The `comment` field carries curator guidance that often resolves genuine ambiguity — the seizure record explains that recurrent febrile seizures are deliberately not described as epilepsy — and this nuance appears nowhere else. And `translations` carry a `status` of `OFFICIAL` or `CANDIDATE`; candidate translations are community submissions awaiting review, so displaying one to a clinician without that caveat is unwise. The ontology describes phenotypes; it does not diagnose, and mapping a patient's findings to HPO terms remains a clinical judgement.
Quick facts
- Base URL
https://ontology.jax.org/api- Authentication
- No API key or account. HPO is released under a permissive licence allowing free use including commercially, with attribution; the SNOMED CT identifiers it cross-references remain subject to SNOMED's own affiliate licensing.
- Rate limit
- No published limit. Term records are static between ontology releases, so cache them.
- Pricing
- Free. HPO itself is openly licensed with attribution; check the HPO licence page before redistributing derived terminology.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Human Phenotype Ontology API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch the HPO term record for Seizure
GET https://ontology.jax.org/api/hp/terms/HP%3A0001250
curl 'https://ontology.jax.org/api/hp/terms/HP%3A0001250' \
-H 'Accept: application/json'const res = await fetch("https://ontology.jax.org/api/hp/terms/HP%3A0001250", {
headers: {
"Accept": "application/json",
},
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
headers = {
"Accept": "application/json",
}
res = requests.get("https://ontology.jax.org/api/hp/terms/HP%3A0001250", headers=headers, timeout=20)
res.raise_for_status()
print(res.json()){
"id": "HP:0001250",
"name": "Seizure",
"definition": "A seizure is an intermittent abnormality of nervous system physiology characterized by a transient occurrence of signs and/or symptoms due to abnormal excessive or synchronous neuronal activity in the brain.",
"comment": "A type of electrographic seizure has been proposed in neonates which does not have a clinical correlate, it is electrographic only. The term epilepsy is not used to describe recurrent febrile seizures. Epilepsy presumably reflects an abnormally reduced seizure threshold.",
"descendantCount": 346,
"synonyms": [
"Epileptic seizure",
"Seizures",
"Epilepsy"
],
"xrefs": [
"SNOMEDCT_US:128613002",
"SNOMEDCT_US:246545002",
"SNOMEDCT_US:313307000",
"SNOMEDCT_US:84757009",
"SNOMEDCT_US:91175000",
"UMLS:C0014544",
"UMLS:C0036572"
],
"publicationReferences": [
"PMID:15816939"
],
"translations": [
{
"language": "ES",
"name": "Convulsiones",
"definition": "",
"status": "CANDIDATE"
},
{
"language": "IT",
"name": "Crisi epilettica",
"definition": "",
"status": "CANDIDATE"
},
{
"language": "DE",
"name": "Krampfanfall",
"definition": "",
"status": "CANDIDATE"
},
{
"language": "JA",
"name": "発作",
"definition": "",
"status": "OFFICIAL"
},
{
"language": "FR",
"name": "Epilépsie",
"definition": "",
"status": "CANDIDATE"
},
{
"language": "NL",
"name": "Plotselinge aanvallen",
"Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | path segment | Required | HPO term identifier. The colon must be URL-encoded as %3A. HP%3A0001250 |
(endpoint) /hp/terms | path | Optional | Search terms by name or synonym rather than fetching one by id. /api/hp/terms?q=seizure |
(endpoint) /hp/terms/{id}/genes | path | Optional | Genes associated with the phenotype. /api/hp/terms/HP%3A0001250/genes |
(endpoint) /hp/terms/{id}/diseases | path | Optional | Diseases in which the phenotype has been observed. /api/hp/terms/HP%3A0001250/diseases |
(endpoint) /network/annotation/{id} | path | Optional | Combined annotation view linking the term to genes and diseases. /api/network/annotation/HP%3A0001250 |
Response fields
idstring- The HPO identifier, in `HP:` prefixed form.
namestring- Preferred label for the phenotype.
definitionstring- Formal textual definition written by HPO curators.
commentstring- Curator guidance on usage and boundary cases. Frequently the most clinically useful field in the record.
descendantCountinteger- How many terms sit beneath this one. High counts mark broad parent concepts rather than specific findings.
synonyms[]array- Alternative labels — the seizure record lists Epileptic seizure, Seizures and Epilepsy.
xrefs[]array- Cross-references to SNOMEDCT_US and UMLS concept identifiers, prefixed by vocabulary.
publicationReferences[]array- PubMed identifiers supporting the term definition.
translations[]array- Localised names with a `status` of `OFFICIAL` or `CANDIDATE`. Candidates are unreviewed community submissions.
What you can build with the Human Phenotype Ontology API
- Build a phenotype picker for a clinical genetics intake form
- Map free-text clinical findings onto standard phenotype terms
- Cross-reference HPO terms to SNOMED CT or UMLS concepts
- Display localised phenotype names in a non-English interface
- Explore which genes and diseases are linked to a given phenotype
Common errors and how to fix them
404
The colon in the identifier was not encoded.
Fix: `HP:0001250` must be sent as `HP%3A0001250`. Unencoded colons are the single most common failure here.
Obsolete term returned
HPO retires and merges terms between releases.
Fix: Check for obsolescence markers and re-map stored identifiers when you upgrade ontology versions; do not assume an id is permanent.
Unreviewed translation displayed
`status` was not checked.
Fix: Filter `translations` to `OFFICIAL` before showing localised labels in a clinical context.
Broad term used as a specific finding
High-level concepts have thousands of descendants.
Fix: Read `descendantCount`. Annotating a patient with a term that has 346 descendants conveys far less than picking a leaf term.
Human Phenotype Ontology API — frequently asked questions
Is the HPO API free to use?
Yes, free with no key or registration. HPO is openly licensed for free use including commercial use with attribution. Note that the SNOMED CT identifiers in `xrefs` are cross-references only — using SNOMED content itself requires an affiliate licence.
What is HPO used for?
It provides a standard vocabulary for describing phenotypic abnormalities, which lets tools compare a patient's observed features against known disease profiles computationally. It is a description language, not a diagnostic system — the clinical interpretation stays with clinicians.
Why do I get a 404 for a term id that exists?
Almost always because the colon was not URL-encoded. Send `HP%3A0001250` rather than `HP:0001250` and the lookup resolves.
Are the translations reliable?
Only the ones marked `OFFICIAL`. Entries with a `CANDIDATE` status are community-submitted and awaiting curator review, so they should not be presented as authoritative labels.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
Text Compare
Compare two texts online free and highlight every difference. A private text comparison tool that finds matches and changes right in your browser.
Human Phenotype Ontology is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.