Guides › APIs and bioinformatics tools
HLA-Verify verdicts explained: valid, group, deleted, hallucinated
HLA-Verify gives every allele-shaped token one of seven verdicts against the pinned IPD-IMGT/HLA release: valid, group, deleted, hallucinated, fabricated_group, mac_code or out_of_scope. Flags such as deprecated_name or null_allele add detail without changing the verdict, and a single clean field summarises the whole text.
The verdicts are designed so that each one maps to an action. This guide lists them with real examples, all produced by the engine at release 3.66.0, and says what to do with each.
The seven verdicts
| Verdict | Meaning | Example | Counts against clean? |
|---|---|---|---|
valid | Assigned in this release, or a valid lower-resolution prefix of assigned names | A*02:01:01:01, A*02:01 | No |
group | A real G or P group name in this release | A*01:01P, A*02:01:01G | No |
deleted | Was assigned once, no longer current; a successor is given when there is one | A*02:01:14Q | Yes |
hallucinated | No such name in any release back to 1.05.0 | DQB1*05:03:26:99, B*9999 | Yes |
fabricated_group | Shaped like a G or P group, but no such group exists | A*02:99:01G | Yes |
mac_code | A multiple allele code, reporting shorthand for a list | A*02:AB | No, counted separately |
out_of_scope | A name from outside IPD-IMGT/HLA, such as a KIR allele | KIR2DL1*001 | No, counted separately |
clean is true only when the deleted, hallucinated and fabricated-group counts are all zero. Multiple allele codes and out-of-scope names have their own counts, so a report full of them is never silently called clean with those tokens unchecked, but they do not make it dirty either.
valid
valid covers two cases the naming rules treat differently, so read the details. A*02:01:01:01 is one assigned allele. A*02:01 is a valid two-field prefix of 519 assigned alleles in release 3.66.0. Both are correct names; they carry different amounts of information.
Several reporting forms are also valid, because they stand for a current name, but each carries a flag so nothing is converted silently:
| Token | Flag | Read as |
|---|---|---|
DRB1*1501, B*5701 | deprecated_name | DRB1*15:01, B*57:01 (pre-2010 spelling) |
Cw*07:02 | deprecated_name | C*07:02 (old HLA-C prefix) |
A*02:XX | xx_code | The A*02 group: first field only |
A*02:01g | lg_notation | A*02:01 |
A*24:09N | null_allele | Current, and not expressed |
Act on the flags, not just the verdict. A deprecated_name is correct data in an old format: convert it and keep the original. An xx_code carries first-field resolution only and cannot be counted at allele level. A null_allele should stay visible to whoever reads the typing next.
group
A G group is a set of alleles identical over the exons encoding the peptide-binding domains; a P group, a set encoding the same protein there. A group verdict means the name is a real group in this release, nothing more. It does not say which allele is present, and the membership is the release's: A*02:01:01G has 554 members in 3.66.0, including null alleles. Store group names with the release.
deleted
A deleted name was real in an earlier release. Most come with a successor:
A*02:01:14Q: successorA*02:01:14(theQwas removed in August 2026);C*04:09N: successorC*04:09L(suffix changed in December 2024);B*07:02:06: successorB*07:436(shown to be part of a newly named allele, July 2021).
Some have none: A*2401 was withdrawn in 1995 as a sequence error. Follow the successor when there is one, keep the original string, and do not substitute a similar-looking name when there is not. The deleted alleles guide covers the reasons.
hallucinated
hallucinated means the name appears in no IPD-IMGT/HLA release back to 1.05.0. The name is well formed; it simply never existed. Typical shapes:
- an extra field on a real name, such as
DQB1*05:03:26:99(DQB1*05:03:26is assigned); - a plausible but unused number, such as
B*9999; - an invented locus, such as
P*24:02.
Despite the name, the verdict says only that the name does not exist, not where it came from. A typo in a hand-entered report gets the same verdict. Either way it is a data error that needs a person. The guide to fabricated names covers the patterns.
Legacy prefixes do not rescue an invented name: the API reference notes that a made-up Cw*9999 is still hallucinated, even though Cw*07:02 is valid.
fabricated_group
fabricated_group is the group-shaped version of the same problem: a token with a G or P suffix that is not a group in this release, such as A*02:99:01G or B*07:02:99G. Treat it like a hallucinated name. Do not reduce it to a two-field name and carry on; the group it claims to be does not exist.
mac_code and out_of_scope
mac_code marks multiple allele codes such as A*02:AB: letters in the second field standing for a list of alleles. HLA-Verify recognises them but does not expand them, so the typing behind one is unchecked. Expand it with the code definitions, or treat the locus as unresolved.
out_of_scope marks names from gene families outside IPD-IMGT/HLA, currently KIR names such as KIR2DL1*001. They are surfaced, so a report that lists KIR typing next to HLA typing is not flagged dirty for the KIR names, and they are not checked.
The response is tied to a release
Every response includes release. A verdict is only true for that release: a name valid today can be deleted after the next quarterly release, and a G group's membership can change. Store the release with every verdict you keep. GET /healthz reports the current pin, and the API guide lists the other calls.
Frequently asked questions
What does hallucinated mean in HLA-Verify?
The name does not appear in any IPD-IMGT/HLA release back to 1.05.0. It may be a typo or a fabricated name; either way it is not a real allele name.
Is a deprecated_name flag an error?
No. It marks a correct name written in an older format, such as DRB1*1501 for DRB1*15:01. The verdict is valid; convert it and keep the original.
Why doesn't a multiple allele code make a report unclean?
Because it is legitimate reporting shorthand. It is counted separately as mac_code so the unchecked typing is visible, but it is not treated as an invented or retired name.
What is the difference between deleted and hallucinated?
A deleted name existed in an earlier release and often has a successor. A hallucinated name never existed in any release.
Sources
- https://hlaverify.com/api
- https://github.com/ANHIG/IMGTHLA/blob/Latest/README.md
- https://hla.alleles.org/pages/p&g_groups/g_groups/
- https://hla.alleles.org/pages/nomenclature/nomenclature_update_april_2010/
HLA-Verify is a research-and-evaluation tool for nomenclature and reference-release validation. It is not a medical device and this guide is not clinical advice. Send allele names, never patient identifiers.