Endpunkte der Bluttest API
Vollständige Referenz aller Kantesti Bluttest-API-Endpunkte mit Codebeispielen in mehreren Programmiersprachen.
Mit Stolz präsentieren wir drei DNA-Module für die Kantesti API. Die DNA-Test-Interpretation macht aus DNA-Rohdaten oder einem genetischen Befundbericht einen umfassenden genetischen Gesundheitsbericht, der DNA + Blut-Gesundheitsbericht verbindet ihn mit einem Bluttest, und der Supplement-Berater erstellt einen personalisierten Supplement-Plan mit den eigenen Produkten Ihrer Klinik. Zur Referenz der DNA Health API.
https://app.aibloodtestinterpret.com
Changelog
Verfolgen Sie API-Versionen, Updates und Migrationsinformationen. Verwenden Sie die empfohlenen Endpunkte für neue Integrationen.
Alle drei Updates aus dem Jahr 2026 wurden auf jede der unten aufgeführten API-Versionen angewendet. Versionsnummern und Endpunktpfade haben sich nicht geändert, sodass keine Migration erforderlich ist.
- 8. September 2026 KI-Modell-Update und plattformweite Verbesserungen
- 21. Juli 2026 Umfassende Verbesserungen und Fehlerbehebungen
- 8. Mai 2026 Umfassende Verbesserungen und Fehlerbehebungen
Aktuelle stabile Endpunkte
Diese Endpunkte werden für den Produktionseinsatz und neue Integrationen empfohlen.
| API | Endpunkt | Status |
|---|---|---|
| Bluttest-Analyse v12 | /api/v12/18-09-2026/analyze |
Empfohlen Neu 18.09.2026 |
| Bluttest-Analyse (Gesundheitsscore) v12 | /api/v12/health-score/analyze |
Empfohlen Neu 18.09.2026 |
| Body Map v1 | /api/v1/body-map/analyze |
Veröffentlicht 18.09.2026 Neu |
| Biologisches Blutalter v1 | /api/v1/blood-age/analyze |
Veröffentlicht 18.09.2026 Neu |
| DNA-Test-Interpretation v1 | /api/v1/dna-interpretation/analyze |
Veröffentlicht 23.09.2026 Neu |
| DNA + Blut-Gesundheitsbericht v1 | /api/v1/dna-blood-report/analyze |
Veröffentlicht 23.09.2026 Neu |
| DNA-Supplement-Berater v1 | /api/v1/dna-supplements/analyze |
Veröffentlicht 23.09.2026 Neu |
| Bluttest-Analyse v11 | /api/v11/01-06-2025/analyze |
Stabil Aktualisiert 08.09.2026 |
| Bluttest-Analyse (Gesundheitsscore) v11 | /api/v11/health-score/analyze |
Stabil Aktualisiert 08.09.2026 |
| Ernährungs-KI v1 | /api/v1/nutrition/diet-plan/analyze |
Stabil Aktualisiert 08.09.2026 |
| KI-Bluttest-Vergleich v1 | /api/v1/bloodtest/comparison/analyze |
Stabil Aktualisiert 08.09.2026 |
| Family Health Risikobewertung v1 | /api/v1/family-health/analyze |
Veröffentlicht 23.03.2026 Aktualisiert 08.09.2026 |
| ICR - Intelligente Zeichenerkennung v1 | /api/icr/v1/extract |
Veröffentlicht 14.02.2026 Aktualisiert 08.09.2026 |
| ICR Kan - Bluttest-Extraktion v1 | /api/icr/v1/kan |
Veröffentlicht 14.02.2026 Aktualisiert 08.09.2026 |
| Trendanalyse v1 | /api/v1/analytics/trends/analyze |
Stabil Aktualisiert 08.09.2026 |
Versionsgeschichte
| Datum | Version | Änderungen |
|---|---|---|
| 5. November 2026 | Bluttest-Analyse v12, Ernährungs-API v1 | Qualitative (binary) Zeilen: Bereichsfelder sind null, evaluation ist good oder bad; alle Bewertungswerte stehen unter evaluation. lab_date fällt auf das Ergebnisdatum zurück. Ernährungspläne halten dietary_preferences, dietary_restrictions und allergies in jedem Abschnitt ein; Nahrungsergänzungsmittel folgen den auffälligen Markern. |
| 23. September 2026 | DNA-Test-Interpretation v1, DNA + Blut-Gesundheitsbericht v1, DNA-Supplement-Berater v1 | DNA Health API veröffentlicht — DNA-Test-Interpretation aus DNA-Rohdaten (23andMe, AncestryDNA, MyHeritage, FTDNA, LivingDNA, VCF) oder genetischen Befunddateien anhand von 334 kuratierten Markern, ein kombinierter DNA + Blut-Gesundheitsbericht und ein Supplement-Berater mit dem eigenen Produktkatalog der Klinik; asynchroner Modus und Sandbox |
| September 2026 | Bluttest-Analyse v12 | Bluttest-Analyse v12 veröffentlicht — Multi-Datei-Upload, Berichte in 100 Sprachen, optionaler Gesundheitsscore und Krankheitsrisikoanalyse, Sandbox-Modus |
| September 2026 | Body Map v1, Biologisches Blutalter v1 | Body Map API und Biologisches Blutalter API veröffentlicht — organbezogene Zuordnung auffälliger Ergebnisse zu 13 anatomischen Regionen sowie PhenoAge-Blutalter mit bis zu 18 abgeleiteten klinischen Indizes; beide mit deterministischem Modus und Sandbox |
| September 2026 | Alle Versionen | KI-Modell-Update, fixiert auf die neueste Modellversion; umfassende Verbesserungen und Fehlerbehebungen in allen API-Versionen; Versionsnummern unverändert; 98,89% Genauigkeit bei Prüfungen medizinischer Fakultäten (aktueller Open-Source-Benchmark) |
| Juli 2026 | Alle Versionen | Umfassende Verbesserungen und Fehlerbehebungen für alle API-Versionen; Versionsnummern unverändert |
| Mai 2026 | Alle Versionen | Umfassende Verbesserungen und Fehlerbehebungen für alle API-Versionen; Versionsnummern unverändert |
| März 2026 | Family Health v1 | Family Health Risikobewertung API veröffentlicht — KI-gestützte hereditäre Risikoanalyse, 100+ Sprachunterstützung, Stammbaum-Analyse, präventiver Vorsorgeplan, genetische Screening-Empfehlungen, Sandbox-Modus |
| Februar 2026 | ICR v1 | ICR (Intelligente Zeichenerkennung) API veröffentlicht — 79% schneller als OCR, strukturierte JSON-Ausgabe, Dokumenttyp-Erkennung, Tabellenextraktion, Kan-Bluttest-Integration |
| Dezember 2025 | Neueste | Verbesserte Fehlerbehandlung, 98,7% Genauigkeit, Unterstützung für 100 Sprachen |
| Juni 2025 | v11 | v11 Bluttest-Analyse, Gesundheitsscore-Endpunkt, Multi-Datei-Unterstützung |
| April 2025 | v9 | api_parameters_v9 Modell, verbesserte Parameterextraktion |
| März 2025 | v8 | Multi-Datei-Upload-Unterstützung, Stapelverarbeitung |
Legacy-Endpunkte
Diese Endpunkte werden für Abwärtskompatibilität gepflegt, werden aber für neue Integrationen nicht empfohlen.
| Version | Endpunkt | Status |
|---|---|---|
| v10 | /api/v10/health-score/analyze |
Legacy |
| v9 | /api/v9/14-04-2025/analyze |
Legacy |
| v8 | /api/v8/31-03-2025/analyze |
Legacy |
| v6 | /api/v6-1/21-11-2024/analyze |
Legacy |
| v3 | /api/v3/10-10-2024/analyze |
Legacy |
Legacy-Endpunkte werden für Abwärtskompatibilität gepflegt, werden aber für neue Integrationen nicht empfohlen. Bitte migrieren Sie zu den aktuellen stabilen Endpunkten für bessere Leistung und Support.
Unterstützte Sprachen Referenz
Die Kantesti-API unterstützt 100 Sprachen für die Lokalisierung von Antworten. Verwenden Sie den language-Parameter mit einem der unten aufgeführten ISO 639-1-Codes. Wenn nicht angegeben, werden Antworten standardmäßig auf Englisch (en) zurückgegeben.
Wenn kein language-Parameter angegeben wird, gibt die API Antworten auf Englisch (en) zurück.
Wichtige Weltsprachen
| Code | Sprache | Eigenbezeichnung |
|---|---|---|
en | Englisch | English |
zh | Chinesisch | 中文 |
es | Spanisch | Español |
ar | Arabisch | العربية |
hi | Hindi | हिन्दी |
pt | Portugiesisch | Português |
ru | Russisch | Русский |
ja | Japanisch | 日本語 |
fr | Französisch | Français |
de | Deutsch | Deutsch |
ko | Koreanisch | 한국어 |
tr | Türkisch | Türkçe |
Europäische Sprachen
| Code | Sprache | Eigenbezeichnung |
|---|---|---|
it | Italienisch | Italiano |
nl | Niederländisch | Nederlands |
pl | Polnisch | Polski |
el | Griechisch | Ελληνικά |
sv | Schwedisch | Svenska |
no | Norwegisch | Norsk |
da | Dänisch | Dansk |
fi | Finnisch | Suomi |
cs | Tschechisch | Čeština |
uk | Ukrainisch | Українська |
ro | Rumänisch | Română |
hu | Ungarisch | Magyar |
bg | Bulgarisch | Български |
hr | Kroatisch | Hrvatski |
sk | Slowakisch | Slovenčina |
sl | Slowenisch | Slovenščina |
sr | Serbisch | Српски |
lt | Litauisch | Lietuvių |
lv | Lettisch | Latviešu |
et | Estnisch | Eesti |
ca | Katalanisch | Català |
eu | Baskisch | Euskara |
gl | Galizisch | Galego |
cy | Walisisch | Cymraeg |
ga | Irisch | Gaeilge |
is | Isländisch | Íslenska |
mt | Maltesisch | Malti |
sq | Albanisch | Shqip |
mk | Mazedonisch | Македонски |
bs | Bosnisch | Bosanski |
lb | Luxemburgisch | Lëtzebuergesch |
be | Weißrussisch | Беларуская |
Nahostsprachen & Zentralasiatische Sprachen
| Code | Sprache | Eigenbezeichnung |
|---|---|---|
he | Hebräisch | עברית |
fa | Persisch | فارسی |
az | Aserbaidschanisch | Azərbaycan |
ka | Georgisch | ქართული |
hy | Armenisch | Հայdelays |
kk | Kasachisch | Қазақша |
uz | Usbekisch | Oʻzbek |
tg | Tadschikisch | Тоҷикӣ |
ky | Kirgisisch | Кыргызча |
tk | Turkmenisch | Türkmen |
mn | Mongolisch | Монгол |
ps | Paschtu | پښتو |
ku | Kurdisch | Kurdî |
Südasiatische Sprachen
| Code | Sprache | Eigenbezeichnung |
|---|---|---|
bn | Bengalisch | বাংলা |
ta | Tamilisch | தமிழ் |
te | Telugu | తెలుగు |
mr | Marathi | मराठी |
gu | Gujarati | ગુજરાતી |
kn | Kannada | ಕನ್ನಡ |
ml | Malayalam | മലയാളം |
pa | Punjabi | ਪੰਜਾਬੀ |
ur | Urdu | اردو |
ne | Nepali | नेपाली |
si | Singhalesisch | සිංහල |
sd | Sindhi | سنڌي |
as | Assamesisch | অসমীয়া |
or | Odia | ଓଡ଼ିଆ |
Südostasiatische Sprachen
| Code | Sprache | Eigenbezeichnung |
|---|---|---|
id | Indonesisch | Bahasa Indonesia |
th | Thailändisch | ไทย |
vi | Vietnamesisch | Tiếng Việt |
ms | Malaiisch | Bahasa Melayu |
my | Birmanisch | မြန်မာ |
km | Khmer | ភាសាខ្មែរ |
lo | Laotisch | ລາວ |
fil | Filipino | Filipino |
tl | Tagalog | Tagalog |
jv | Javanisch | Basa Jawa |
su | Sundanesisch | Basa Sunda |
Afrikanische Sprachen
| Code | Sprache | Eigenbezeichnung |
|---|---|---|
af | Afrikaans | Afrikaans |
sw | Suaheli | Kiswahili |
am | Amharisch | አማርኛ |
ha | Hausa | Hausa |
yo | Yoruba | Yorùbá |
ig | Igbo | Igbo |
zu | Zulu | isiZulu |
xh | Xhosa | isiXhosa |
so | Somali | Soomaali |
mg | Madagassisch | Malagasy |
Andere Sprachen
| Code | Sprache | Eigenbezeichnung |
|---|---|---|
la | Latein | Latina |
eo | Esperanto | Esperanto |
yi | Jiddisch | ייִדיש |
ht | Haitianisch-Kreolisch | Kreyòl Ayisyen |
mi | Maori | Te Reo Māori |
sm | Samoanisch | Gagana Samoa |
to | Tongaisch | Lea Faka-Tonga |
haw | Hawaiianisch | ʻŌlelo Hawaiʻi |
Bluttest-Analyse-API
Analysieren Sie Bluttestbilder oder PDFs mit KI, um Parameter zu extrahieren und umfassende medizinische Interpretationen zu generieren.
Produktionsendpunkt für die Bluttestanalyse. Laden Sie ein oder mehrere Bluttestbilder oder eine PDF-Datei hoch und erhalten Sie strukturierte Parameter, Patienten- und Labor-Metadaten sowie eine vollständige klinische Interpretation in einer der 100 unterstützten Sprachen. Verbraucht 1 Credit pro Anfrage.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
username | string | Ja | Ihr API-Benutzername |
password | string | Ja | Ihr API-Passwort |
file | file | Ja | Bluttestbild (PNG, JPG, WEBP) oder PDF. Max. 20 MB. Wiederholen Sie das Feld, um mehrere Bilder zu senden. |
language | string | Nein | Sprachcode der Antwort (Standard: en). Siehe unterstützte Sprachen. |
pdf_password | string | Nein | Passwort für verschlüsselte PDFs |
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v12/18-09-2026/analyze" \
-F "username=IHR_BENUTZERNAME" \
-F "password=IHR_PASSWORT" \
-F "language=de" \
-F "[email protected]"
Python-Beispiel
import requests
def bluttest_analysieren(dateipfade, benutzername, passwort, sprache="de"):
"""
Bluttest mit Kantesti Bluttest-Analyse v12 analysieren.
Args:
dateipfade: Ein oder mehrere Pfade zu Bluttestbildern oder eine einzelne PDF
benutzername: API-Benutzername
passwort: API-Passwort
sprache: Sprachcode des Berichts (Standard: de)
Returns:
dict: Strukturierte Parameter, Metadaten und klinische Interpretation
"""
url = "https://app.aibloodtestinterpret.com/api/v12/18-09-2026/analyze"
handles = [open(pfad, "rb") for pfad in dateipfade]
try:
dateien = [("file", (pfad, handle)) for pfad, handle in zip(dateipfade, handles)]
daten = {"username": benutzername, "password": passwort, "language": sprache}
antwort = requests.post(url, files=dateien, data=daten, timeout=300)
antwort.raise_for_status()
return antwort.json()
finally:
for handle in handles:
handle.close()
# Anwendungsbeispiel
if __name__ == "__main__":
ergebnis = bluttest_analysieren(
dateipfade=["bluttest.pdf"],
benutzername="ihr_benutzername",
passwort="ihr_passwort",
sprache="de"
)
print(f"Status: {ergebnis['status']}")
for parameter in ergebnis["data"]["parameters"]:
print(f" {parameter['short_name']}: {parameter['result']} {parameter['unit']} ({parameter['evaluation']})")
Beispielantwort
{
"status": "success",
"api_version": "v12",
"data": {
"metadata": {
"patient_name": "Jan Novak",
"patient_age": "45",
"patient_sex": "Male",
"lab_name": "BioLAB Medical Center",
"lab_city": "Prague",
"lab_country": "Czech Republic",
"lab_date": "2026-09-11",
"results_date": "2026-09-12"
},
"parameters": [
{"short_name": "Glucose", "long_name": "Fasting Blood Glucose", "result": "92", "unit": "mg/dL", "reference_range": "74 - 100", "range_normal_min": 74, "range_normal_max": 100, "type": "range", "evaluation": "normal"},
{"short_name": "ALT", "long_name": "Alanine aminotransferase", "result": "65", "unit": "U/L", "reference_range": "< 45", "range_normal_min": 7, "range_normal_max": 45, "type": "range", "evaluation": "high"},
{"short_name": "Creatinine", "long_name": "Creatinine", "result": "0.9", "unit": "mg/dL", "reference_range": "0.7 - 1.2", "range_normal_min": 0.7, "range_normal_max": 1.2, "type": "range", "evaluation": "normal"}
],
"interpretation": [
{"shortcode": "overview", "item": "Most parameters are within their reference ranges."},
{"shortcode": "key_findings", "item": "Alanine aminotransferase is above the reference range, which warrants a follow-up liver panel."}
]
},
"timestamp": "2026-09-18T10:30:00Z"
}
Produktionsendpunkt für Bluttestanalyse. Verbraucht 1 Credit pro Anfrage.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
username | string | Ja | Ihr API-Benutzername |
password | string | Ja | Ihr API-Passwort |
file | file | Ja | Bluttestbild (PNG, JPG, WEBP) oder PDF. Max 20MB. |
language | string | Nein | Antwortsprachcode (Standard: en). Siehe unterstützte Sprachen. |
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze" \
-F "username=IHR_BENUTZERNAME" \
-F "password=IHR_PASSWORT" \
-F "language=de" \
-F "[email protected]"
Python-Beispiel
import requests
def bluttest_analysieren(dateipfad: str, benutzername: str, passwort: str, sprache: str = "de"):
"""
Analysiert eine Bluttestdatei mit der Kantesti-API.
Args:
dateipfad: Pfad zur Bluttest-PDF oder Bilddatei
benutzername: API-Benutzername
passwort: API-Passwort
sprache: Antwortsprachcode (Standard: de)
Returns:
dict: API-Antwort mit Analyseergebnissen
"""
url = "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze"
with open(dateipfad, "rb") as f:
dateien = {"file": (dateipfad, f, "application/pdf")}
daten = {
"username": benutzername,
"password": passwort,
"language": sprache
}
antwort = requests.post(url, files=dateien, data=daten, timeout=120)
antwort.raise_for_status()
return antwort.json()
# Anwendungsbeispiel
if __name__ == "__main__":
ergebnis = bluttest_analysieren(
dateipfad="bluttest.pdf",
benutzername="ihr_benutzername",
passwort="ihr_passwort",
sprache="de"
)
print(f"Status: {ergebnis['status']}")
print(f"Gefundene Parameter: {len(ergebnis['data']['parameters'])}")
C++-Beispiel (libcurl)
#include <iostream>
#include <string>
#include <curl/curl.h>
// Callback-Funktion für die Antwortverarbeitung
size_t SchreibCallback(void* inhalt, size_t groesse, size_t nmemb, std::string* ausgabe) {
ausgabe->append((char*)inhalt, groesse * nmemb);
return groesse * nmemb;
}
std::string bluttestAnalysieren(const std::string& dateipfad,
const std::string& benutzername,
const std::string& passwort,
const std::string& sprache = "de") {
CURL* curl = curl_easy_init();
std::string antwort;
if (curl) {
curl_mime* formular = curl_mime_init(curl);
curl_mimepart* feld;
// Benutzername hinzufügen
feld = curl_mime_addpart(formular);
curl_mime_name(feld, "username");
curl_mime_data(feld, benutzername.c_str(), CURL_ZERO_TERMINATED);
// Passwort hinzufügen
feld = curl_mime_addpart(formular);
curl_mime_name(feld, "password");
curl_mime_data(feld, passwort.c_str(), CURL_ZERO_TERMINATED);
// Sprache hinzufügen
feld = curl_mime_addpart(formular);
curl_mime_name(feld, "language");
curl_mime_data(feld, sprache.c_str(), CURL_ZERO_TERMINATED);
// Datei hinzufügen
feld = curl_mime_addpart(formular);
curl_mime_name(feld, "file");
curl_mime_filedata(feld, dateipfad.c_str());
curl_easy_setopt(curl, CURLOPT_URL,
"https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze");
curl_easy_setopt(curl, CURLOPT_MIMEPOST, formular);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, SchreibCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &antwort);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 120L);
CURLcode res = curl_easy_perform(curl);
curl_mime_free(formular);
curl_easy_cleanup(curl);
}
return antwort;
}
int main() {
std::string ergebnis = bluttestAnalysieren("bluttest.pdf", "benutzername", "passwort");
std::cout << ergebnis << std::endl;
return 0;
}
Postman-Konfiguration
{
"info": {
"name": "Kantesti Bluttest-API",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Bluttest analysieren",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{"key": "username", "value": "{{api_benutzername}}", "type": "text"},
{"key": "password", "value": "{{api_passwort}}", "type": "text"},
{"key": "language", "value": "de", "type": "text"},
{"key": "file", "type": "file", "src": "/pfad/zur/bluttest.pdf"}
]
},
"url": {
"raw": "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze",
"protocol": "https",
"host": ["app", "aibloodtestinterpret", "com"],
"path": ["api", "v11", "01-06-2025", "analyze"]
}
}
}
]
}
Beispielantwort
{
"status": "success",
"data": {
"metadata": {
"patient_name": "Jan Novák",
"lab_name": "BioLAB Medizinzentrum",
"lab_city": "München",
"lab_country": "Deutschland",
"lab_date": "2025-05-11",
"patient_age": "45",
"patient_sex": "Männlich"
},
"parameters": [
{
"short_name": "WBC",
"long_name": "Weiße Blutkörperchen",
"category": "Komplettes Blutbild",
"result": 7.2,
"unit": "10^9/L",
"evaluation": "normal",
"range_min": 2.0,
"range_max": 12.0,
"range_normal_min": 4.0,
"range_normal_max": 10.0,
"short_description": "Misst die Gesamtzahl der weißen Blutkörperchen im Blut.",
"long_description": "Weiße Blutkörperchen (Leukozyten) sind für die Immunfunktion unerlässlich..."
},
{
"short_name": "HGB",
"long_name": "Hämoglobin",
"category": "Komplettes Blutbild",
"result": 14.5,
"unit": "g/dL",
"evaluation": "normal",
"range_min": 10.0,
"range_max": 18.0,
"range_normal_min": 13.5,
"range_normal_max": 17.5,
"short_description": "Protein in roten Blutkörperchen, das Sauerstoff transportiert.",
"long_description": "Hämoglobin ist das eisenhaltige Protein, das für den Sauerstofftransport verantwortlich ist..."
}
],
"interpretation": [
{
"title": "Gesamtgesundheitsbewertung",
"shortcode": "overall_health_assessment",
"subsections": [
{
"subtitle": "Umfassender Überblick",
"shortcode": "overall_health_assessment_overview",
"items": [
{"item": "Der Patient zeigt eine erhaltene Organfunktion mit normalen hämatologischen Parametern."},
{"item": "Im kompletten Blutbild wurden keine signifikanten Auffälligkeiten festgestellt."}
]
}
]
}
]
},
"api_version": "v11",
"timestamp": "2025-12-22T10:30:00Z"
}
Antwortfelder-Referenz
Stammebene
| Feld | Typ | Beschreibung |
|---|---|---|
status | string | "success" oder "error" |
data | object | Enthält alle Analyseergebnisse |
timestamp | string | ISO 8601 Zeitstempel der Antwort |
api_version | string | Verwendete API-Version |
data.metadata Objekt
| Feld | Typ | Beschreibung |
|---|---|---|
lab_date | string | Datum der Blutentnahme (JJJJ-MM-TT). Druckt der Befund nur sein Ergebnisdatum, dieses Datum. Leer, wenn der Befund gar kein Datum zeigt. |
results_date | string | Datum der Ergebnisausgabe (JJJJ-MM-TT) |
lab_name | string | Name des Labors |
lab_city | string | Stadt des Labors |
lab_country | string | Land des Labors |
patient_name | string | Vollständiger Name des Patienten (nur Metadaten, wird nicht an die Interpretation gesendet) |
patient_age | string | Alter des Patienten |
patient_sex | string | "male", "female" oder "other" |
data.parameters Array-Element
| Feld | Typ | Beschreibung |
|---|---|---|
category | string | Parameterkategorie (z.B. "Blutbild", "Lipidprofil") |
long_name | string | Vollständiger Parametername |
short_name | string | Abgekürzter Parametername |
result | string | Messwert |
unit | string | Maßeinheit |
type | string | range: ein numerisches Ergebnis, das an Referenzbereichen bewertet wird. binary: ein qualitatives Ergebnis (Negativ, Positiv, Reaktiv, ein Titer ...) — seine Bereichsfelder sind null, es gibt nichts als Diagramm darzustellen, und evaluation ist good oder bad. |
range_optimal_min | number|null | Untergrenze des Optimalbereichs: der ideale Bereich innerhalb des Normalbereichs. So zeigen Sie die drei Bereiche an (null bei einer binary-Zeile) |
range_optimal_max | number|null | Obergrenze des Optimalbereichs (null bei einer binary-Zeile) |
range_normal_min | number|null | Untergrenze des Normalbereichs: Referenzbereich des Labors (null bei einer binary-Zeile) |
range_normal_max | number|null | Obergrenze des Normalbereichs (null bei einer binary-Zeile) |
range_min | number|null | Untere Grenze des Grenzbereichs: zwischen ihr und dem Normalbereich ist ein Ergebnis grenzwertig (slightly_low), darunter low (null bei einer binary-Zeile) |
range_max | number|null | Obere Grenze des Grenzbereichs: zwischen dem Normalbereich und ihr ist ein Ergebnis grenzwertig (slightly_high), darüber high (null bei einer binary-Zeile) |
evaluation | string | Ergebnisstatus. Siehe Bewertungswerte |
data.interpretation Array-Element
| Feld | Typ | Beschreibung |
|---|---|---|
title | string | Abschnittstitel (z.B. "Gesamtgesundheitsbewertung") |
content | string | KI-generierte medizinische Interpretation |
Vollständiges Antwortbeispiel
{
"status": "success",
"data": {
"metadata": {
"patient_name": "Anna Müller",
"lab_name": "MedLab Diagnostics International",
"lab_city": "München",
"lab_country": "Deutschland",
"lab_date": "2025-12-15",
"results_date": "2025-12-16",
"patient_age": "38",
"patient_sex": "female"
},
"parameters": [
{
"short_name": "WBC",
"long_name": "Leukozytenzahl",
"category": "Blutbild",
"result": "6.8",
"unit": "10^9/L",
"evaluation": "normal",
"range_min": "4.0",
"range_max": "11.0",
"range_normal_min": "4.5",
"range_normal_max": "10.0",
"short_description": "Misst die Gesamtzahl der weißen Blutkörperchen.",
"long_description": "Weiße Blutkörperchen (Leukozyten) sind wesentliche Bestandteile des Immunsystems..."
},
{
"short_name": "RBC",
"long_name": "Erythrozytenzahl",
"category": "Blutbild",
"result": "4.52",
"unit": "10^12/L",
"evaluation": "normal",
"range_min": "3.8",
"range_max": "5.8",
"range_normal_min": "4.0",
"range_normal_max": "5.5",
"short_description": "Misst die Gesamtzahl der roten Blutkörperchen.",
"long_description": "Rote Blutkörperchen (Erythrozyten) transportieren Sauerstoff von der Lunge zu den Körpergeweben..."
},
{
"short_name": "HGB",
"long_name": "Hämoglobin",
"category": "Blutbild",
"result": "13.2",
"unit": "g/dL",
"evaluation": "normal",
"range_min": "11.5",
"range_max": "16.0",
"range_normal_min": "12.0",
"range_normal_max": "15.5",
"short_description": "Protein in roten Blutkörperchen, das Sauerstoff transportiert.",
"long_description": "Hämoglobin ist das eisenhaltige Protein in roten Blutkörperchen, das für den Sauerstofftransport verantwortlich ist..."
},
{
"short_name": "HCT",
"long_name": "Hämatokrit",
"category": "Blutbild",
"result": "39.8",
"unit": "%",
"evaluation": "normal",
"range_min": "35.0",
"range_max": "47.0",
"range_normal_min": "36.0",
"range_normal_max": "44.0",
"short_description": "Prozentsatz des Blutvolumens, der von roten Blutkörperchen eingenommen wird.",
"long_description": "Der Hämatokrit misst den Anteil des Blutes, der aus roten Blutkörperchen besteht..."
},
{
"short_name": "PLT",
"long_name": "Thrombozytenzahl",
"category": "Blutbild",
"result": "245",
"unit": "10^9/L",
"evaluation": "normal",
"range_min": "150",
"range_max": "400",
"range_normal_min": "150",
"range_normal_max": "350",
"short_description": "Misst die Anzahl der Blutplättchen im Blut.",
"long_description": "Thrombozyten (Blutplättchen) sind essentiell für die Blutgerinnung und Wundheilung..."
},
{
"short_name": "GLU",
"long_name": "Nüchternglukose",
"category": "Stoffwechselpanel",
"result": "102",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "70",
"range_max": "140",
"range_normal_min": "70",
"range_normal_max": "99",
"short_description": "Misst den Blutzuckerspiegel nach dem Fasten.",
"long_description": "Die Nüchternglukose ist ein wichtiger Indikator dafür, wie gut der Körper Zucker verstoffwechselt..."
},
{
"short_name": "TC",
"long_name": "Gesamtcholesterin",
"category": "Lipidprofil",
"result": "218",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "0",
"range_max": "300",
"range_normal_min": "0",
"range_normal_max": "200",
"short_description": "Misst das Gesamtcholesterin im Blut.",
"long_description": "Das Gesamtcholesterin ist die Summe aus HDL-, LDL- und VLDL-Cholesterin..."
},
{
"short_name": "HDL",
"long_name": "HDL-Cholesterin",
"category": "Lipidprofil",
"result": "58",
"unit": "mg/dL",
"evaluation": "normal",
"range_min": "35",
"range_max": "100",
"range_normal_min": "50",
"range_normal_max": "90",
"short_description": "Misst das 'gute' Cholesterin.",
"long_description": "HDL (High-Density-Lipoprotein) Cholesterin hilft, andere Formen von Cholesterin zu entfernen..."
},
{
"short_name": "LDL",
"long_name": "LDL-Cholesterin",
"category": "Lipidprofil",
"result": "142",
"unit": "mg/dL",
"evaluation": "high",
"range_min": "0",
"range_max": "200",
"range_normal_min": "0",
"range_normal_max": "100",
"short_description": "Misst das 'schlechte' Cholesterin.",
"long_description": "LDL (Low-Density-Lipoprotein) Cholesterin kann sich in den Arterienwänden ablagern..."
},
{
"short_name": "TRIG",
"long_name": "Triglyzeride",
"category": "Lipidprofil",
"result": "156",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "0",
"range_max": "500",
"range_normal_min": "0",
"range_normal_max": "150",
"short_description": "Misst das Fett im Blut.",
"long_description": "Triglyzeride sind eine Art von Fett im Blut, das überschüssige Energie speichert..."
}
],
"interpretation": [
{
"title": "Gesamtgesundheitsbewertung",
"shortcode": "overall_health_assessment",
"subsections": [
{
"subtitle": "Umfassende Übersicht",
"shortcode": "overall_health_assessment_overview",
"items": [
{"item": "Die Patientin zeigt allgemein gesunde hämatologische Parameter mit allen Blutbildwerten im Normalbereich."},
{"item": "Die Ergebnisse des kompletten Blutbildes zeigen eine ausreichende Sauerstofftransportkapazität und Immunfunktion."},
{"item": "Das Lipidprofil zeigt Bereiche, die Aufmerksamkeit erfordern, insbesondere die LDL-Cholesterinwerte."}
]
}
]
},
{
"title": "Stoffwechselanalyse",
"shortcode": "metabolic_analysis",
"subsections": [
{
"subtitle": "Blutzuckerbewertung",
"shortcode": "metabolic_analysis_glucose",
"items": [
{"item": "Der Nüchternglukosewert von 102 mg/dL ist leicht erhöht und deutet auf einen Prädiabetes-Bereich hin."},
{"item": "Es werden Lebensstiländerungen empfohlen, einschließlich regelmäßiger Bewegung und reduzierter Aufnahme einfacher Kohlenhydrate."},
{"item": "Eine HbA1c-Nachuntersuchung wird in 3 Monaten empfohlen, um die langfristige Glukosekontrolle zu beurteilen."}
]
}
]
},
{
"title": "Kardiovaskuläre Risikobewertung",
"shortcode": "cardiovascular_risk",
"subsections": [
{
"subtitle": "Lipidprofilanalyse",
"shortcode": "cardiovascular_risk_lipids",
"items": [
{"item": "LDL-Cholesterin mit 142 mg/dL überschreitet die optimalen Werte und erfordert eine Intervention."},
{"item": "HDL-Cholesterin mit 58 mg/dL bietet moderaten kardiovaskulären Schutz."},
{"item": "Triglyzeride leicht erhöht; Ernährungsumstellungen zur Reduzierung der gesättigten Fettsäuren werden empfohlen."},
{"item": "Das Verhältnis von Gesamtcholesterin zu HDL von 3,76 deutet auf ein moderates kardiovaskuläres Risiko hin."}
]
}
]
},
{
"title": "Empfehlungen",
"shortcode": "recommendations",
"subsections": [
{
"subtitle": "Lebensstiländerungen",
"shortcode": "recommendations_lifestyle",
"items": [
{"item": "Erhöhen Sie die aerobe körperliche Aktivität auf mindestens 150 Minuten pro Woche."},
{"item": "Übernehmen Sie eine mediterrane Ernährung, reich an Gemüse, Obst und gesunden Fetten."},
{"item": "Begrenzen Sie verarbeitete Lebensmittel, gesättigte Fette und zugesetzten Zucker."},
{"item": "Erwägen Sie eine Beratung durch einen Ernährungsberater für personalisierte Ernährungsempfehlungen."}
]
},
{
"subtitle": "Nachfolgeuntersuchungen",
"shortcode": "recommendations_followup",
"items": [
{"item": "Wiederholung des Lipidprofils in 3 Monaten nach Umsetzung der Lebensstiländerungen."},
{"item": "HbA1c-Test empfohlen, um die durchschnittlichen Blutzuckerwerte zu beurteilen."},
{"item": "Jährliches umfassendes Stoffwechselpanel zur laufenden Überwachung."}
]
}
]
}
]
},
"api_version": "v11",
"timestamp": "2025-12-16T14:32:18Z"
}
Das Feld evaluation verwendet standardisierte Werte. Siehe Bewertungswerte.
Produktionsendpunkt mit umfassender Gesundheitsscore-Berechnung und Krankheitsrisikoanalyse. Erwartet dieselbe Anfrage wie /api/v12/18-09-2026/analyze und ergänzt die Antwort um die unten aufgeführten Felder. Verbraucht 1 Credit pro Anfrage.
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v12/health-score/analyze" \
-F "username=IHR_BENUTZERNAME" \
-F "password=IHR_PASSWORT" \
-F "language=de" \
-F "[email protected]"
Zusätzliche Antwortfelder
{
"health_score": {
"overall": 78,
"optimal": 4,
"normal": 12,
"warning": 3,
"critical": 1,
"total_parameters": 20,
"score_interpretation": "good",
"recommendations": [
"Consider increasing vitamin D intake",
"Schedule follow-up for cholesterol levels"
]
},
"disease_risks": [
{"name": "Cardiovascular Disease", "percentage": "18%", "severity": "low"},
{"name": "Type 2 Diabetes", "percentage": "12%", "severity": "low"},
{"name": "Metabolic Syndrome", "percentage": "25%", "severity": "moderate"}
]
}
Das Feld score_interpretation verwendet standardisierte Werte. Siehe Gesundheitsscore-Werte.
Produktionsendpunkt mit umfassender Gesundheitsscore-Berechnung und Krankheitsrisikoanalyse.
Zusätzliche Antwortfelder
{
"health_score": {
"overall": 78,
"optimal": 4,
"normal": 12,
"warning": 3,
"critical": 1,
"total_parameters": 20,
"score_interpretation": "gut",
"recommendations": [
"Erwägen Sie eine Erhöhung der Vitamin-D-Aufnahme",
"Planen Sie eine Nachuntersuchung für Cholesterinwerte"
]
},
"disease_risks": [
{"name": "Herz-Kreislauf-Erkrankung", "percentage": "18%", "severity": "niedrig"},
{"name": "Typ-2-Diabetes", "percentage": "12%", "severity": "niedrig"},
{"name": "Metabolisches Syndrom", "percentage": "25%", "severity": "mäßig"}
]
}
Sandbox-Endpunkte
Sandbox-Endpunkte liefern realistische Testdaten, ohne das API-Kontingent zu verbrauchen. Verwenden Sie diese für Entwicklung und Integrationstests.
- Kein Kontingentverbrauch
- Liefert realistische Testdaten
- Gleiches Anfrageformat wie Produktion
- Testen Sie Ihre Integration vor dem Livebetrieb
- Für alle API-Versionen verfügbar
| API | Sandbox-Endpunkt |
|---|---|
| Bluttest v12 | /api/v12/18-09-2026/sandbox |
| Bluttest v12-health | /api/v12/health-score/sandbox |
| Body Map | /api/v1/body-map/sandbox |
| Biologisches Blutalter | /api/v1/blood-age/sandbox |
| DNA-Test-Interpretation | /api/v1/dna-interpretation/sandbox |
| DNA + Blut-Gesundheitsbericht | /api/v1/dna-blood-report/sandbox |
| DNA-Supplement-Berater | /api/v1/dna-supplements/sandbox |
| Bluttest v11 | /api/v11/01-06-2025/sandbox |
| Bluttest v11-health | /api/v11/health-score/sandbox |
| Ernährungs-KI | /api/v1/nutrition/diet-plan/sandbox |
| Bluttestvergleich | /api/v1/bloodtest/comparison/sandbox |
| Trendanalyse | /api/v1/analytics/trends/sandbox |
| ICR Extract | /api/icr/v1/sandbox |
| ICR Kan (Bluttest) | /api/icr/v1/kan/sandbox |
Wählen Sie die richtige API für Ihren Anwendungsfall:
| Funktion | KI-Bluttestvergleich | Trendanalyse |
|---|---|---|
| Hauptfokus | KI-narrative Vergleich | Statistische Trendanalyse |
| KI-Verarbeitung | Vollständige KI-Narrative | KI-erweitert + Statistik |
| Ausgabetyp | Narrative Zusammenfassungen | Diagramme, Statistiken, Muster |
| Geeignet für | Was hat sich zwischen Tests geändert | Langzeit-Parameter-Tracking |
| Min. Tests | 2 | 2 |
| Max. Tests | 20 | 50 |
Trendanalyse-API
Analysieren Sie Gesundheitsparameter-Trends über die Zeit mit KI-gestützter Mustererkennung. Identifizieren Sie Verbesserungen, Verschlechterungen und handlungsrelevante Erkenntnisse aus historischen Bluttestdaten.
Analysiert Bluttestparameter-Trends über mehrere Testdaten, um Muster zu identifizieren und Gesundheitserkenntnisse zu liefern.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
username | string | Ja | Ihr API-Benutzername |
password | string | Ja | Ihr API-Passwort |
language | string | Nein | Antwortsprache (Standard: en). Siehe unterstützte Sprachen. |
blood_tests | array | Ja | Array von Bluttestobjekten (min: 2, max: 50) |
analysis_type | string | Nein | Typ: comprehensive, quick oder focused |
analysis_options | object | Nein | Analysekonfigurationsoptionen |
analysis_options Object
| Feld | Typ | Standard | Beschreibung |
|---|---|---|---|
include_predictions | boolean | true | KI-Trendvorhersagen einschließen |
include_statistics | boolean | true | Statistische Analyse einschließen |
include_charts | boolean | true | Diagramm-Konfigurationsdaten einschließen |
- Minimum: 2 Bluttests erforderlich
- Maximum: 50 Bluttests pro Anfrage
- Jeder Test muss
lab_dateODERresults_datehaben - Verwenden Sie konsistente Parameternamen für genaue Trendverfolgung
blood_tests Array-Struktur
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
lab_date | string | Ja* | Testdatum im YYYY-MM-DD Format |
results_date | string | Ja* | Alternative zu lab_date (YYYY-MM-DD) |
parameters | array | Ja | Array von Bluttestparametern |
metadata | object | Nein | Zusätzliche Metadaten (lab_name, notes, etc.) |
*Entweder lab_date oder results_date ist für jeden Bluttest erforderlich.
blood_tests[].parameters Array-Struktur
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | Ja | Parametername (konsistente Benennung!) |
short_name | string | Nein | Kurzer Parametercode |
value | number | Ja | Messwert |
unit | string | Ja | Maßeinheit |
range_min | number | Nein | Minimaler Referenzbereich |
range_max | number | Nein | Maximaler Referenzbereich |
category | string | Nein | Parameterkategorie |
evaluation | string | Nein | Vorab bewerteter Status |
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "IHR_BENUTZERNAME",
"password": "IHR_PASSWORT",
"language": "de",
"analysis_type": "comprehensive",
"blood_tests": [
{
"lab_date": "2024-01-15",
"parameters": [
{"name": "Glucose", "short_name": "GLU", "value": 108, "unit": "mg/dL", "range_min": 70, "range_max": 100},
{"name": "HbA1c", "short_name": "HbA1c", "value": 6.2, "unit": "%", "range_min": 4.0, "range_max": 5.6},
{"name": "Cholesterol", "short_name": "CHOL", "value": 225, "unit": "mg/dL", "range_min": 0, "range_max": 200},
{"name": "LDL Cholesterol", "short_name": "LDL", "value": 145, "unit": "mg/dL", "range_min": 0, "range_max": 100},
{"name": "HDL Cholesterol", "short_name": "HDL", "value": 42, "unit": "mg/dL", "range_min": 40, "range_max": 60}
]
},
{
"lab_date": "2024-05-10",
"parameters": [
{"name": "Glucose", "short_name": "GLU", "value": 102, "unit": "mg/dL", "range_min": 70, "range_max": 100},
{"name": "HbA1c", "short_name": "HbA1c", "value": 5.9, "unit": "%", "range_min": 4.0, "range_max": 5.6},
{"name": "Cholesterol", "short_name": "CHOL", "value": 205, "unit": "mg/dL", "range_min": 0, "range_max": 200},
{"name": "LDL Cholesterol", "short_name": "LDL", "value": 128, "unit": "mg/dL", "range_min": 0, "range_max": 100},
{"name": "HDL Cholesterol", "short_name": "HDL", "value": 48, "unit": "mg/dL", "range_min": 40, "range_max": 60}
]
},
{
"lab_date": "2024-08-22",
"parameters": [
{"name": "Glucose", "short_name": "GLU", "value": 96, "unit": "mg/dL", "range_min": 70, "range_max": 100},
{"name": "HbA1c", "short_name": "HbA1c", "value": 5.6, "unit": "%", "range_min": 4.0, "range_max": 5.6},
{"name": "Cholesterol", "short_name": "CHOL", "value": 192, "unit": "mg/dL", "range_min": 0, "range_max": 200},
{"name": "LDL Cholesterol", "short_name": "LDL", "value": 108, "unit": "mg/dL", "range_min": 0, "range_max": 100},
{"name": "HDL Cholesterol", "short_name": "HDL", "value": 54, "unit": "mg/dL", "range_min": 40, "range_max": 60}
]
},
{
"lab_date": "2024-12-18",
"parameters": [
{"name": "Glucose", "short_name": "GLU", "value": 89, "unit": "mg/dL", "range_min": 70, "range_max": 100},
{"name": "HbA1c", "short_name": "HbA1c", "value": 5.3, "unit": "%", "range_min": 4.0, "range_max": 5.6},
{"name": "Cholesterol", "short_name": "CHOL", "value": 178, "unit": "mg/dL", "range_min": 0, "range_max": 200},
{"name": "LDL Cholesterol", "short_name": "LDL", "value": 92, "unit": "mg/dL", "range_min": 0, "range_max": 100},
{"name": "HDL Cholesterol", "short_name": "HDL", "value": 58, "unit": "mg/dL", "range_min": 40, "range_max": 60}
]
}
]
}'
Python-Beispiel
import requests
from typing import List, Dict, Optional
def trends_analysieren(
benutzername: str,
passwort: str,
bluttests: List[Dict],
sprache: str = "de",
analyse_typ: str = "comprehensive"
) -> Dict:
"""
Analysiert Bluttesttrends über die Zeit.
Args:
benutzername: API-Benutzername
passwort: API-Passwort
bluttests: Liste von Bluttestobjekten mit lab_date und parameters
sprache: Antwortsprachcode
analyse_typ: comprehensive, quick oder focused
Returns:
dict: Trendanalyseergebnisse
"""
url = "https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze"
nutzlast = {
"username": benutzername,
"password": passwort,
"language": sprache,
"analysis_type": analyse_typ,
"blood_tests": bluttests
}
antwort = requests.post(url, json=nutzlast, timeout=120)
antwort.raise_for_status()
return antwort.json()
# Anwendungsbeispiel
if __name__ == "__main__":
bluttests = [
{
"lab_date": "2025-01-15",
"parameters": [
{"short_name": "HGB", "result": 12.5, "unit": "g/dL"},
{"short_name": "CHOL", "result": 220, "unit": "mg/dL"}
]
},
{
"lab_date": "2025-06-15",
"parameters": [
{"short_name": "HGB", "result": 13.2, "unit": "g/dL"},
{"short_name": "CHOL", "result": 195, "unit": "mg/dL"}
]
},
{
"lab_date": "2025-12-01",
"parameters": [
{"short_name": "HGB", "result": 14.1, "unit": "g/dL"},
{"short_name": "CHOL", "result": 180, "unit": "mg/dL"}
]
}
]
ergebnis = trends_analysieren(
benutzername="ihr_benutzername",
passwort="ihr_passwort",
bluttests=bluttests
)
print(f"Gesamttrend: {ergebnis['data']['overall_trend']}")
for trend in ergebnis['data']['parameter_trends']:
print(f"{trend['parameter']}: {trend['direction']} ({trend['change_percent']}%)")
Antwortfelder-Referenz
| Feld | Typ | Beschreibung |
|---|---|---|
analysis_id | string | Eindeutige Kennung für diese Analyse (Format: TRD-XXXXXXXX) |
analysis_period | object | Zeitraumdetails: start_date, end_date, span_months, total_tests |
categories | array | Liste der gefundenen Parameterkategorien (z.B. "Lipid Panel", "Complete Blood Count") |
chart_config | object | Diagramm-Daten: dates, raw_dates, simple_dates für Visualisierung |
overall_health_trend | object | Zusammenfassung, health_risks Array und Empfehlungen |
parameter_trends | array | Detaillierte Analyse pro Parameter mit Statistiken |
risk_factors | array | Identifizierte Gesundheitsrisikofaktoren |
parameter_trends Objektstruktur
| Feld | Typ | Beschreibung |
|---|---|---|
parameter | string | Standardisierter Parametername |
short_name | string | Abgekürzter Parametername |
category | string | Parameterkategorie (z.B. "Lipid Panel") |
unit | string | Messeinheit |
trend_data | array | Array von {date, value} Objekten für Diagramme |
statistical_analysis | object | average, min, max, standard_deviation, trend_direction, trend_strength |
analysis | object | KI-Interpretation: description, significant_variations, trend |
interpretation | string | Menschenlesbare Parameterbeschreibung |
Beispielantwort
{
"api_version": "1.0.0",
"status": "success",
"message": "Trendanalyse erfolgreich abgeschlossen",
"timestamp": "2025-12-22T01:12:49.262700Z",
"data": {
"analysis_id": "TRD-49B4C616",
"analysis_period": {
"start_date": "2024-01-15",
"end_date": "2024-12-18",
"span_months": 11,
"total_tests": 4
},
"categories": [
"Stoffwechsel-Panel",
"Vitamine",
"Diabetes-Marker",
"Eisenstudien",
"Lipid-Panel",
"Großes Blutbild"
],
"chart_config": {
"dates": ["Jan 2024", "Mai 2024", "Sep 2024", "Dez 2024"],
"raw_dates": ["2024-01-15", "2024-05-20", "2024-09-10", "2024-12-18"]
},
"language": "de",
"overall_health_trend": {
"summary": "Insgesamt zeigen die Bluttestparameter positive Trends mit Verbesserungen bei Hämoglobin, Lipidprofil einschließlich LDL- und HDL-Cholesterin, Vitamin-D-Status und Eisenspeichern.",
"health_risks": [],
"recommendations": []
},
"parameter_trends": [
{
"parameter": "Hämoglobin (Hb)",
"short_name": "Hämoglobin",
"category": "Großes Blutbild",
"unit": "g/dL",
"trend_data": [
{"date": "2024-01-15", "value": 12.8},
{"date": "2024-05-20", "value": 13.5},
{"date": "2024-09-10", "value": 14.2},
{"date": "2024-12-18", "value": 14.8}
],
"statistical_analysis": {
"average": 13.82,
"min": 12.8,
"max": 14.8,
"standard_deviation": 0.87,
"trend_direction": "aufwärts",
"trend_strength": "moderat"
},
"analysis": {
"description": "Hämoglobin misst das sauerstofftransportierende Protein in roten Blutkörperchen.",
"significant_variations": "Anfänglich niedrig bei 12,8 g/dL, dann schrittweise auf 14,8 g/dL gestiegen.",
"trend": "steigend"
}
},
{
"parameter": "LDL-Cholesterin (LDL-C)",
"short_name": "LDL-Cholesterin",
"category": "Lipid-Panel",
"unit": "mg/dL",
"trend_data": [
{"date": "2024-01-15", "value": 110.0},
{"date": "2024-05-20", "value": 102.0},
{"date": "2024-09-10", "value": 92.0},
{"date": "2024-12-18", "value": 85.0}
],
"statistical_analysis": {
"average": 97.25,
"min": 85.0,
"max": 110.0,
"standard_deviation": 11.0,
"trend_direction": "abwärts",
"trend_strength": "stark"
},
"analysis": {
"description": "LDL-C ist das 'schlechte' Cholesterin, das mit erhöhtem Herzkrankheitsrisiko verbunden ist.",
"significant_variations": "LDL-C sank von hoch (110 mg/dL) auf normal (85 mg/dL).",
"trend": "sinkend"
}
}
],
"risk_factors": [],
"sandbox_mode": false
}
}
Antwortfelder verwenden standardisierte Werte: trend_direction (siehe Werte), trend_strength (siehe Werte).
Ernährungs-KI mit Nahrungsergänzungsmitteln
Erstellen Sie personalisierte Ernährungspläne, Diätempfehlungen und Nahrungsergänzungsmittelvorschläge basierend auf der Bluttestanalyse mit fortschrittlichen KI-Algorithmen.
Erstellt umfassende Ernährungs- und Nahrungsergänzungsmittelempfehlungen basierend auf Bluttestparametern und Patientenprofil.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
username | string | Ja | Ihr API-Benutzername |
password | string | Ja | Ihr API-Passwort |
language | string | Nein | Antwortsprache (Standard: en). Siehe unterstützte Sprachen. |
patient | object | Ja | Patientendemografie und Gesundheitsinformationen |
blood_test | object | Ja | Bluttestparameter |
health_goals | array | Nein | Spezifische Gesundheitsziele |
dietary_restrictions | array | Nein | Allergien, Unverträglichkeiten, Präferenzen |
Patientenobjekt-Schema
Patienten-Demografieobjekt mit gender (siehe Werte) und activity_level (siehe Werte).
| Feld | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
age | integer | Ja | - | Patientenalter in Jahren (18-120) |
gender | string | Ja | - | Patientengeschlecht. Siehe Werte |
weight | number | Nein | null | Gewicht in kg (für Kalorienberechnungen) |
height | number | Nein | null | Größe in cm (für BMI-Berechnungen) |
conditions | array | Nein | [] | Erkrankungen (z.B. ["diabetes", "hypertension"]) |
allergies | array | Nein | [] | Lebensmittel-/Nahrungsergänzungsmittelallergien |
dietary_preferences | array | Nein | [] | Ernährungspräferenzen. Siehe Werte |
activity_level | string | Nein | "moderate" | Aktivitätsniveau. Siehe Werte |
dietary_restrictions | array | Nein | [] | Ernährungseinschränkungen. Siehe Werte |
liked_foods | array | Nein | [] | Bevorzugte Lebensmittel |
disliked_foods | array | Nein | [] | Abgelehnte Lebensmittel |
meal_frequency | integer oder string | Nein | 5 | Mahlzeiten pro Tag: Jeder Tag des Plans hat genau diese Mahlzeiten, z. B. 2 = Mittag- und Abendessen. Siehe Werte |
budget | string oder object | Nein | "moderate" | Lebensmittelbudget: ein Niveau oder ein Betrag pro Tag wie "10-20 EUR/day". Siehe Werte |
medications | array | Nein | [] | Aktuelle Medikamente für Interaktionsprüfungen |
{
"age": 45,
"gender": "male",
"weight": 82,
"height": 178,
"activity_level": "moderate",
"conditions": ["hypertension"],
"medications": ["lisinopril"],
"allergies": ["shellfish"]
}
Python-Beispiel
import requests
from typing import Dict, List, Optional
def ernaehrungsplan_erstellen(
benutzername: str,
passwort: str,
patient: Dict,
bluttest: Dict,
gesundheitsziele: Optional[List[str]] = None,
ernaehrungseinschraenkungen: Optional[List[str]] = None,
sprache: str = "de"
) -> Dict:
"""
Erstellt personalisierte Ernährungs- und Nahrungsergänzungsmittelempfehlungen.
Args:
benutzername: API-Benutzername
passwort: API-Passwort
patient: Patientendemografie und Gesundheitsinformationen
bluttest: Bluttestparameter
gesundheitsziele: Optionale Gesundheitsziele
ernaehrungseinschraenkungen: Optionale Ernährungseinschränkungen
sprache: Antwortsprache
Returns:
dict: Ernährungsplan mit Nahrungsergänzungsmitteln
"""
url = "https://app.aibloodtestinterpret.com/api/v1/nutrition/diet-plan/analyze"
nutzlast = {
"username": benutzername,
"password": passwort,
"language": sprache,
"patient": patient,
"blood_test": bluttest
}
if gesundheitsziele:
nutzlast["health_goals"] = gesundheitsziele
if ernaehrungseinschraenkungen:
nutzlast["dietary_restrictions"] = ernaehrungseinschraenkungen
antwort = requests.post(url, json=nutzlast, timeout=120)
antwort.raise_for_status()
return antwort.json()
# Anwendungsbeispiel
if __name__ == "__main__":
patient = {
"age": 45,
"gender": "male",
"weight": 82,
"height": 178,
"activity_level": "moderate",
"conditions": ["hypertension"],
"allergies": ["shellfish"]
}
bluttest = {
"lab_date": "2025-12-01",
"parameters": [
{"short_name": "VITD", "result": 18, "unit": "ng/mL"},
{"short_name": "FER", "result": 25, "unit": "ng/mL"},
{"short_name": "CHOL", "result": 210, "unit": "mg/dL"}
]
}
ergebnis = ernaehrungsplan_erstellen(
benutzername="ihr_benutzername",
passwort="ihr_passwort",
patient=patient,
bluttest=bluttest,
gesundheitsziele=["lower_cholesterol", "increase_energy"]
)
# Nahrungsergänzungsmittelempfehlungen ausgeben
for supp in ergebnis['data']['nutrition_plan']['supplement_recommendations']:
print(f"{supp['name']}: {supp['dosage']} - {supp['reason']}")
Beispielantwort
{
"status": "success",
"data": {
"analysis_id": "NUT-1A2B3C4D",
"generated_at": "2026-11-04T10:30:00Z",
"patient_summary": {
"age": 34,
"gender": "female",
"weight": 62,
"height": 165,
"conditions": [],
"dietary_preferences": "omnivore"
},
"nutrition_plan": {
"nutrition_summary": {
"daily_calories": 2046,
"macro_distribution": {
"protein_g": 153,
"fat_g": 57,
"carbs_g": 230,
"fiber_g": 29
},
"key_focus_areas": [
"Rebuild iron stores (low ferritin and haemoglobin)",
"Raise vitamin D into the optimal range",
"Lower LDL cholesterol with fibre and unsaturated fats"
],
"primary_recommendations": [
"Eat a heme-iron source (red meat, poultry, fish or shellfish) at least once a day",
"Pair plant iron with vitamin C and keep tea and coffee one hour away from meals",
"Have oily fish 2-3 times a week and oats, legumes or psyllium every day"
]
},
"weekly_meal_plan": {
"monday": {
"breakfast": {
"main_dish": "Spinach and mushroom omelette (2 eggs) on wholegrain toast",
"sides": ["Orange segments", "Cherry tomatoes"],
"calories": 510,
"protein": 30,
"preparation_time": "15 minutes",
"cost_estimate": "$3-4"
},
"morning_snack": {
"items": ["Pumpkin seeds (30 g)", "Kiwi"],
"calories": 150
},
"lunch": {
"main_dish": "Lentil and vegetable soup",
"sides": ["Wholegrain bread", "Red pepper salad with lemon"],
"calories": 640,
"protein": 32,
"preparation_time": "25 minutes",
"cost_estimate": "$3-5"
},
"afternoon_snack": {
"items": ["Greek yogurt (150 g)", "Strawberries"],
"calories": 150
},
"dinner": {
"main_dish": "Grilled lean beef steak (150 g)",
"sides": ["Roasted sweet potato", "Steamed broccoli with lemon"],
"calories": 600,
"protein": 45,
"preparation_time": "30 minutes",
"cost_estimate": "$6-8"
}
}
// "tuesday" ... "sunday": the same meals as "monday"
},
"food_recommendations": {
"power_foods": [
{
"name": "Lean red meat (beef, lamb)",
"benefits": "Heme iron is absorbed two to three times better than plant iron and refills ferritin fastest; also supplies B12 and zinc.",
"serving_size": "120-150 g",
"frequency": "3 times a week",
"blood_marker_impact": "Ferritin, Hemoglobin"
},
{
"name": "Mussels and clams",
"benefits": "Among the richest heme-iron foods, with B12 and omega-3 fats.",
"serving_size": "100 g (cooked, shelled)",
"frequency": "Once a week",
"blood_marker_impact": "Ferritin, Hemoglobin"
}
// 12-15 foods in a live plan
],
"foods_to_limit": [
{
"name": "Tea and coffee with meals",
"reason": "Tannins and polyphenols can cut iron absorption from a meal by more than half.",
"alternative": "Drink them at least one hour before or after eating; water or rooibos with meals",
"impact_on_health": "Slows the rebuilding of ferritin"
},
{
"name": "Processed meats (sausages, salami, bacon)",
"reason": "High in saturated fat and salt, which raise LDL and blood pressure.",
"alternative": "Grilled chicken, turkey or lean beef",
"impact_on_health": "Keeps LDL cholesterol high"
}
// 12-15 foods in a live plan
],
"hydration": {
"daily_water": "3.1 L",
"timing": "A glass on waking, then evenly through the day; less in the hour before bed",
"special_considerations": "Keep tea and coffee at least one hour away from iron-rich meals"
}
},
"supplement_recommendations": [
{
"name": "Iron bisglycinate",
"dosage": "25 mg elemental iron a day",
"timing": "In the morning on an empty stomach, with vitamin C",
"reason": "Ferritin 14 ng/mL and haemoglobin 11.8 g/dL show depleted iron stores",
"duration": "3 months, then retest ferritin",
"contraindications": "Haemochromatosis; take 2 hours apart from calcium, antacids and thyroid medication",
"source": "evidence_based",
"priority": "high",
"blood_marker_addressed": "Ferritin, Hemoglobin",
"priority_label": "High",
"source_label": "Evidence-Based"
},
{
"name": "Vitamin D3",
"dosage": "2000 IU a day",
"timing": "With the largest meal of the day",
"reason": "Vitamin D 18 ng/mL is below the 30 ng/mL threshold",
"duration": "3 months, then retest",
"contraindications": "Hypercalcaemia, sarcoidosis",
"source": "evidence_based",
"priority": "high",
"blood_marker_addressed": "Vitamin D (25-OH)",
"priority_label": "High",
"source_label": "Evidence-Based"
}
// 5-8 supplements in a live plan
],
"lifestyle_integration": {
"meal_prep_tips": [
"Cook a large pot of lentils or chickpeas on Sunday for three lunches",
"Keep cut peppers and kiwi ready to add vitamin C to meals",
"Portion nuts and seeds into small boxes for snacks"
],
"shopping_list": {
"proteins": ["Lean beef", "Salmon", "Sardines", "Mussels", "Chicken liver", "Eggs"],
"vegetables": ["Spinach", "Kale", "Broccoli", "Bell peppers", "Tomatoes"],
"fruits": ["Kiwi", "Oranges", "Strawberries", "Dried apricots"],
"grains": ["Oats", "Quinoa", "Brown rice", "Wholegrain bread"],
"dairy_alternatives": ["Greek yogurt", "Kefir", "Cottage cheese"],
"pantry_staples": ["Lentils", "Chickpeas", "Pumpkin seeds", "Olive oil", "Psyllium husk"]
},
"eating_schedule": {
"breakfast": "07:30-08:30",
"morning_snack": "10:30",
"lunch": "12:30-13:30",
"afternoon_snack": "16:00",
"dinner": "19:00-20:00"
},
"special_occasions": "When eating out, choose grilled meat or fish with salad, and keep coffee for after the meal."
},
"monitoring_plan": {
"weekly_goals": [
"Heme iron at least 5 days a week",
"Oily fish twice a week",
"No tea or coffee within an hour of meals"
],
"tracking_metrics": [
"Energy levels",
"Fatigue and breathlessness",
"Weight",
"Digestive tolerance of the iron supplement"
],
"adjustment_signs": [
"Constipation or stomach upset from the iron supplement",
"No improvement in energy after 6 weeks"
],
"follow_up_tests": [
"Ferritin, iron and haemoglobin in 8-12 weeks",
"Vitamin D (25-OH) in 3 months",
"Lipid panel in 3 months"
],
"expected_improvements": [
"Ferritin up 15-30 ng/mL within 3 months",
"Vitamin D above 30 ng/mL within 3 months",
"LDL down 10-15% within 3 months"
]
},
"educational_insights": {
"blood_test_connections": [
{
"parameter": "Ferritin",
"current_value": "14 ng/mL",
"dietary_impact": "Iron stores are low; heme iron and vitamin C with meals refill them fastest.",
"foods_that_help": ["Lean red meat", "Mussels", "Chicken liver", "Lentils with peppers"]
},
{
"parameter": "Hemoglobin",
"current_value": "11.8 g/dL",
"dietary_impact": "Slightly below range, consistent with iron deficiency; it rises as ferritin recovers.",
"foods_that_help": ["Beef", "Spinach with lemon", "Eggs"]
}
// one entry per relevant blood test parameter
],
"nutritional_science": [
"Heme iron from animal foods is absorbed at 15-35%, plant iron at 2-20%.",
"Vitamin C turns plant iron into a form the gut absorbs more easily.",
"Beta-glucan from oats forms a gel that carries cholesterol-rich bile out of the body."
],
"success_strategies": [
"Plan the week's meals and shop once",
"Add a vitamin C food to every iron-rich meal",
"Retest on schedule to see the progress"
]
},
"metadata": {
"generated_at": "2026-11-04T10:30:00",
"patient_id": "api_1a2b3c4d",
"bmr": 1320.25,
"tdee": 2046.39,
"nutritional_concerns": ["vitamin_d_deficiency", "anemia", "iron_deficiency", "elevated_ldl"],
"version": "2.2",
"used_clinic_supplements": false,
"clinic_supplements_count": 0,
"report_language": "english",
"meal_slots": ["breakfast", "morning_snack", "lunch", "afternoon_snack", "dinner"],
"meal_frequency": "3 meals and 2 snacks a day (breakfast, morning snack, lunch, afternoon snack, dinner)",
"budget": "moderate",
"api_provider": "KantestiAI Engine",
"model": "KantestiAI Engine"
}
},
"labels": {
"nutrition_summary": "Nutrition Summary",
"key_focus_areas": "Key Focus Areas",
"weekly_meal_plan": "Weekly Meal Plan",
"monday": "Monday",
"breakfast": "Breakfast",
"morning_snack": "Morning Snack",
"main_dish": "Main Dish",
"supplement_recommendations": "Supplement Recommendations",
"priority": "Priority",
"high": "High",
"evidence_based": "Evidence-Based"
// ... one entry for every key of nutrition_plan and every priority / source code
},
"language": "en",
"sandbox_mode": false
},
"timestamp": "2026-11-04T10:30:00Z",
"api_version": "1.0.0",
"message": "Nutrition analysis completed successfully"
}
Antwortfelder-Referenz
Der Produktionsendpunkt (/analyze) und die Sandbox liefern dieselbe Struktur. JSON-Schlüssel und Codes sind immer auf Englisch; alle Texte sind in der mit language angeforderten Sprache (Sandbox-Texte sind immer auf Englisch). Zeigen Sie Benutzern keine Schlüssel oder Codes an: Entnehmen Sie die Titel aus labels und zeigen Sie für Priorität und Quelle eines Nahrungsergänzungsmittels priority_label und source_label an. Jeder Tag in weekly_meal_plan, von monday bis sunday, hat dieselben Mahlzeiten: die von meal_frequency, standardmäßig fünf.
Der Plan wird in 39 Sprachen verfasst: en, de, fr, it, es, pt, ar, he, el, pl, tr, zh, ru, fa, ja, ko, nl, hi, id, th, vi, sv, no, da, fi, cs, ms, af, uk, ro, hu, sk, sl, hr, bg, sr, lv, lt, et. Jeder andere unterstützte Sprachcode (language) liefert den Plan und seine labels auf Englisch.
data Objekt
| Feld | Typ | Beschreibung |
|---|---|---|
analysis_id | string | Eindeutige Kennung für diese Analyse (z.B. "NUT-1A2B3C4D") |
generated_at | string | Erstellungszeitpunkt (ISO 8601, UTC) |
patient_summary | object | Die von Ihnen gesendeten Patientendaten: age, gender, weight, height, conditions, dietary_preferences |
nutrition_plan | object | Der Ernährungsplan (Abschnitte unten) |
labels | object | Anzeigetexte in der angeforderten Sprache für jeden Schlüssel von nutrition_plan und jeden Code von priority und source, z.B. labels.key_focus_areas, labels.monday, labels.high |
language | string | Sprachcode der Antwort |
sandbox_mode | boolean | true nur in Sandbox-Antworten |
nutrition_plan Objekt
| Feld | Typ | Beschreibung |
|---|---|---|
nutrition_summary | object | Tägliche Kalorien- und Makronährstoffziele sowie die Schwerpunkte des Plans |
weekly_meal_plan | object | monday bis sunday, jeder Tag mit den Mahlzeiten von meal_frequency (unten); standardmäßig fünf |
food_recommendations | object | power_foods, foods_to_limit (unten) und hydration (daily_water, timing, special_considerations) |
supplement_recommendations | array | Empfehlungen zu Nahrungsergänzungsmitteln (unten). Eine je auffälligem oder grenzwertigem Marker, bei dem ein Präparat helfen kann, keine für einen Marker im Normbereich; keine feste Anzahl. |
lifestyle_integration | object | meal_prep_tips, shopping_list (nach Lebensmittelgruppe), eating_schedule (Uhrzeit jeder Mahlzeit), special_occasions |
monitoring_plan | object | weekly_goals, tracking_metrics, adjustment_signs, follow_up_tests, expected_improvements (Listen von Texten) |
educational_insights | object | blood_test_connections (parameter, current_value, dietary_impact, foods_that_help), nutritional_science, success_strategies |
metadata | object | Technische Angaben, nicht zur Anzeige bestimmt: bmr und tdee (kcal/Tag), nutritional_concerns (Codes), version, report_language, meal_slots (die Mahlzeiten jedes Tages, z. B. ["lunch", "dinner"]), meal_frequency und budget (wie die Werte der Anfrage verstanden wurden) |
nutrition_plan.nutrition_summary Objekt
| Feld | Typ | Beschreibung |
|---|---|---|
daily_calories | integer | Tägliches Kalorienziel (kcal) |
macro_distribution | object | protein_g, fat_g, carbs_g, fiber_g: Gramm pro Tag |
key_focus_areas | array | Hauptschwerpunkte des Plans |
primary_recommendations | array | Die wichtigsten Empfehlungen |
weekly_meal_plan.<day> Objekt
| Feld | Typ | Beschreibung |
|---|---|---|
breakfast, lunch, dinner | object | Hauptmahlzeiten (Felder unten) |
morning_snack, afternoon_snack | object | Snacks: items (Array von Texten) und calories (Ganzzahl, kcal) |
Ein Tag hat genau die Mahlzeiten von meal_frequency, und metadata.meal_slots listet sie auf: bei 2 nur lunch und dinner. Zeigen Sie die Mahlzeiten an, die ein Tag hat, nicht eine feste Liste von fünf.
breakfast / lunch / dinner Objekt
| Feld | Typ | Beschreibung |
|---|---|---|
main_dish | string | Name des Hauptgerichts |
sides | array | Beilagen |
calories | integer | Kalorien (kcal) |
protein | integer | Protein (g) |
preparation_time | string | Zubereitungszeit (z.B. "15 Minuten") |
cost_estimate | string | Geschätzte Kosten (z.B. "$3-5") |
food_recommendations.power_foods Array-Element
| Feld | Typ | Beschreibung |
|---|---|---|
name | string | Lebensmittelname |
benefits | string | Warum es hilft, bezogen auf die Bluttestergebnisse |
serving_size | string | Portionsgröße |
frequency | string | Wie oft man es essen soll |
blood_marker_impact | string | Blutmarker, denen es hilft |
food_recommendations.foods_to_limit Array-Element
| Feld | Typ | Beschreibung |
|---|---|---|
name | string | Lebensmittelname |
reason | string | Warum man es einschränken sollte |
alternative | string | Gesündere Alternative |
impact_on_health | string | Auswirkung auf die Gesundheit des Patienten |
supplement_recommendations Array-Element
| Feld | Typ | Beschreibung |
|---|---|---|
name | string | Name des Nahrungsergänzungsmittels |
dosage | string | Dosierung (z.B. "2000 IE täglich") |
timing | string | Wann man es einnehmen soll |
reason | string | Warum es empfohlen wird, basierend auf den Bluttestergebnissen |
duration | string | Wie lange man es einnehmen soll |
contraindications | string | Kontraindikationen und Wechselwirkungen |
source | string | Code: clinic_library (aus Ihrer Bibliothek der Nahrungsergänzungsmittel) oder evidence_based |
source_label | string | source als Text in der angeforderten Sprache, bereit zur Anzeige |
priority | string | Code: high, medium oder low |
priority_label | string | priority als Text in der angeforderten Sprache, bereit zur Anzeige |
blood_marker_addressed | string | Blutmarker, auf die es abzielt |
Vollständiges cURL-Beispiel mit Antwort
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/nutrition/diet-plan/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "demo_user",
"password": "demo_pass",
"language": "de",
"patient": {
"age": 42,
"gender": "female",
"weight": 68,
"height": 165,
"activity_level": "moderate",
"conditions": ["iron_deficiency_anemia"],
"allergies": ["gluten"],
"dietary_preferences": ["mediterranean"],
"dietary_restrictions": ["gluten_free"],
"liked_foods": ["salmon", "spinach", "quinoa"],
"disliked_foods": ["liver"],
"meal_frequency": 5,
"budget": "moderate",
"medications": ["ferrous_sulfate"]
},
"blood_test": {
"lab_date": "2025-12-20",
"parameters": [
{"short_name": "FER", "result": 12, "unit": "ng/mL"},
{"short_name": "HGB", "result": 10.8, "unit": "g/dL"},
{"short_name": "VITD", "result": 22, "unit": "ng/mL"}
]
},
"health_goals": ["increase_energy", "improve_iron_levels"]
}'
Antwort:
{
"status": "success",
"data": {
"analysis_id": "NUT-1A2B3C4D",
"generated_at": "2026-11-04T10:30:00Z",
"patient_summary": {
"age": 34,
"gender": "female",
"weight": 62,
"height": 165,
"conditions": [],
"dietary_preferences": "omnivore"
},
"nutrition_plan": {
"nutrition_summary": {
"daily_calories": 2046,
"macro_distribution": {
"protein_g": 153,
"fat_g": 57,
"carbs_g": 230,
"fiber_g": 29
},
"key_focus_areas": [
"Rebuild iron stores (low ferritin and haemoglobin)",
"Raise vitamin D into the optimal range",
"Lower LDL cholesterol with fibre and unsaturated fats"
],
"primary_recommendations": [
"Eat a heme-iron source (red meat, poultry, fish or shellfish) at least once a day",
"Pair plant iron with vitamin C and keep tea and coffee one hour away from meals",
"Have oily fish 2-3 times a week and oats, legumes or psyllium every day"
]
},
"weekly_meal_plan": {
"monday": {
"breakfast": {
"main_dish": "Spinach and mushroom omelette (2 eggs) on wholegrain toast",
"sides": ["Orange segments", "Cherry tomatoes"],
"calories": 510,
"protein": 30,
"preparation_time": "15 minutes",
"cost_estimate": "$3-4"
},
"morning_snack": {
"items": ["Pumpkin seeds (30 g)", "Kiwi"],
"calories": 150
},
"lunch": {
"main_dish": "Lentil and vegetable soup",
"sides": ["Wholegrain bread", "Red pepper salad with lemon"],
"calories": 640,
"protein": 32,
"preparation_time": "25 minutes",
"cost_estimate": "$3-5"
},
"afternoon_snack": {
"items": ["Greek yogurt (150 g)", "Strawberries"],
"calories": 150
},
"dinner": {
"main_dish": "Grilled lean beef steak (150 g)",
"sides": ["Roasted sweet potato", "Steamed broccoli with lemon"],
"calories": 600,
"protein": 45,
"preparation_time": "30 minutes",
"cost_estimate": "$6-8"
}
}
// "tuesday" ... "sunday": the same meals as "monday"
},
"food_recommendations": {
"power_foods": [
{
"name": "Lean red meat (beef, lamb)",
"benefits": "Heme iron is absorbed two to three times better than plant iron and refills ferritin fastest; also supplies B12 and zinc.",
"serving_size": "120-150 g",
"frequency": "3 times a week",
"blood_marker_impact": "Ferritin, Hemoglobin"
},
{
"name": "Mussels and clams",
"benefits": "Among the richest heme-iron foods, with B12 and omega-3 fats.",
"serving_size": "100 g (cooked, shelled)",
"frequency": "Once a week",
"blood_marker_impact": "Ferritin, Hemoglobin"
}
// 12-15 foods in a live plan
],
"foods_to_limit": [
{
"name": "Tea and coffee with meals",
"reason": "Tannins and polyphenols can cut iron absorption from a meal by more than half.",
"alternative": "Drink them at least one hour before or after eating; water or rooibos with meals",
"impact_on_health": "Slows the rebuilding of ferritin"
},
{
"name": "Processed meats (sausages, salami, bacon)",
"reason": "High in saturated fat and salt, which raise LDL and blood pressure.",
"alternative": "Grilled chicken, turkey or lean beef",
"impact_on_health": "Keeps LDL cholesterol high"
}
// 12-15 foods in a live plan
],
"hydration": {
"daily_water": "3.1 L",
"timing": "A glass on waking, then evenly through the day; less in the hour before bed",
"special_considerations": "Keep tea and coffee at least one hour away from iron-rich meals"
}
},
"supplement_recommendations": [
{
"name": "Iron bisglycinate",
"dosage": "25 mg elemental iron a day",
"timing": "In the morning on an empty stomach, with vitamin C",
"reason": "Ferritin 14 ng/mL and haemoglobin 11.8 g/dL show depleted iron stores",
"duration": "3 months, then retest ferritin",
"contraindications": "Haemochromatosis; take 2 hours apart from calcium, antacids and thyroid medication",
"source": "evidence_based",
"priority": "high",
"blood_marker_addressed": "Ferritin, Hemoglobin",
"priority_label": "High",
"source_label": "Evidence-Based"
},
{
"name": "Vitamin D3",
"dosage": "2000 IU a day",
"timing": "With the largest meal of the day",
"reason": "Vitamin D 18 ng/mL is below the 30 ng/mL threshold",
"duration": "3 months, then retest",
"contraindications": "Hypercalcaemia, sarcoidosis",
"source": "evidence_based",
"priority": "high",
"blood_marker_addressed": "Vitamin D (25-OH)",
"priority_label": "High",
"source_label": "Evidence-Based"
}
// 5-8 supplements in a live plan
],
"lifestyle_integration": {
"meal_prep_tips": [
"Cook a large pot of lentils or chickpeas on Sunday for three lunches",
"Keep cut peppers and kiwi ready to add vitamin C to meals",
"Portion nuts and seeds into small boxes for snacks"
],
"shopping_list": {
"proteins": ["Lean beef", "Salmon", "Sardines", "Mussels", "Chicken liver", "Eggs"],
"vegetables": ["Spinach", "Kale", "Broccoli", "Bell peppers", "Tomatoes"],
"fruits": ["Kiwi", "Oranges", "Strawberries", "Dried apricots"],
"grains": ["Oats", "Quinoa", "Brown rice", "Wholegrain bread"],
"dairy_alternatives": ["Greek yogurt", "Kefir", "Cottage cheese"],
"pantry_staples": ["Lentils", "Chickpeas", "Pumpkin seeds", "Olive oil", "Psyllium husk"]
},
"eating_schedule": {
"breakfast": "07:30-08:30",
"morning_snack": "10:30",
"lunch": "12:30-13:30",
"afternoon_snack": "16:00",
"dinner": "19:00-20:00"
},
"special_occasions": "When eating out, choose grilled meat or fish with salad, and keep coffee for after the meal."
},
"monitoring_plan": {
"weekly_goals": [
"Heme iron at least 5 days a week",
"Oily fish twice a week",
"No tea or coffee within an hour of meals"
],
"tracking_metrics": [
"Energy levels",
"Fatigue and breathlessness",
"Weight",
"Digestive tolerance of the iron supplement"
],
"adjustment_signs": [
"Constipation or stomach upset from the iron supplement",
"No improvement in energy after 6 weeks"
],
"follow_up_tests": [
"Ferritin, iron and haemoglobin in 8-12 weeks",
"Vitamin D (25-OH) in 3 months",
"Lipid panel in 3 months"
],
"expected_improvements": [
"Ferritin up 15-30 ng/mL within 3 months",
"Vitamin D above 30 ng/mL within 3 months",
"LDL down 10-15% within 3 months"
]
},
"educational_insights": {
"blood_test_connections": [
{
"parameter": "Ferritin",
"current_value": "14 ng/mL",
"dietary_impact": "Iron stores are low; heme iron and vitamin C with meals refill them fastest.",
"foods_that_help": ["Lean red meat", "Mussels", "Chicken liver", "Lentils with peppers"]
},
{
"parameter": "Hemoglobin",
"current_value": "11.8 g/dL",
"dietary_impact": "Slightly below range, consistent with iron deficiency; it rises as ferritin recovers.",
"foods_that_help": ["Beef", "Spinach with lemon", "Eggs"]
}
// one entry per relevant blood test parameter
],
"nutritional_science": [
"Heme iron from animal foods is absorbed at 15-35%, plant iron at 2-20%.",
"Vitamin C turns plant iron into a form the gut absorbs more easily.",
"Beta-glucan from oats forms a gel that carries cholesterol-rich bile out of the body."
],
"success_strategies": [
"Plan the week's meals and shop once",
"Add a vitamin C food to every iron-rich meal",
"Retest on schedule to see the progress"
]
},
"metadata": {
"generated_at": "2026-11-04T10:30:00",
"patient_id": "api_1a2b3c4d",
"bmr": 1320.25,
"tdee": 2046.39,
"nutritional_concerns": ["vitamin_d_deficiency", "anemia", "iron_deficiency", "elevated_ldl"],
"version": "2.2",
"used_clinic_supplements": false,
"clinic_supplements_count": 0,
"report_language": "english",
"meal_slots": ["breakfast", "morning_snack", "lunch", "afternoon_snack", "dinner"],
"meal_frequency": "3 meals and 2 snacks a day (breakfast, morning snack, lunch, afternoon snack, dinner)",
"budget": "moderate",
"api_provider": "KantestiAI Engine",
"model": "KantestiAI Engine"
}
},
"labels": {
"nutrition_summary": "Nutrition Summary",
"key_focus_areas": "Key Focus Areas",
"weekly_meal_plan": "Weekly Meal Plan",
"monday": "Monday",
"breakfast": "Breakfast",
"morning_snack": "Morning Snack",
"main_dish": "Main Dish",
"supplement_recommendations": "Supplement Recommendations",
"priority": "Priority",
"high": "High",
"evidence_based": "Evidence-Based"
// ... one entry for every key of nutrition_plan and every priority / source code
},
"language": "en",
"sandbox_mode": false
},
"timestamp": "2026-11-04T10:30:00Z",
"api_version": "1.0.0",
"message": "Nutrition analysis completed successfully"
}
Bluttestvergleich-API
Vergleichen Sie mehrere Bluttests, um Veränderungen, Verbesserungen und Bereiche zu identifizieren, die Aufmerksamkeit erfordern, mit KI-gestützter Analyse. Erhalten Sie vollständige KI-narrative Zusammenfassungen, die erklären, was sich zwischen Tests geändert hat.
Analysiert 2-20 Bluttests und liefert einen detaillierten Vergleich mit KI-generierten narrativen Erkenntnissen.
- Mindestens 2 Bluttests erforderlich
- Maximal 20 Bluttests pro Anfrage
- Jeder Test muss
lab_dateoderresults_dateenthalten - Mindestens ein gemeinsamer Parameter über alle Tests
Anfrageparameter
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
username | string | Ja | - | Ihr API-Benutzername |
password | string | Ja | - | Ihr API-Passwort |
language | string | Nein | en | Antwortsprache. Siehe unterstützte Sprachen |
blood_tests | array | Ja | - | Array von Bluttestobjekten (2-20 Tests) |
blood_tests Array-Struktur
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
lab_date | string | Ja* | Testdatum im YYYY-MM-DD Format |
results_date | string | Ja* | Alternative zu lab_date (YYYY-MM-DD) |
parameters | array | Ja | Array von Bluttestparametern |
metadata | object | Nein | Zusätzliche Metadaten (lab_name, notes, etc.) |
*Entweder lab_date oder results_date ist für jeden Bluttest erforderlich.
Python-Beispiel
import requests
from typing import Dict, List
def bluttests_vergleichen(
benutzername: str,
passwort: str,
bluttests: List[Dict],
sprache: str = "de"
) -> Dict:
"""
Vergleicht mehrere Bluttests für Trendanalyse.
Args:
benutzername: API-Benutzername
passwort: API-Passwort
bluttests: Liste von Bluttestobjekten (2-20 Tests)
sprache: Antwortsprache
Returns:
dict: Vergleichsergebnisse mit KI-narrativen Erkenntnissen
"""
url = "https://app.aibloodtestinterpret.com/api/v1/bloodtest/comparison/analyze"
if len(bluttests) < 2:
raise ValueError("Mindestens 2 Bluttests erforderlich")
if len(bluttests) > 20:
raise ValueError("Maximal 20 Bluttests erlaubt")
nutzlast = {
"username": benutzername,
"password": passwort,
"language": sprache,
"blood_tests": bluttests
}
antwort = requests.post(url, json=nutzlast, timeout=120)
antwort.raise_for_status()
return antwort.json()
# Anwendungsbeispiel
if __name__ == "__main__":
tests = [
{
"lab_date": "2024-06-15",
"parameters": [
{"short_name": "HGB", "result": 12.2, "unit": "g/dL"},
{"short_name": "CHOL", "result": 235, "unit": "mg/dL"},
{"short_name": "LDL", "result": 155, "unit": "mg/dL"}
]
},
{
"lab_date": "2024-12-15",
"parameters": [
{"short_name": "HGB", "result": 14.5, "unit": "g/dL"},
{"short_name": "CHOL", "result": 185, "unit": "mg/dL"},
{"short_name": "LDL", "result": 98, "unit": "mg/dL"}
]
}
]
ergebnis = bluttests_vergleichen("ihr_benutzername", "ihr_passwort", tests)
print(f"Gesamttrend: {ergebnis['data']['comparison_summary']['overall_trend']}")
for param in ergebnis['data']['parameter_analysis']:
print(f"{param['parameter_name']}: {param['trend_assessment']}")
Antwortfelder-Referenz
| Feld | Typ | Beschreibung |
|---|---|---|
comparison_id | string | Eindeutige Kennung für diesen Vergleich (Format: CMP-XXXXXXXX) |
comparison_summary | object | Übersicht: key_findings, overall_trend, Berichtsdaten, time_interval |
parameter_analysis | array | Detaillierte Analyse pro Parameter mit Änderungstyp und klinischer Bedeutung |
health_assessment | object | Besorgnisbereiche, Verbesserungen, positive Entwicklungen, Risikofaktoren |
recommendations | object | Folgeuntersuchungen, sofortige Maßnahmen, Lebensstiländerungen, Fachärztüberweisungen |
detailed_interpretation | object | KI-narrative Abschnitte mit Zusammenfassung und klinischen Empfehlungen |
parameter_analysis Objektstruktur
| Feld | Typ | Beschreibung |
|---|---|---|
parameter_name | string | Parametername |
report1_value | string | Wert aus erstem Bericht mit Einheit |
report2_value | string | Wert aus zweitem Bericht mit Einheit |
change_type | string | increased, decreased oder stable |
change_magnitude | string | significant, moderate oder minor |
clinical_significance | string | KI-Erklärung der Bedeutung der Änderung |
trend_assessment | string | positive, negative oder neutral |
Beispielantwort
{
"api_version": "1.0.0",
"status": "success",
"message": "Bluttestvergleich erfolgreich abgeschlossen",
"timestamp": "2025-12-22T01:12:43.057537Z",
"data": {
"comparison_id": "CMP-F4ACEE52",
"tests_compared": 2,
"date_range": {
"earliest": "2024-06-15",
"latest": "2024-12-15",
"span_days": 183
},
"comparison_summary": {
"overall_trend": "verbessert",
"report1_date": "2024-06-15",
"report2_date": "2024-12-15",
"time_interval": "183 Tage zwischen Berichten",
"key_findings": [
"Hämoglobin- und RBC-Werte normalisiert, was auf Behebung der Anämie hinweist",
"Glukose und HbA1c verbessert auf Normalbereich",
"Lipidprofil verbessert mit normalisierten Cholesterinwerten"
]
},
"parameter_analysis": [
{
"parameter_name": "Hämoglobin",
"report1_value": "12,2 g/dL",
"report2_value": "14,5 g/dL",
"change_type": "increased",
"change_magnitude": "significant",
"clinical_significance": "Verbesserung von Anämie zu normalen Hämoglobinwerten",
"trend_assessment": "positive"
},
{
"parameter_name": "LDL-Cholesterin",
"report1_value": "155 mg/dL",
"report2_value": "98 mg/dL",
"change_type": "decreased",
"change_magnitude": "significant",
"clinical_significance": "LDL nahe optimalem Bereich, reduziert Atheroskleroserisiko",
"trend_assessment": "positive"
}
],
"health_assessment": {
"overall_health_trend": "verbessert",
"areas_of_improvement": [
"Anämiekorrektur",
"Glykämische Kontrolle",
"Lipidprofil-Normalisierung"
],
"areas_of_concern": [],
"positive_developments": [
"Behebung der Anämie",
"Normale Glukose und HbA1c",
"Verbessertes kardiovaskuläres Risikoprofil"
]
},
"recommendations": {
"immediate_actions": [
"Aktuelle Supplementierung für Eisen und Vitamin D fortsetzen"
],
"follow_up_tests": [
"Blutbild und Eisenstudien in 3 Monaten wiederholen",
"Nüchternglukose und HbA1c vierteljährlich überwachen"
],
"lifestyle_modifications": [
"Herzgesunde Ernährung mit wenig gesättigten Fetten"
],
"monitoring_frequency": "3 Monate"
},
"summary": {
"improved_parameters": 13,
"stable_parameters": 0,
"worsened_parameters": 0,
"overall_trend": "verbessert"
},
"sandbox_mode": false
}
}
Antwortfelder verwenden standardisierte Werte: overall_trend und trend_assessment (siehe Trendbewertung), change_type (increased, decreased, stable).
Schlüsselwort-Referenz
Vollständige Referenz für alle Eingabeschlüsselwerte, die in Kantesti API-Endpunkten verwendet werden. Verwenden Sie diese exakten Werte bei API-Anfragen.
analysis_type Trendanalyse-API
Gibt den Typ der durchzuführenden Trendanalyse an.
| Wert | Standard | Beschreibung |
|---|---|---|
comprehensive | ✓ | Vollständige Analyse mit Statistiken, Diagrammen und KI-Interpretation |
statistical | Nur statistische Analyse | |
summary | Nur Zusammenfassung auf hoher Ebene |
health_goals Ernährungs-API
Gesundheitsziele für personalisierte Ernährungsempfehlungen. Mehrere Werte können als Array bereitgestellt werden.
| Wert | Beschreibung |
|---|---|
maintain | Aktuelle Gesundheit beibehalten (Standard) |
improve_energy | Fokus auf Energieniveau |
weight_management | Gesundes Gewichtsmanagement |
heart_health | Kardiovaskuläre Gesundheit |
immune_support | Unterstützung des Immunsystems |
digestive_health | Verdauungsgesundheit |
bone_health | Knochengesundheit |
mental_clarity | Kognitive Funktion |
dietary_restrictions Ernährungs-API
Ernährungseinschränkungen und Allergien. Mehrere Werte können als Array bereitgestellt werden. Freitext wird auch für benutzerdefinierte Einschränkungen akzeptiert.
| Wert | Beschreibung |
|---|---|
low_sodium | Reduzierte Natriumaufnahme |
low_sugar | Reduzierte Zuckeraufnahme |
low_fat | Reduzierte Fettaufnahme |
gluten_free | Kein Gluten |
dairy_free | Keine Milchprodukte |
nut_free | Keine Nüsse |
soy_free | Kein Soja |
egg_free | Keine Eier |
halal | Halal-konform |
kosher | Koscher-konform |
Freitext wird auch für benutzerdefinierte Ernährungseinschränkungen akzeptiert, die oben nicht aufgeführt sind.
dietary_preferences Ernährungs-API
Ernährungslebensstil-Präferenzen für die Mahlzeitenplanung.
| Wert | Beschreibung |
|---|---|
omnivore | Keine Einschränkungen (Standard) |
vegetarian | Kein Fleisch |
vegan | Keine tierischen Produkte |
pescatarian | Vegetarisch + Fisch |
keto | Ketogene Ernährung |
paleo | Paläolithische Ernährung |
mediterranean | Mediterrane Ernährung |
Der Plan hält dietary_preferences, dietary_restrictions und allergies in jedem Abschnitt ein: Mahlzeiten, empfohlene Lebensmittel und Nahrungsergänzungsmittel (vegetarisch: kein Fleisch, kein Fisch, keine Leber, kein Fischöl; Omega-3 aus Algenöl, Leinsamen oder Walnüssen).
activity_level Ernährungs-API
Körperliches Aktivitätsniveau für Kalorien- und Nährstoffberechnungen.
| Wert | Beschreibung |
|---|---|
sedentary | Wenig oder keine Bewegung |
light | Leichte Bewegung 1-3 Tage/Woche |
moderate | Moderate Bewegung 3-5 Tage/Woche (Standard) |
active | Intensive Bewegung 6-7 Tage/Woche |
very_active | Sehr intensive Bewegung oder körperlicher Beruf |
meal_frequency Ernährungs-API
Die Mahlzeiten, die jeder Tag des Plans hat, und keine anderen. Die Antwort listet sie in nutrition_plan.metadata.meal_slots auf. Die Sandbox antwortet mit denselben Mahlzeiten, sodass Sie jede Option testen können, ohne das API-Kontingent zu verbrauchen.
| Wert | Mahlzeiten jedes Tages |
|---|---|
1 | dinner |
2 | lunch, dinner |
3 | breakfast, lunch, dinner |
4 | breakfast, lunch, afternoon_snack, dinner |
5 oder mehr | breakfast, morning_snack, lunch, afternoon_snack, dinner (Standard) |
"2 meals + 1 snack", "3 meals and 2 snacks" | Die angegebenen Mahlzeiten und Snacks (höchstens 3 Mahlzeiten und 2 Snacks) |
"intermittent", "16:8" | lunch, afternoon_snack, dinner, alle zwischen 12:00 und 20:00 Uhr |
["breakfast", "dinner"] | Genau die aufgeführten Mahlzeiten |
budget Ernährungs-API
Lebensmittelbudget des Ernährungsplans: ein Niveau oder ein Betrag. Bei einem Betrag ist jedes cost_estimate in dessen Währung angegeben, und die Mahlzeiten jedes Tages bleiben innerhalb dieses Betrags.
| Wert | Beschreibung |
|---|---|
low | Budgetbewusste Optionen |
moderate | Ausgewogene Optionen (Standard) |
high | Premium-Optionen |
"10-20 EUR/day", "€15 a day", "100 EUR per week" | Ein Betrag pro Tag, Woche oder Monat mit seiner Währung (EUR, USD, GBP, TRY, ... oder € $ £ ₺) |
{"min": 10, "max": 20, "currency": "EUR"} | Derselbe Betrag als Objekt (optional "period": "day", "week" oder "month") |
gender Alle APIs
Patientengeschlecht für personalisierte Referenzbereiche und Empfehlungen.
| Wert | Beschreibung |
|---|---|
male | Männlicher Patient |
female | Weiblicher Patient |
other | Andere oder nicht angegeben |
Ausgabe-Schlüsselwörter
Die folgenden Schlüsselwörter erscheinen in API-Antworten. Das Verständnis dieser Werte hilft Ihnen, Ergebnisse korrekt zu interpretieren und anzuzeigen.
evaluation Bluttest- & Vergleichs-APIs
Parameterbewertungsstatus, der angibt, wie das Ergebnis im Vergleich zu Referenzbereichen steht.
| Wert | Beschreibung |
|---|---|
normal | Innerhalb des normalen Referenzbereichs |
low | Unter dem Normalbereich |
high | Über dem Normalbereich |
critical_low | Kritisch niedrig (sofortige Aufmerksamkeit erforderlich) |
critical_high | Kritisch hoch (sofortige Aufmerksamkeit erforderlich) |
borderline_low | Leicht unter dem Normalbereich |
borderline_high | Leicht über dem Normalbereich |
Was die Bluttest-Analyse-API je type zurückgibt:
| Wert | Zeilentyp | Anzeigen als |
|---|---|---|
optimal, normal | range | Normal |
slightly_low, slightly_high | range | Grenzwertig (außerhalb des Normalbereichs, innerhalb des äußeren Bereichs) |
low, high | range | Auffällig |
good | binary | Normal (z. B. „Negativ“, wo negativ erwartet wird) |
bad | binary | Auffällig (z. B. „Positiv“, wo negativ erwartet wird) |
Unknown | beide | Nicht bewertet (kein Ergebnis oder keine Referenz zur Bewertung) — weder normal noch auffällig |
Referenzbereiche Bluttest- & Vergleichs-APIs
Jeder range-Marker hat drei ineinanderliegende Bereiche, vom engsten zum weitesten. Zeigen Sie jeden mit Bezeichnung und Einheit an (z. B. Optimal: 0.0 – 0.51 %) und markieren Sie mit evaluation den Bereich, in dem das Ergebnis liegt. Blenden Sie einen Bereich aus, dessen Felder null sind; binary-Zeilen haben keine Bereiche.
| Anzuzeigende Bezeichnung | Felder | Das Ergebnis liegt hier, wenn evaluation ist |
|---|---|---|
| Optimal | range_optimal_min – range_optimal_max | optimal |
| Normal (Referenzbereich) | range_normal_min – range_normal_max | normal |
| Grenzbereich | range_min – range_max | slightly_low, slightly_high (zwischen Normalbereich und dieser Grenze: grenzwertig) |
| Außerhalb des Grenzbereichs | — | low, high (auffällig) |
Beispiel: Ein Ergebnis von 0.2 % mit Optimal 0.0 – 0.51 %, Normal 0.0 – 0.6 % und Grenzbereich 0.0 – 0.9 % liegt im Optimalbereich (evaluation: optimal).
trend_assessment Vergleichs- & Trend-APIs
Gesamtbewertung der Parametertrends zwischen Tests.
| Wert | Beschreibung |
|---|---|
positive | Verbessert (bewegt sich zum Normalbereich) |
negative | Verschlechtert (entfernt sich vom Normalbereich) |
stable | Relativ unverändert zwischen Tests |
improving | Allgemeiner Verbesserungstrend |
worsening | Allgemeiner Verschlechterungstrend |
trend_direction Trendanalyse-API
Richtung der Parameterwertänderungen über die Zeit.
| Wert | Beschreibung |
|---|---|
upward | Werte steigen über die Zeit |
downward | Werte sinken über die Zeit |
stable | Minimale Änderung über die Zeit |
trend_strength Trendanalyse-API
Stärke des beobachteten Trends.
| Wert | Beschreibung |
|---|---|
strong | >15% Änderung zwischen Perioden |
moderate | 5-15% Änderung zwischen Perioden |
mild | <5% Änderung zwischen Perioden |
health_score / score_interpretation Gesundheitswert-API
Gesamtinterpretation des Gesundheitswertes basierend auf analysierten Parametern.
| Wert | Beschreibung |
|---|---|
excellent | Alle Marker im optimalen Bereich |
good | Die meisten Marker im Normalbereich |
fair | Einige Marker erfordern Aufmerksamkeit |
poor | Mehrere Marker erfordern Aufmerksamkeit |
Hilfs-Endpunkte
Gibt API-Plattforminformationen, verfügbare Versionen und unterstützte Funktionen zurück. Keine Authentifizierung erforderlich.
Beispielantwort
{
"platform": "Kantesti Bluttest-Analyse-API",
"versions": ["v6", "v8", "v9", "v10", "v11"],
"latest_version": "v11",
"supported_languages": 100,
"documentation": "https://www.kantesti.net/docs/",
"status": "operational"
}
Gesundheitsprüfungs-Endpunkt für Überwachung. Gibt Servicestatus zurück. Keine Authentifizierung erforderlich.
Beispielantwort
{
"status": "healthy",
"timestamp": "2025-12-22T10:30:00Z",
"uptime": "99.99%"
}
Überprüfen Sie Ihr verbleibendes API-Kontingent. Erfordert Authentifizierung.
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/quota/check" \
-H "Content-Type: application/json" \
-d '{"username": "IHR_BENUTZERNAME", "password": "IHR_PASSWORT"}'
Beispielantwort
{
"status": "success",
"quota": {
"remaining": 847,
"total": 1000,
"reset_date": "2026-01-01",
"plan": "professional"
}
}
Family Health Risikobewertung API
Die Kantesti Family Health Risikobewertung API ist eine KI-gestützte Plattform zur Analyse hereditärer Gesundheitsrisiken. Sie erstellt umfassende Familiengesundheitsberichte durch Analyse der familiären Krankengeschichte, Gesundheitsprofile der Patienten und Bluttestdaten zur Identifizierung erblicher Risikofaktoren und personalisierten Vorsorgeempfehlungen.
KI-gestützte hereditäre Risikoanalyse
Die Family Health API verwendet fortschrittliche KI-Modelle, um die familiäre Krankengeschichte mit Bluttestdaten des Patienten abzugleichen und erbliche Risikomuster in den Bereichen Herz-Kreislauf, Stoffwechsel, Krebs, Neurologie, Atemwege, Autoimmun, Genetik, psychische Gesundheit und Nieren/Leber zu identifizieren. Berichte umfassen Risikobewertung, präventive Vorsorgepläne, genetische Screening-Empfehlungen und Lifestyle-Ratschläge — alles lokalisiert in über 100 Sprachen.
- Hereditäre Risikoanalyse — Klassifizierung in hohes, mittleres und niedriges Risiko mit detaillierter Bewertung
- Stammbaum-Analyse — Risikokartierung der väterlichen und mütterlichen Linie mit kombinierten Risikofaktoren
- Bluttest-Korrelation — Abgleich der Familiengeschichte mit Bluttestparametern
- Genetische Screening-Empfehlungen — Personalisierte Vorschläge für Gentests
- Präventiver Vorsorgeplan — Altersgerechte Screening-Pläne basierend auf Familienrisiko
- Medikamentenanalyse — Bewertung von Wechselwirkungen und erblichen Empfindlichkeiten
- 100+ Sprachunterstützung — Vollständige Berichtslokalisierung in über 100 Sprachen
- Sandbox-Modus — Integration testen ohne Credits zu verbrauchen
- 9 Erkrankungskategorien — Herz-Kreislauf, Stoffwechsel, Krebs, Neurologie, Atemwege, Autoimmun, Genetik, Psychische Gesundheit, Niere/Leber
- 14 Familienbeziehungen — Vater, Mutter, Geschwister, Großeltern, Onkel, Tanten, Kinder
Endpunkte-Übersicht
| Endpunkt | Methode | Beschreibung | Auth |
|---|---|---|---|
/api/v1/family-health/analyze |
POST | Umfassenden Familiengesundheits-Risikobewertungsbericht erstellen | Erforderlich (1 Credit) |
/api/v1/family-health/validate |
POST | Anfragedaten vor der Analyse validieren (kein Kontingentverbrauch) | Erforderlich (Kostenlos) |
/api/v1/family-health/supported-languages |
GET | Alle 100+ unterstützten Sprachen auflisten | Nicht erforderlich |
/api/v1/family-health/condition-categories |
GET | Alle medizinischen Erkrankungskategorien auflisten | Nicht erforderlich |
/api/v1/family-health/family-relations |
GET | Alle unterstützten Familienbeziehungstypen auflisten | Nicht erforderlich |
/api/v1/family-health/sandbox/analyze |
POST | Sandbox-Test mit Beispieldaten (kein Kontingentverbrauch) | Erforderlich (Kostenlos) |
Erstellen Sie einen umfassenden KI-gestützten Familiengesundheits-Risikobewertungsbericht. Analysiert die familiäre Krankengeschichte, Gesundheitsprofile und Bluttestdaten zur Identifizierung erblicher Risikofaktoren mit personalisierten Vorsorgeempfehlungen.
Anfrageparameter (JSON Body)
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
username | string | Ja | Ihr API-Benutzername |
password | string | Ja | Ihr API-Passwort |
patient_data | object | Ja | Patienteninformationen (siehe unten) |
family_members | array | Ja* | Array von Familienmitglieder-Objekten (max. 100). *Erforderlich wenn health_profile fehlt |
health_profile | object | Ja* | Gesundheitsprofil des Patienten. *Erforderlich wenn family_members fehlt |
blood_test_data | array | Nein | Array von Bluttestdaten für Korrelationsanalyse |
language | string | Nein | Antwortsprache (Standard: en). 100+ Sprachen unterstützt |
patient_data Objekt
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | Nein | Vollständiger Name des Patienten |
age | integer | Ja | Alter des Patienten in Jahren |
gender | string | Ja | male, female oder other |
dob | string | Nein | Geburtsdatum (JJJJ-MM-TT) |
family_members Array-Element
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
relation | string | Ja | Beziehungstyp: father, mother, brother, sister, paternal_grandfather, paternal_grandmother, maternal_grandfather, maternal_grandmother, paternal_uncle, paternal_aunt, maternal_uncle, maternal_aunt, son, daughter |
age | integer | Nein | Alter des Familienmitglieds |
conditions | array | Nein | Array bekannter Erkrankungen (Strings) |
deceased | boolean | Nein | Ob das Familienmitglied verstorben ist |
age_at_death | integer | Nein | Alter beim Tod (falls verstorben) |
cause_of_death | string | Nein | Todesursache (falls verstorben) |
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "IHR_BENUTZERNAME",
"password": "IHR_PASSWORT",
"patient_data": {
"name": "Anna Müller",
"age": 42,
"gender": "female"
},
"family_members": [
{"relation": "father", "age": 70, "conditions": ["hypertension", "type2_diabetes"]},
{"relation": "mother", "age": 67, "conditions": ["breast_cancer"]}
],
"language": "de"
}'
Python-Beispiel
import requests
url = "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze"
payload = {
"username": "IHR_BENUTZERNAME",
"password": "IHR_PASSWORT",
"patient_data": {"name": "Anna Müller", "age": 42, "gender": "female"},
"family_members": [
{"relation": "father", "age": 70, "conditions": ["hypertension", "type2_diabetes"]},
{"relation": "mother", "age": 67, "conditions": ["breast_cancer"]}
],
"language": "de"
}
response = requests.post(url, json=payload, timeout=120)
print(response.json())
Beispielantwort
{
"status": "success",
"data": {
"report_data": {
"report_title": "Familiengesundheits-Risikobewertungsbericht",
"executive_summary": "Basierend auf der Analyse der familiären Krankengeschichte...",
"hereditary_risk_analysis": {
"high_risk": [{"condition": "Herz-Kreislauf-Erkrankung", "risk_score": 75}],
"moderate_risk": [{"condition": "Typ-2-Diabetes", "risk_score": 60}],
"low_risk": []
},
"genetic_screening_recommendations": ["BRCA1/BRCA2 Gentest", "Kardiovaskuläres Genpanel"],
"preventive_care_timeline": [
{"age_range": "40-45", "screenings": ["Jährliche Mammographie", "Belastungs-EKG"]}
]
}
},
"message": "Familiengesundheits-Risikobewertung erfolgreich abgeschlossen",
"timestamp": "2026-03-23T10:30:00Z",
"api_version": "1.0.0"
}
Family Health API Fehlercodes
| Fehlercode | HTTP-Status | Beschreibung |
|---|---|---|
AUTH_1001 | 401 | Fehlende Authentifizierungsdaten |
AUTH_1002 | 401 | Ungültiger Benutzername oder Passwort |
QUOTA_1101 | 403 | Unzureichendes API-Kontingent |
VAL_2001 | 400 | Pflichtfeld fehlt |
VAL_2003 | 400 | Nicht unterstützter Sprachcode |
VAL_2006 | 400 | Array überschreitet maximale Größe (max. 100 Familienmitglieder) |
VAL_2007 | 400 | Ungültige Patientendatenstruktur |
PROC_3001 | 500 | Berichterstellung fehlgeschlagen |
PROC_3003 | 500 | KI-Verarbeitungsfehler |
SRV_5001 | 500 | Interner Serverfehler |
Family Health Sandbox-Endpunkt
Testen Sie Ihre Family Health API-Integration ohne Credits zu verbrauchen. Der Sandbox-Endpunkt liefert realistische Beispielberichtsdaten.
| API | Sandbox-Endpunkt | Beschreibung |
|---|---|---|
| Family Health Analyze | /api/v1/family-health/sandbox/analyze | Gibt Beispieldaten für Familiengesundheits-Risikobewertung zurück |
Referenz-Endpunkte (Keine Auth erforderlich)
Diese Endpunkte liefern Referenzdaten zum Aufbau Ihrer Integration. Keine Authentifizierung erforderlich.
| Endpunkt | Methode | Beschreibung |
|---|---|---|
/api/v1/family-health/supported-languages |
GET | Gibt alle 100+ unterstützten Sprachcodes und Namen zurück |
/api/v1/family-health/condition-categories |
GET | Gibt alle 9 Erkrankungskategorien mit ihren Erkrankungen zurück |
/api/v1/family-health/family-relations |
GET | Gibt alle 14 unterstützten Familienbeziehungstypen zurück |
Body Map API
Die Kantesti Body Map API übersetzt ein Laborpanel in Anatomie. Jedes auffällige und grenzwertige Ergebnis wird einer von 13 Körperregionen zugeordnet, und die API liefert beides — die Legende mit Region, Schweregrad und den verantwortlichen Markern sowie eine URL zu einer passenden Körperillustration.
Standardmäßig deterministisch
Markernamen werden gegen mehrsprachige Alias-Tabellen für 39 Berichtssprachen abgeglichen, einschließlich nicht-lateinischer Schriften — Sie senden die Analytnamen genau so, wie Ihr Labor sie gedruckt hat, in der Sprache, in der es sie gedruckt hat. Es wird kein Modell aufgerufen und keine Illustration erzeugt, solange Sie es nicht anfordern; die Standardanfrage verursacht daher keine KI-Kosten und liefert für dasselbe Panel jedes Mal dieselbe Antwort.
- 13 anatomische Regionen — Gehirn & Nerven, Schilddrüse, Herz & Gefäße, Leber, Bauchspeicheldrüse, Nebennieren, Nieren, Darm, Fortpflanzung, Blut, Immunsystem, Knochen, Muskeln
- Schweregrade — Stufe 2 für Werte außerhalb des Referenzbereichs, Stufe 1 für grenzwertige Werte, sodass eine Legende ohne weitere Logik eingefärbt werden kann
- Marker-Zuordnung — Jede Region listet die Marker auf, die sie ausgelöst haben, die auffälligsten zuerst
- Sprachfreie Ausgabe — Regionsschlüssel und Ihre eigenen Markernamen; die Illustration enthält keinen Text, sodass ein Bild für jede Sprache genügt
- Signierte Illustrations-URLs — Jede Illustrations-URL trägt eine HMAC-Signatur, sodass niemand sie erraten oder fälschen kann
- Ehrliche Leerzustände — Ein unauffälliges Panel liefert den gemeinsamen "alles in Ordnung"-Körper; ein Panel, dessen markierte Werte nicht zugeordnet werden können, liefert einen Fehler statt eines irreführend grünen Körpers
- Deterministischer Modus — Standard. Kein Modellaufruf, kein Bild-Credit, reproduzierbare Ausgabe
- Sandbox-Modus — Integration testen ohne Credits zu verbrauchen
Endpunkte-Übersicht
| Endpunkt | Methode | Beschreibung | Auth |
|---|---|---|---|
/api/v1/body-map/analyze |
POST | Körperkarte aus einem Laborpanel erstellen | Erforderlich (1 Credit) |
/api/v1/body-map/validate |
POST | Anfragedaten validieren und sehen, welche Marker erkannt werden (kein Kontingentverbrauch) | Erforderlich (Kostenlos) |
/api/v1/body-map/sandbox |
POST | Sandbox-Test mit Beispieldaten (kein Kontingentverbrauch) | Erforderlich (Kostenlos) |
/api/v1/body-map/regions |
GET | Alle 13 Körperregionen und die Schweregrade auflisten | Nicht erforderlich |
/api/v1/body-map/info |
GET | Metadaten zu Funktionsumfang, Limits und Authentifizierung | Nicht erforderlich |
Bildet jedes markierte Ergebnis eines Laborpanels auf den Körper ab. Verbraucht 1 Credit pro erfolgreicher Anfrage. Eine Anfrage, die die Validierung nicht besteht oder deren markierte Marker nicht zugeordnet werden können, wird nicht berechnet.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
username | string | Ja | Ihr API-Benutzername |
password | string | Ja | Ihr API-Passwort |
parameters | array | Ja | Laborergebnis-Objekte. Max. 500. Jedes benötigt einen Analytnamen und eine evaluation. |
interpretation | array | Nein | Klinische Interpretation, wird nur als Kontext verwendet, wenn ai_assist aktiviert ist |
ai_assist | boolean | Nein | Das Modell Marker zuordnen lassen, die die Alias-Tabellen nicht erkennen (Standard: false) |
include_image | boolean | Nein | Die gerenderte Illustration anfordern (Standard: false) |
image_wait | integer | Nein | Sekunden, die auf eine frisch erzeugte Illustration gewartet wird, 0-30 (Standard: 0) |
Felder des Parameter-Objekts
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
short_name | string | Ja* | Analytname, wie ihn das Labor gedruckt hat. *Mindestens eines von short_name, long_name, name, parameter_name oder parameter ist erforderlich. |
long_name | string | Nein | Vollständiger Analytname; verbessert die Zuordnung von Abkürzungen |
evaluation | string | Nein | Einer der Werte high, low, bad, slightly_high, slightly_low, normal. Nur markierte Werte erscheinen auf der Karte. |
result | string|number | Nein | Der gemessene Wert; bestimmt die Rangfolge der gezeichneten Regionen |
unit | string | Nein | Einheit des Ergebnisses, in beliebiger Schreibweise |
range_normal_min | number | Nein | Untere Grenze des Referenzbereichs |
range_normal_max | number | Nein | Obere Grenze des Referenzbereichs |
category | string | Nein | Laborkategorie; dient als Rückfalloption, wenn der Analytname unbekannt ist |
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/body-map/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "IHR_BENUTZERNAME",
"password": "IHR_PASSWORT",
"parameters": [
{"short_name": "ALT", "long_name": "Alanine aminotransferase", "result": "65", "unit": "U/L", "range_normal_min": 7, "range_normal_max": 45, "evaluation": "high"},
{"short_name": "AST", "long_name": "Aspartate aminotransferase", "result": "48", "unit": "U/L", "range_normal_min": 8, "range_normal_max": 40, "evaluation": "slightly_high"},
{"short_name": "TSH", "long_name": "Thyrotropin", "result": "6.2", "unit": "mIU/L", "range_normal_min": 0.4, "range_normal_max": 4.0, "evaluation": "high"}
]
}'
Python-Beispiel
import requests
def koerperkarte_erstellen(parameter, benutzername, passwort, bild_einschliessen=False):
"""
Auffällige Bluttestergebnisse auf den Körper abbilden.
Args:
parameter: Liste von Laborergebnis-Objekten
benutzername: API-Benutzername
passwort: API-Passwort
bild_einschliessen: Gerenderte Illustration anfordern (verbraucht ein Bild-Credit)
Returns:
dict: Body-Map-Block mit Regionen, Legende und Illustrations-URLs
"""
url = "https://app.aibloodtestinterpret.com/api/v1/body-map/analyze"
antwort = requests.post(url, json={
"username": benutzername,
"password": passwort,
"parameters": parameter,
"include_image": bild_einschliessen,
}, timeout=60)
antwort.raise_for_status()
return antwort.json()
# Anwendungsbeispiel
if __name__ == "__main__":
ergebnis = koerperkarte_erstellen(
parameter=[
{"short_name": "ALT", "result": "65", "unit": "U/L",
"range_normal_min": 7, "range_normal_max": 45, "evaluation": "high"},
{"short_name": "TSH", "result": "6.2", "unit": "mIU/L",
"range_normal_min": 0.4, "range_normal_max": 4.0, "evaluation": "high"},
],
benutzername="ihr_benutzername",
passwort="ihr_passwort",
)
body_map = ergebnis["data"]["body_map"]
if ergebnis["data"]["all_clear"]:
print("Alles unauffällig — nichts markiert.")
for region in body_map["regions"]:
schweregrad = "außerhalb des Referenzbereichs" if region["level"] == 2 else "grenzwertig"
print(f" {region['key']}: {schweregrad} ({', '.join(region['markers'])})")
print(f"Illustration: {body_map['image_url'] or body_map['fallback_url']}")
Beispielantwort
{
"status": "success",
"api_version": "1.0.0",
"message": "Body map generated successfully",
"data": {
"body_map": {
"v": 4,
"spec": "v4-thy2-liv2",
"unmapped": 0,
"image_url": "/static/body_maps/v4-thy2-liv2.webp",
"fallback_url": "/body-map/v4-thy2-liv2.0123456789abcdef.webp",
"regions": [
{"key": "thyroid", "level": 2, "drawn": true, "markers": ["TSH"]},
{"key": "liver", "level": 2, "drawn": true, "markers": ["ALT", "AST"]}
]
},
"engine_version": 4,
"region_keys": ["brain_nerves", "thyroid", "heart_vessels", "liver", "pancreas", "adrenals", "kidneys", "gut", "reproductive", "blood", "immune", "bones", "muscles"],
"mode": "deterministic",
"all_clear": false
},
"timestamp": "2026-09-18T10:30:00Z"
}
Referenz der Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
body_map.spec | string | Kanonische Kennung für diese Kombination aus Regionen und Schweregraden. Identische Panels teilen sich eine Spec und damit auch eine zwischengespeicherte Illustration. |
body_map.regions[].key | string | Einer der 13 Regionsschlüssel |
body_map.regions[].level | integer | 2 = außerhalb des Referenzbereichs, 1 = grenzwertig |
body_map.regions[].drawn | boolean | Ob diese Region auf der Illustration eingezeichnet wird. Die Legende listet immer alle Regionen auf; gezeichnet werden höchstens sechs. |
body_map.regions[].markers | array | Markernamen, die diese Region auf die Karte gebracht haben, die auffälligsten zuerst |
body_map.unmapped | integer | Markierte Marker, die keiner Region zugeordnet werden konnten |
body_map.image_url | string|null | Zwischengespeicherte Illustration. null, solange die Datei nicht existiert — weichen Sie auf fallback_url aus. |
body_map.fallback_url | string | Signierte Erzeugungs-URL. Immer vorhanden. Antwortet mit 503 und Retry-After, solange die Illustration noch erzeugt wird. |
all_clear | boolean | true, wenn nichts markiert wurde; dann gilt der gemeinsame "alles in Ordnung"-Körper |
mode | string | deterministic oder ai_assisted |
Die Antwort ist bewusst sprachfrei: Sie enthält Regionsschlüssel und die Markernamen Ihres Labors. Übersetzen Sie die 13 Regionsschlüssel in Ihrem eigenen Client und stellen Sie die Legende über die Illustration — sollte das Bildmodell einmal das falsche Organ einfärben, stimmt die Legende daneben trotzdem.
Prüft die Anfragedaten, ohne die Analyse auszuführen, und meldet, welche Ihrer Analytnamen die Engine erkennt. Authentifizierung ist erforderlich; es wird kein Kontingent verbraucht, und der Endpunkt funktioniert auch bei einem Konto ohne verbleibende Credits.
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/body-map/validate" \
-H "Content-Type: application/json" \
-d '{
"username": "IHR_BENUTZERNAME",
"password": "IHR_PASSWORT",
"parameters": [
{"short_name": "ALT", "result": "65", "evaluation": "high"},
{"short_name": "Unobtainium", "result": "9", "evaluation": "high"}
]
}'
Beispielantwort
{
"status": "success",
"api_version": "1.0.0",
"message": "Payload is valid",
"data": {
"valid": true,
"errors": [],
"parameter_count": 2,
"flagged_count": 2,
"recognised": [
{"name": "ALT", "region": "liver", "level": 2}
],
"unrecognised": [
{"name": "Unobtainium", "region": null, "level": 2}
]
},
"timestamp": "2026-09-18T10:30:00Z"
}
Referenz-Endpunkte
Beide Referenz-Endpunkte sind ohne Authentifizierung und kostenlos nutzbar.
Listet die 13 Körperregionen in kanonischer Reihenfolge zusammen mit den Schweregraden auf. Verwenden Sie ihn, um Ihre eigenen Legendenübersetzungen aufzubauen.
cURL-Beispiel
curl "https://app.aibloodtestinterpret.com/api/v1/body-map/regions"
Beispielantwort
{
"status": "success",
"data": {
"regions": [
{"key": "brain_nerves", "code": "brn", "order": 0},
{"key": "thyroid", "code": "thy", "order": 1},
{"key": "heart_vessels", "code": "hrt", "order": 2},
{"key": "liver", "code": "liv", "order": 3}
],
"region_keys": ["brain_nerves", "thyroid", "heart_vessels", "liver", "pancreas", "adrenals", "kidneys", "gut", "reproductive", "blood", "immune", "bones", "muscles"],
"levels": {
"0": "within range — not shown",
"1": "borderline (slightly high / slightly low)",
"2": "out of range (high / low / abnormal)"
},
"count": 13
}
}
Metadaten zum Funktionsumfang: ob die Engine in dieser Installation aktiviert ist, die Anfragelimits, das Authentifizierungsverfahren und die vollständige Endpunktliste.
cURL-Beispiel
curl "https://app.aibloodtestinterpret.com/api/v1/body-map/info"
Sandbox
POST /api/v1/body-map/sandbox liefert eine Beispielantwort in genau der Form, die /analyze erzeugt, sodass ein gegen die Sandbox entwickelter Client unverändert gegen die Produktion funktioniert. Authentifizierung ist erforderlich, sodass der Aufruf zugleich Ihre Zugangsdaten prüft; es wird jedoch kein Kontingent verbraucht und keine Analyse durchgeführt.
| Fehlercode | HTTP | Bedeutung |
|---|---|---|
AUTH_1001 | 401 | Fehlende Authentifizierungsdaten |
AUTH_1002 | 401 | Ungültiger Benutzername oder ungültiges Passwort |
AUTH_1004 | 400 | Fehlerhafte Zugangsdaten (falscher Typ oder zu lang) |
QUOTA_1101 | 403 | Unzureichendes API-Kontingent |
VAL_2001 | 400 | parameters fehlt |
VAL_2002 | 400 | Ungültiges Datenformat |
VAL_2005 | 400 | parameters ist leer |
VAL_2006 | 400 | Mehr als 500 Parameter |
VAL_2008 | 400 | Eine Parameterzeile ist fehlerhaft oder ohne Namen |
RES_4004 | 422 | Es gibt markierte Ergebnisse, aber keines lässt sich einer Körperregion zuordnen |
RES_4005 | 503 | Die Body-Map-Engine ist in dieser Installation deaktiviert |
Biologisches Blutalter API
Die Kantesti Biologisches Blutalter API beantwortet eine Frage, die kein Referenzbereich beantworten kann: Wie alt wirkt dieses Blut? Sie berechnet das biologische Alter aus einem Routinepanel mit dem publizierten Levine-PhenoAge-Modell und leitet daneben bis zu 18 klinische Indizes ab — FIB-4, HOMA-IR, TyG, eGFR, AIP, NLR, Anionenlücke und mehr —, die ein Laborbericht nur selten ausweist.
Ein Wert auch aus einem unvollständigen Panel
PhenoAge benötigt neun Marker, und die meisten Panels enthalten weniger. Sind alle neun vorhanden, liefert die API die publizierte Formel unverändert. Andernfalls werden die fehlenden Eingaben aus Populationsmedianen ergänzt und die Antwort mit source: "partial" gekennzeichnet, sodass Sie stets wissen, was Sie erhalten haben. Beide Wege sind deterministisch: kein Modellaufruf, keine Zusatzkosten, für dasselbe Panel jedes Mal dieselbe Antwort.
- Levine PhenoAge — Das publizierte Modell, unverändert berechnet, wenn alle neun Marker vorliegen
- Graceful Degradation — Auch ein unvollständiges Panel liefert einen Wert, klar als solchen gekennzeichnet und mit Auflistung der fehlenden Marker
- 18 klinische Indizes — FIB-4, De-Ritis-Quotient, A/G-Quotient, HOMA-IR, TyG, eAG, eGFR, Anionenlücke, Harnstoff/Kreatinin, Nicht-HDL, TG/HDL, AIP, Gesamtcholesterin/HDL, Remnant-Cholesterin, NLR, Mentzer-Index, Transferrinsättigung, korrigiertes Kalzium
- Automatische Einheitenumrechnung — SI- und konventionelle Einheiten in beliebiger Schreibweise, mit Plausibilitätsprüfungen, die physiologisch unmögliche Werte zurückweisen
- Mehrsprachiger Markerabgleich — Analytnamen in 39 Berichtssprachen einschließlich nicht-lateinischer Schriften; interne Schlüssel senden Sie nie
- Deterministischer Modus — Standard. Kein Netzwerkaufruf, keine KI-Kosten, reproduzierbare Ausgabe
- Optionale Modellebenen — Zeilenerkennung, eine verbesserte Schätzung und eine persönliche Notiz, jeweils hinter einem eigenen Schalter. Ein vollständiges PhenoAge aus neun Markern wird nie vom Modell überschrieben.
- 100 Sprachen — Für die optionale persönliche Notiz
- Sandbox-Modus — Integration testen ohne Credits zu verbrauchen
Endpunkte-Übersicht
| Endpunkt | Methode | Beschreibung | Auth |
|---|---|---|---|
/api/v1/blood-age/analyze |
POST | Biologisches Blutalter und abgeleitete klinische Indizes berechnen | Erforderlich (1 Credit) |
/api/v1/blood-age/validate |
POST | Anfragedaten validieren und sehen, welche Marker das Panel liefert (kein Kontingentverbrauch) | Erforderlich (Kostenlos) |
/api/v1/blood-age/sandbox |
POST | Sandbox-Test mit Beispieldaten (kein Kontingentverbrauch) | Erforderlich (Kostenlos) |
/api/v1/blood-age/biomarkers |
GET | Die von der Engine gelesenen Marker und ihre Zieleinheiten auflisten | Nicht erforderlich |
/api/v1/blood-age/info |
GET | Metadaten zu Funktionsumfang, Limits und Authentifizierung | Nicht erforderlich |
Berechnet das biologische Blutalter und die abgeleiteten Indizes aus einem Laborpanel. Verbraucht 1 Credit pro erfolgreicher Anfrage. Eine Anfrage, die die Validierung nicht besteht oder deren Panel nichts Berechenbares enthält, wird nicht berechnet.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
username | string | Ja | Ihr API-Benutzername |
password | string | Ja | Ihr API-Passwort |
parameters | array | Ja | Laborergebnis-Objekte. Max. 500. Jedes benötigt einen Analytnamen und ein Ergebnis. |
metadata | object | Nein | Berichtskopf. Dringend empfohlen: PhenoAge enthält einen Term für das chronologische Alter. Gelesen werden patient_age, patient_sex, dob, lab_date. |
patient | object | Nein | {"age": 42, "gender": "female"} — wird verwendet, wenn die Metadaten diese Angaben nicht enthalten |
interpretation | array | Nein | Klinische Interpretation, dient ausschließlich als Modellkontext |
language | string | Nein | Sprache für die optionale persönliche Notiz (Standard: en). Siehe unterstützte Sprachen. |
ai_assist | boolean | Nein | Das Modell ungewöhnliche Analytnamen erkennen lassen (Standard: false) |
ai_estimate | boolean | Nein | Das Modell ein unvollständiges Alter verbessern lassen (Standard: false) |
ai_note | boolean | Nein | Eine persönliche Notiz in language anfordern (Standard: false) |
Die neun PhenoAge-Marker
Senden Sie sie unter den Namen, die Ihr Labor gedruckt hat — die Zuordnung erfolgt über den Namen in einer der 39 unterstützten Berichtssprachen, und Einheiten werden automatisch umgerechnet.
| Marker | Typischer Name | Zieleinheit |
|---|---|---|
albumin | Albumin | g/L |
creatinine | Kreatinin | µmol/L |
glucose | Glukose / Nüchternblutzucker | mmol/L |
crp | C-reaktives Protein | mg/L |
lymph | Lymphozyten | % |
mcv | Mittleres korpuskuläres Volumen | fL |
rdw | Erythrozytenverteilungsbreite | % |
alp | Alkalische Phosphatase | U/L |
wbc | Leukozytenzahl | 10⁹/L |
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/blood-age/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "IHR_BENUTZERNAME",
"password": "IHR_PASSWORT",
"metadata": {"patient_age": "40", "patient_sex": "Male", "lab_date": "2026-09-11"},
"parameters": [
{"short_name": "Albumin", "result": 4.4, "unit": "g/dL", "range_normal_min": 3.5, "range_normal_max": 5.0},
{"short_name": "Creatinine", "result": 0.9, "unit": "mg/dL", "range_normal_min": 0.6, "range_normal_max": 1.2},
{"short_name": "Glucose", "result": 90, "unit": "mg/dL", "range_normal_min": 70, "range_normal_max": 99},
{"short_name": "CRP", "result": 1.0, "unit": "mg/L", "range_normal_min": 0, "range_normal_max": 5},
{"short_name": "Lymphocytes", "result": 30, "unit": "%", "range_normal_min": 20, "range_normal_max": 40},
{"short_name": "MCV", "result": 90, "unit": "fL", "range_normal_min": 80, "range_normal_max": 100},
{"short_name": "RDW", "result": 13, "unit": "%", "range_normal_min": 11.5, "range_normal_max": 14.5},
{"short_name": "ALP", "result": 70, "unit": "U/L", "range_normal_min": 40, "range_normal_max": 130},
{"short_name": "WBC", "result": 6.0, "unit": "10^9/L", "range_normal_min": 4, "range_normal_max": 11}
]
}'
Python-Beispiel
import requests
def biologisches_blutalter(parameter, metadaten, benutzername, passwort):
"""
Biologisches Blutalter aus einem Routine-Blutpanel berechnen.
Args:
parameter: Liste von Laborergebnis-Objekten
metadaten: Berichtskopf mit patient_age und patient_sex
benutzername: API-Benutzername
passwort: API-Passwort
Returns:
dict: Blutalter-Block, abgeleitete Indizes und eine flache Zusammenfassung
"""
url = "https://app.aibloodtestinterpret.com/api/v1/blood-age/analyze"
antwort = requests.post(url, json={
"username": benutzername,
"password": passwort,
"parameters": parameter,
"metadata": metadaten,
}, timeout=60)
antwort.raise_for_status()
return antwort.json()
# Anwendungsbeispiel
if __name__ == "__main__":
ergebnis = biologisches_blutalter(
parameter=[
{"short_name": "Albumin", "result": 4.4, "unit": "g/dL"},
{"short_name": "Creatinine", "result": 0.9, "unit": "mg/dL"},
{"short_name": "Glucose", "result": 90, "unit": "mg/dL"},
{"short_name": "CRP", "result": 1.0, "unit": "mg/L"},
{"short_name": "Lymphocytes", "result": 30, "unit": "%"},
{"short_name": "MCV", "result": 90, "unit": "fL"},
{"short_name": "RDW", "result": 13, "unit": "%"},
{"short_name": "ALP", "result": 70, "unit": "U/L"},
{"short_name": "WBC", "result": 6.0, "unit": "10^9/L"},
],
metadaten={"patient_age": "40", "patient_sex": "Male"},
benutzername="ihr_benutzername",
passwort="ihr_passwort",
)
zusammenfassung = ergebnis["data"]["summary"]
if zusammenfassung["status"] != "ok":
print(f"Kein Alter berechnet: {zusammenfassung['status']}")
else:
print(f"Chronologisch: {zusammenfassung['chronological_age']}")
print(f"Biologisch: {zusammenfassung['biological_age']} ({zusammenfassung['source']})")
print(f"Differenz: {zusammenfassung['delta_years']:+} Jahre")
for index in ergebnis["data"]["blood_age"]["indices"]:
print(f" {index['key']}: {index['value']} {index['unit']} [{index['band']}]")
Beispielantwort
{
"status": "success",
"api_version": "1.0.0",
"message": "Biological blood age computed successfully",
"data": {
"blood_age": {
"version": 1,
"age": {
"status": "ok",
"source": "formula",
"chrono": 40,
"pheno": 35.1,
"delta": -4.9,
"sex": "m",
"found": ["albumin", "creatinine", "glucose", "crp", "lymph", "mcv", "rdw", "alp", "wbc"],
"missing": [],
"labels": {"albumin": "Albumin", "creatinine": "Creatinine", "glucose": "Glucose"},
"inputs": {"albumin": 44.0, "creatinine": 79.56, "glucose": 5.0}
},
"indices": [
{"key": "fib4", "group": "liver", "value": 1.12, "unit": "", "band": "ok", "from": ["AST", "ALT", "PLT"]},
{"key": "egfr", "group": "kidneys", "value": 98.0, "unit": "mL/min/1.73m2", "band": "ok", "from": ["Creatinine"]},
{"key": "nlr", "group": "immune", "value": 1.8, "unit": "", "band": "ok", "from": ["Neutrophils", "Lymphocytes"]}
]
},
"engine_version": 1,
"mode": "deterministic",
"summary": {
"status": "ok",
"source": "formula",
"chronological_age": 40,
"biological_age": 35.1,
"delta_years": -4.9,
"sex": "m",
"markers_found": 9,
"markers_missing": [],
"indices_count": 3
}
},
"timestamp": "2026-09-18T10:30:00Z"
}
Referenz der Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
summary.status | string | ok, missing_age, missing_markers, needs_markers oder unavailable |
summary.source | string | formula (alle neun Marker), partial (Mediane ergänzt) oder ai (Modellschätzung, nur mit ai_estimate) |
summary.chronological_age | integer|null | Alter aus den Metadaten oder dem patient-Objekt |
summary.biological_age | number|null | Das berechnete Blutalter in Jahren |
summary.delta_years | number|null | Biologisch minus chronologisch. Negativ bedeutet jünger als der Kalender. |
summary.markers_missing | array | Welche der neun PhenoAge-Marker das Panel nicht geliefert hat |
blood_age.age.inputs | object | Die tatsächlich verwendeten umgerechneten Werte in den Zieleinheiten |
blood_age.age.labels | object | Der Name Ihres Labors für jeden von der Engine zugeordneten Marker |
blood_age.indices[].band | string | ok, borderline, high, low oder info |
blood_age.indices[].from | array | Die Laborzeilen, aus denen dieser Index abgeleitet wurde |
mode | string | deterministic oder ai_assisted |
PhenoAge enthält einen Altersterm; ohne chronologisches Alter kommt die Antwort daher mit status: "missing_age" und ohne Wert zurück. Senden Sie es in metadata.patient_age, in patient.age oder als Geburtsdatum in patient.dob. Die Formel gilt für ein Alter zwischen 18 und 100 Jahren.
Prüft die Anfragedaten, ohne die Analyse auszuführen, und meldet, welche der neun PhenoAge-Marker Ihr Panel liefert und ob ein chronologisches Alter gelesen werden konnte — die beiden Angaben, die darüber entscheiden, ob Sie die vollständige Formel oder die partielle Schätzung erhalten. Authentifizierung ist erforderlich; es wird kein Kontingent verbraucht, und der Endpunkt funktioniert auch bei einem Konto ohne verbleibende Credits.
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/blood-age/validate" \
-H "Content-Type: application/json" \
-d '{
"username": "IHR_BENUTZERNAME",
"password": "IHR_PASSWORT",
"metadata": {"patient_age": "40", "patient_sex": "Male"},
"parameters": [
{"short_name": "MCV", "result": 90, "unit": "fL"},
{"short_name": "WBC", "result": 6.0, "unit": "10^9/L"},
{"short_name": "Lymphocytes", "result": 30, "unit": "%"}
]
}'
Beispielantwort
{
"status": "success",
"api_version": "1.0.0",
"message": "Payload is valid",
"data": {
"valid": true,
"errors": [],
"parameter_count": 3,
"looks_like_blood_panel": true,
"chronological_age": 40,
"sex": "m",
"phenoage_markers_found": ["lymph", "mcv", "wbc"],
"phenoage_markers_missing": ["albumin", "creatinine", "glucose", "crp", "rdw", "alp"],
"expected_source": "partial",
"recognised_markers": ["lymph_pct", "mcv", "wbc"]
},
"timestamp": "2026-09-18T10:30:00Z"
}
Referenz-Endpunkte
Beide Referenz-Endpunkte sind ohne Authentifizierung und kostenlos nutzbar.
Listet die neun PhenoAge-Eingaben auf, jeden von der Engine lesbaren Marker mit seiner Zieleinheit sowie den Altersbereich, für den die Formel gilt.
cURL-Beispiel
curl "https://app.aibloodtestinterpret.com/api/v1/blood-age/biomarkers"
Beispielantwort
{
"status": "success",
"data": {
"phenoage_inputs": ["albumin", "creatinine", "glucose", "crp", "lymph", "mcv", "rdw", "alp", "wbc"],
"phenoage_age_range": {"min": 18, "max": 100},
"markers": [
{"key": "albumin", "target_unit": "g/l"},
{"key": "alp", "target_unit": "u/l"},
{"key": "alt", "target_unit": "u/l"}
],
"marker_count": 33,
"name_matching": "Markers are matched by the analyte name your laboratory printed, in any of the supported report languages. You never send these keys."
}
}
Metadaten zum Funktionsumfang: ob die Engine in dieser Installation aktiviert ist, die beiden Modi und ihre jeweiligen Kosten, die Anfragelimits, das Authentifizierungsverfahren und die unterstützten Sprachen.
cURL-Beispiel
curl "https://app.aibloodtestinterpret.com/api/v1/blood-age/info"
Sandbox
POST /api/v1/blood-age/sandbox liefert eine Beispielantwort in genau der Form, die /analyze erzeugt, sodass ein gegen die Sandbox entwickelter Client unverändert gegen die Produktion funktioniert. Authentifizierung ist erforderlich, sodass der Aufruf zugleich Ihre Zugangsdaten prüft; es wird jedoch kein Kontingent verbraucht und keine Analyse durchgeführt.
| Fehlercode | HTTP | Bedeutung |
|---|---|---|
AUTH_1001 | 401 | Fehlende Authentifizierungsdaten |
AUTH_1002 | 401 | Ungültiger Benutzername oder ungültiges Passwort |
AUTH_1004 | 400 | Fehlerhafte Zugangsdaten (falscher Typ oder zu lang) |
QUOTA_1101 | 403 | Unzureichendes API-Kontingent |
VAL_2001 | 400 | parameters fehlt |
VAL_2002 | 400 | Ungültiges Datenformat |
VAL_2003 | 400 | Nicht unterstützter Sprachcode |
VAL_2005 | 400 | parameters ist leer |
VAL_2006 | 400 | Mehr als 500 Parameter |
VAL_2007 | 400 | Ungültiges patient-Objekt |
VAL_2008 | 400 | Eine Parameterzeile ist fehlerhaft oder ohne Namen |
VAL_2009 | 400 | Nicht unterstützter Wert für patient.gender |
RES_4004 | 422 | Aus diesen Parametern lässt sich nichts berechnen |
RES_4005 | 503 | Die Blutalter-Engine ist in dieser Installation deaktiviert |
DNA Health API: DNA-Test-Interpretation, DNA + Blut-Bericht und Supplement-Berater
Mit Stolz stellen wir die Kantesti DNA Health API vor: drei neue KI-Module, die aus dem DNA-Test eines Patienten klinische Berichte machen. Die DNA-Test-Interpretation liest eine Genotyp-Rohdatei oder einen genetischen Befundbericht und erstellt daraus einen umfassenden genetischen Gesundheitsbericht. Der DNA + Blut-Gesundheitsbericht verbindet diesen Bericht mit einem interpretierten Bluttest und zeigt, wo sich Gene und Laborwerte bestätigen oder widersprechen. Der Supplement-Berater erstellt aus DNA, Bluttest und einem kurzen Fragebogen einen personalisierten Supplement-Plan, der auf den eigenen Produkten Ihrer Klinik aufbaut.
Abgeglichen mit Ihrer Datei
Eine Genotyp-Rohdatei wird auf dem Server eingelesen und mit einem kuratierten Panel aus 334 Markern in 20 Kategorien abgeglichen — von Methylierungs-, Herz-Kreislauf- und Lipidgenen bis zu Pharmakogenomik, Nährstoffstoffwechsel, Trägerstatus und Langlebigkeit. Jeder Befund, den die KI formuliert, wird gegen den Upload geprüft: Eine rsID, die in der Datei nicht vorkommt, wird verworfen, und jeder Genotyp wird auf den Wert festgelegt, der in der Datei steht. So kann der Bericht kein Ergebnis erfinden.
- Alle gängigen DNA-Quellen — Rohdateien von 23andMe, AncestryDNA, MyHeritage, FTDNA und LivingDNA, VCF-Dateien, auch als
.zipoder.gz; eingefügte rsID-Zeilen; oder ein genetischer Befundbericht als bis zu 6 PDF-, JPG- oder PNG-Dateien - Umfassender genetischer Bericht — Befunde nach Gesundheitsbereich, Krankheitsrisiken, Trägerstatus, Pharmakogenomik (vorhergesagte Metabolisierer-Phänotypen und betroffene Arzneimittelklassen), Nutrigenomik, Merkmale, empfohlene Folgeuntersuchungen und Warnsignale
- Gene treffen Laborwerte — Der DNA + Blut-Bericht ordnet jede Verbindung zwischen einem genetischen Befund und einem Laborwert als
confirms,contradicts,neutraloderwatchein, ergänzt um eine Risikomatrix, vorrangige Maßnahmen und einen Monitoring-Plan - Supplement-Pläne mit Sicherheitsregeln — Dosis, Darreichungsform, Einnahmezeitpunkt, Dauer, Wechselwirkungen und Termine für Kontrolltests; die Dosierungen bleiben innerhalb der tolerierbaren Höchstzufuhrmengen, in der Schwangerschaft gelten sichere Grenzwerte, und alles, was eine ärztliche Entscheidung erfordert, landet in
clinician_review_required - Ihr eigener Produktkatalog — Der Berater empfiehlt die Produkte, die Ihre Klinik führt, kennzeichnet sie als
clinic_libraryund listet im Modus „nur Klinikprodukte“ die Bedarfe auf, die Ihr Katalog nicht abdeckt - Verkettbar und zustandslos — Senden Sie den Bericht aus Modul 1 direkt an die Module 2 und 3. Es wird nichts patientenbezogen gespeichert, und Genotyp-Rohdateien werden nach dem Einlesen verworfen
- 100+ Berichtssprachen — Der Bericht wird in der Sprache verfasst, die Sie anfordern
- Asynchroner Modus — Hängen Sie
?async=1an und fragen Sie/api/jobs/<job_id>ab, damit eine lange Analyse nie in ein Gateway-Timeout läuft - Sandbox-Modus — Integration testen ohne Credits zu verbrauchen
1. POST /api/v1/dna-interpretation/analyze mit der DNA-Datei liefert data.report. 2. Senden Sie diesen Bericht zusammen mit einem interpretierten Bluttest an /api/v1/dna-blood-report/analyze. 3. Senden Sie denselben Bericht, die Antworten aus dem Fragebogen und optional den Bluttest an /api/v1/dna-supplements/analyze. Die Module 2 und 3 akzeptieren den DNA-Bericht so, wie er zurückgegeben wurde: das report-Objekt, das gesamte data-Objekt oder die vollständige Antwort.
Endpunkte-Übersicht
| Endpunkt | Methode | Beschreibung | Auth |
|---|---|---|---|
/api/v1/dna-interpretation/analyze | POST | DNA-Datei, eingefügte rsID-Zeilen oder Berichtsseiten → umfassender genetischer Gesundheitsbericht | Erforderlich (1 Credit) |
/api/v1/dna-interpretation/validate | POST | Upload einlesen und anzeigen, was gefunden wurde, ohne KI-Aufruf | Erforderlich (Kostenlos) |
/api/v1/dna-interpretation/sandbox | POST | Beispiel eines genetischen Berichts | Erforderlich (Kostenlos) |
/api/v1/dna-interpretation/info | GET | Akzeptierte Eingaben, Limits und Berichtssprachen | Nicht erforderlich |
/api/v1/dna-blood-report/analyze | POST | DNA-Bericht + interpretierter Bluttest → kombinierter Gesundheitsbericht | Erforderlich (1 Credit) |
/api/v1/dna-blood-report/validate | POST | Anfragedaten ohne KI-Aufruf prüfen | Erforderlich (Kostenlos) |
/api/v1/dna-blood-report/sandbox | POST | Beispiel eines kombinierten Berichts | Erforderlich (Kostenlos) |
/api/v1/dna-blood-report/info | GET | Anfragefelder und Limits | Nicht erforderlich |
/api/v1/dna-supplements/analyze | POST | DNA-Bericht + Bluttest (optional) + Fragebogen → Supplement-Plan | Erforderlich (1 Credit) |
/api/v1/dna-supplements/validate | POST | Anfragedaten und Antworten ohne KI-Aufruf prüfen | Erforderlich (Kostenlos) |
/api/v1/dna-supplements/sandbox | POST | Beispiel eines Supplement-Plans | Erforderlich (Kostenlos) |
/api/v1/dna-supplements/questionnaire | GET | Die 25 Fragen und ihre zulässigen Antworten | Nicht erforderlich |
/api/v1/dna-supplements/settings | GET PUT | Produktkatalog und Berater-Einstellungen Ihrer Klinik lesen oder aktualisieren | Erforderlich (Kostenlos) |
/api/v1/dna-supplements/info | GET | Anfragefelder und Limits | Nicht erforderlich |
Interpretiert einen DNA-Test und liefert einen umfassenden genetischen Gesundheitsbericht. Senden Sie eine Datei als multipart/form-data oder eingefügte Genotyp-Zeilen als JSON. Der Upload wird noch während der Anfrage eingelesen, sodass eine unlesbare Datei sofort mit 400 beantwortet wird und nichts kostet. Ein Credit wird erst berechnet, nachdem der Bericht erstellt wurde.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
username | string | Ja | Ihr API-Benutzername (oder HTTP Basic-Authentifizierung verwenden) |
password | string | Ja | Ihr API-Passwort |
file | file | Ja* | Eine Genotyp-Rohdatei (.txt, .csv, .tsv, .vcf, .zip, .gz, bis 80 MB) oder bis zu 6 Berichtsdateien (PDF bis 20 MB, JPG/PNG bis 10 MB je Datei). *Senden Sie entweder file oder genotype_text. |
genotype_text | string | Ja* | Eingefügte Genotyp-Zeilen (rsID, Chromosom, Position, Genotyp), bis zu 2.000.000 Zeichen |
language | string | Nein | Sprachcode des Berichts, z. B. en, de, ar (Standard: en). Siehe unterstützte Sprachen. |
patient | object | Nein | age, sex, diagnoses, comorbidities, medications, treatments, notes. In einer Multipart-Anfrage als JSON-String senden. |
source_label | string | Nein | Ihre eigene Bezeichnung für die Quelle, bis zu 120 Zeichen |
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/dna-interpretation/analyze?async=1" \
-u "IHR_BENUTZERNAME:IHR_PASSWORT" \
-F "file=@genome_raw_data.txt" \
-F "language=en" \
-F 'patient={"age": 41, "sex": "female", "medications": "clopidogrel"}'
# Antwort 202 Accepted: {"status": "pending", "job_id": "...", "poll_url": "/api/jobs/...", ...}
curl -u "IHR_BENUTZERNAME:IHR_PASSWORT" "https://app.aibloodtestinterpret.com/api/jobs/JOB_ID"
Python-Beispiel
import time
import requests
BASE = "https://app.aibloodtestinterpret.com"
AUTH = ("IHR_BENUTZERNAME", "IHR_PASSWORT")
def run(path, poll=True, **kwargs):
"""POST im asynchronen Modus, dann /api/jobs/<id> abfragen, bis der Bericht fertig ist."""
resp = requests.post(f"{BASE}{path}?async=1", auth=AUTH, timeout=60, **kwargs)
body = resp.json()
if resp.status_code != 202:
return body # ein Fehler oder eine synchrone Antwort
while True:
time.sleep(body.get("poll_interval_ms", 3000) / 1000)
job = requests.get(f"{BASE}{body['poll_url']}", auth=AUTH, timeout=30).json()
if job["status"] in ("completed", "failed"):
return job["result"]["response"]
# 1) DNA-Test-Interpretation
with open("genome_raw_data.txt", "rb") as fh:
dna = run("/api/v1/dna-interpretation/analyze",
files={"file": fh},
data={"language": "en", "patient": '{"age": 41, "sex": "female"}'})
report = dna["data"]["report"]
print(report["executive_summary"])
for section in report["sections"]:
print(section["title"], "-", section["risk_level"])
Beispielantwort
{
"status": "success",
"api_version": "1.0.0",
"message": "DNA test interpretation completed successfully",
"data": {
"analysis_id": "DNA-3F9A1C07B2",
"module": "dna_interpretation",
"generated_at": "2026-09-23T10:30:00Z",
"language": "en",
"source": {
"kind": "raw", "format": "23andme", "build": "GRCh37",
"total_records": 638463, "called": 631022, "no_call_rate": 0.0117,
"inferred_sex": "female", "panel_total": 334, "panel_found": 291,
"filename": "genome_raw_data.txt", "warnings": []
},
"report": {
"report_type": "dna",
"title": "Genetic health report",
"executive_summary": "Array genotyping with good coverage of the clinical panel...",
"overall_assessment": {"level": "slightly_elevated", "summary": "Mostly typical findings with a few actionable ones."},
"data_quality": {"source": "23andMe v5 raw file", "markers_analyzed": 291, "coverage_note": "...", "limitations": "..."},
"sections": [
{
"key": "nutrigenomics", "title": "Nutrient metabolism", "risk_level": "slightly_elevated",
"summary": "Reduced folate cycle activity...",
"findings": [
{"gene": "MTHFR", "rsid": "rs1801133", "genotype": "AG", "phenotype": "C677T heterozygous",
"risk_level": "slightly_elevated", "evidence": "established",
"explanation": "About 65% of typical enzyme activity.", "recommendation": "Check homocysteine."}
]
}
],
"pharmacogenomics": [
{"gene": "CYP2C19", "rsids": ["rs4244285"], "predicted_phenotype": "Intermediate metabolizer",
"affected_drugs": ["clopidogrel", "omeprazole"], "recommendation": "Review before prescribing clopidogrel."}
],
"disease_risks": [], "carrier_status": [], "nutrigenomics": [], "traits": [],
"lifestyle_recommendations": ["..."], "recommended_tests": [{"test": "Homocysteine", "reason": "MTHFR C677T"}],
"red_flags": [], "limitations": "Consumer arrays miss rare variants.",
"disclaimer": "AI-generated clinical decision support for clinician review; not a diagnosis."
}
},
"timestamp": "2026-09-23T10:30:00Z"
}
Referenz der Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
source | object | Was gelesen wurde: kind (raw, text oder document), erkanntes Format und Genom-Build, Anzahl der Datensätze und Genotyp-Calls, wie viele der 334 Panel-Marker gefunden wurden, sowie Parser-Warnungen |
report.overall_assessment.level | string | typical, slightly_elevated, elevated oder high |
report.sections[] | array | Ein Eintrag pro Gesundheitsbereich mit einem risk_level und den zugehörigen findings |
report.sections[].findings[] | array | gene, rsid, genotype, phenotype, risk_level (protective, typical, informational, slightly_elevated, elevated, high), evidence (established, probable, preliminary), explanation, recommendation |
report.pharmacogenomics[] | array | Vorhergesagter Metabolisierer-Phänotyp pro Gen und die Arzneimittelklassen, die davon betroffen sein können. Der Bericht nennt nie Dosierungen verschreibungspflichtiger Arzneimittel. |
report.carrier_status[] | array | carrier, not_detected, affected_pattern oder inconclusive, stets durch klinische Gentests zu bestätigen |
report.disease_risks[], nutrigenomics[], traits[] | array | Erkrankungsrisiken, Nährstoffbefunde und Merkmale mit den zugrunde liegenden Genen |
report.recommended_tests[], red_flags[] | array | Folgeuntersuchungen mit Begründung sowie Befunde, die zeitnah Aufmerksamkeit erfordern |
Liest den Upload genau wie /analyze ein und meldet, was gefunden wurde, ohne KI-Aufruf. Authentifizierung ist erforderlich; es wird kein Credit verbraucht. Nutzen Sie den Endpunkt, um eine Datei zu prüfen, bevor Sie einen Credit einsetzen.
Beispielantwort
{
"status": "success",
"message": "Payload is valid",
"data": {
"valid": true,
"language": "en",
"source": {"kind": "raw", "format": "ancestrydna", "build": "GRCh37", "panel_total": 334, "panel_found": 287, "warnings": []}
}
}
Verbindet einen DNA-Bericht und einen interpretierten Bluttest zu einem gemeinsamen Gesundheitsbericht. Jede Verbindung zwischen einem genetischen Befund und einem Laborwert wird eingeordnet; es folgen eine Risikomatrix, vorrangige Maßnahmen und ein Monitoring-Plan. Ein Credit pro erfolgreicher Anfrage.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
dna_report | object | Ja | Der Bericht aus /api/v1/dna-interpretation/analyze: data.report, das gesamte data-Objekt oder die vollständige Antwort |
blood_test | object|array | Ja | Ein interpretierter Bluttest, wie ihn die Bluttest API liefert (metadata, parameters, interpretation), oder einfach eine Liste von bis zu 500 Parametern mit Namen und result |
language | string | Nein | Sprachcode des Berichts (Standard: en) |
patient | object | Nein | Dieselben Felder wie bei der DNA-Test-Interpretation |
Python-Beispiel
# 2) DNA + Blut-Gesundheitsbericht (verwendet run() und dna aus dem Beispiel oben)
blood_test = {
"parameters": [
{"short_name": "25-OH D", "result": 18, "unit": "ng/mL", "range_normal_min": 30, "range_normal_max": 100, "evaluation": "low"},
{"short_name": "Homocysteine", "result": 13.2, "unit": "µmol/L", "evaluation": "high"}
]
}
combined = run("/api/v1/dna-blood-report/analyze",
json={"dna_report": dna, "blood_test": blood_test, "language": "en"})
for link in combined["data"]["report"]["correlations"]:
print(link["topic"], link["concordance"], link["action"])
Beispielantwort
{
"status": "success",
"message": "DNA + blood health report completed successfully",
"data": {
"analysis_id": "DNB-8C21E40A9D",
"module": "dna_blood_report",
"language": "en",
"report": {
"report_type": "dna_blood",
"executive_summary": "The low vitamin D level matches the GC genotype; homocysteine is borderline, in line with MTHFR C677T.",
"overall_status": {"level": "watch", "summary": "Two gene-lab matches to act on."},
"correlations": [
{"topic": "Vitamin D", "genetic_finding": "GC rs2282679 GT", "lab_finding": "25-OH D 18 ng/mL",
"concordance": "confirms", "interpretation": "Genetic tendency and lab value agree.", "action": "Supplement and recheck in 12 weeks."}
],
"risk_matrix": [{"area": "Folate cycle", "genetic_risk": "slightly_elevated", "lab_status": "borderline", "combined_assessment": "Watch homocysteine."}],
"priority_actions": [{"priority": "high", "action": "Start vitamin D3", "why": "Deficient level and GC genotype"}],
"monitoring_plan": [{"marker": "25-OH vitamin D", "interval": "12 weeks", "reason": "Dose check"}],
"lifestyle_plan": [], "questions_for_clinician": [], "red_flags": [],
"limitations": "One blood test; values vary.",
"disclaimer": "AI-generated clinical decision support for clinician review; not a diagnosis."
}
}
}
Referenz der Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
report.overall_status.level | string | good, watch, attention oder urgent |
report.correlations[].concordance | string | confirms, contradicts, neutral oder watch |
report.risk_matrix[] | array | Pro Bereich: genetic_risk, lab_status (normal, borderline, abnormal, not_measured) und eine kombinierte Bewertung |
report.priority_actions[] | array | priority (high, medium, low), die Maßnahme und ihre Begründung |
report.monitoring_plan[] | array | Welcher Marker wann und warum erneut getestet werden sollte |
Erstellt einen personalisierten Supplement-Plan aus dem DNA-Bericht, den Antworten aus dem Fragebogen und optional einem interpretierten Bluttest. Produktkatalog und Berater-Einstellungen Ihrer Klinik werden automatisch angewendet. Ein Credit pro erfolgreicher Anfrage.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
dna_report | object | Ja | Der Bericht aus /api/v1/dna-interpretation/analyze |
answers | object | Ja | Antworten aus dem Fragebogen. diet_type und pregnancy sind Pflichtangaben; alle 25 Fragen liefert GET /api/v1/dna-supplements/questionnaire. Unbekannte Schlüssel und Werte werden verworfen. |
blood_test | object|array | Nein | Dasselbe Format wie beim DNA + Blut-Bericht |
use_clinic_catalogue | boolean | Nein | Produktkatalog und Einstellungen Ihrer Klinik anwenden (Standard: true) |
language | string | Nein | Sprachcode des Berichts (Standard: en) |
patient | object | Nein | Dieselben Felder wie bei der DNA-Test-Interpretation. Die hier angegebenen Medikamente werden auf Wechselwirkungen geprüft. |
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/dna-supplements/analyze?async=1" \
-u "IHR_BENUTZERNAME:IHR_PASSWORT" \
-H "Content-Type: application/json" \
-d '{
"dna_report": { ...data.report aus der DNA-Test-Interpretation... },
"answers": {"diet_type": "vegetarian", "pregnancy": "no", "sun_exposure": "low", "goals": ["energy", "immunity"]},
"language": "en"
}'
Python-Beispiel
# 3) Supplement-Plan (verwendet run(), dna und blood_test aus den Beispielen oben)
plan = run("/api/v1/dna-supplements/analyze",
json={"dna_report": dna, "blood_test": blood_test,
"answers": {"diet_type": "vegetarian", "pregnancy": "no"},
"language": "en"})
for item in plan["data"]["report"]["recommendations"]:
print(item["name"], item["dose"], item["timing"], "-", item["source"])
Beispielantwort
{
"status": "success",
"message": "Supplement plan completed successfully",
"data": {
"analysis_id": "SUP-51B7D2E6F0",
"module": "dna_supplements",
"language": "en",
"catalogue": {"mode": "prefer", "products": 24},
"report": {
"report_type": "supplement",
"summary": "Plan built from GC and MTHFR findings, a low vitamin D level and a vegetarian diet.",
"recommendations": [
{"name": "Vitamin D3 + K2", "source": "clinic_library", "product": "Vitamin D3 + K2 (Clinic Brand)",
"form": "softgel", "dose": "2000 IU", "timing": "with lunch", "duration": "12 weeks", "priority": "high",
"rationale": {"genetic": "GC rs2282679 GT", "lab": "25-OH D 18 ng/mL", "questionnaire": "little sun"},
"evidence": "established", "cautions": ["Recheck calcium"], "interactions": ["Thiazide diuretics"],
"retest": "25-OH D in 12 weeks"}
],
"avoid_or_caution": [{"name": "High-dose vitamin A", "reason": "Pregnancy planning"}],
"uncovered_needs": [],
"dietary_sources": [{"nutrient": "Folate", "foods": ["lentils", "spinach"]}],
"retest_plan": [{"marker": "25-OH vitamin D", "when": "12 weeks", "why": "Dose check"}],
"clinician_review_required": ["Thiazide co-medication"],
"disclaimer": "AI-generated clinical decision support for clinician review; not a diagnosis."
}
}
}
Referenz der Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
catalogue | object | Der angewendete Katalogmodus (prefer, only, off) und die Anzahl der verfügbaren Klinikprodukte |
report.recommendations[] | array | name, form, dose, timing, duration, priority, die genetische / labordiagnostische / fragebogenbasierte rationale, evidence, cautions, interactions und retest |
report.recommendations[].source | string | clinic_library für ein Produkt aus Ihrem Katalog (benannt in product), andernfalls evidence_based |
report.uncovered_needs[] | array | Im Modus „nur Klinikprodukte“: Bedarfe, die Ihr Katalog nicht abdeckt |
report.clinician_review_required[] | array | Alles, was eine ärztliche Entscheidung erfordert: Wechselwirkungen, Schwangerschaft, Nieren- oder Lebererkrankungen, Antikoagulanzien, Dosierungen nahe der tolerierbaren Höchstzufuhrmenge |
report.avoid_or_caution[], dietary_sources[], retest_plan[] | array | Was zu meiden ist, Lebensmittelquellen für jeden Nährstoff und wann erneut getestet werden sollte |
Liest oder aktualisiert den Produktkatalog Ihrer Klinik und die Berater-Einstellungen. Es ist derselbe Katalog wie im Klinik-Panel und in der Ernährungs-KI, sodass ein an einer Stelle hinzugefügtes Produkt überall verfügbar ist. Authentifizierung ist erforderlich; es wird kein Credit verbraucht. Senden Sie catalogue, settings oder beides; der Katalog ersetzt jeweils die gesamte Liste.
| Feld | Typ | Beschreibung |
|---|---|---|
catalogue[] | array | Bis zu 200 Produkte: name, brand, form, dosage, category (vitamin, mineral, probiotic, omega, herbal, other), description |
settings.mode | string | prefer (Klinikprodukte, wo sie passen, andernfalls evidenzbasierte Vorschläge), only (nur Klinikprodukte) oder off (Katalog ignorieren) |
settings.instructions | string | Ihre eigenen Anweisungen an die KI, bis zu 1.500 Zeichen. Sicherheitsregeln haben immer Vorrang. |
settings.max_items | integer | Maximale Anzahl an Empfehlungen pro Plan, 3 bis 12 |
cURL-Beispiel
curl -X PUT "https://app.aibloodtestinterpret.com/api/v1/dna-supplements/settings" \
-u "IHR_BENUTZERNAME:IHR_PASSWORT" \
-H "Content-Type: application/json" \
-d '{
"catalogue": [
{"name": "Vitamin D3 + K2", "brand": "Clinic Brand", "form": "softgel", "dosage": "2000 IU / 75 µg", "category": "vitamin"},
{"name": "Omega-3 EPA/DHA", "brand": "Clinic Brand", "form": "softgel", "dosage": "1000 mg", "category": "omega"}
],
"settings": {"mode": "prefer", "instructions": "Prefer our own brand.", "max_items": 8}
}'
Referenz-Endpunkte
GET /api/v1/dna-supplements/questionnaire listet die 25 Fragen (Ernährungsweise, Mahlzeiten, Obst und Gemüse, Fisch, rotes Fleisch, Milchprodukte, Alkohol, Rauchen, Koffein, Sonnenexposition, Bewegung, Schlaf, Stress, Verdauung, Energie, aktuell eingenommene Nahrungsergänzungsmittel, Medikamente, Allergien, Erkrankungen, Schwangerschaft, Ziele, Budget, bevorzugte Darreichungsform und Anmerkungen) mit ihren Typen und zulässigen Werten auf. Die drei /info-Endpunkte liefern die akzeptierten Eingaben, Limits, Credit-Kosten und die vollständige Liste der Berichtssprachen. Keiner dieser Endpunkte erfordert eine Authentifizierung.
Sandbox und asynchroner Modus
POST /api/v1/dna-interpretation/sandbox, /api/v1/dna-blood-report/sandbox und /api/v1/dna-supplements/sandbox liefern einen Beispielbericht in genau der Form, die /analyze erzeugt. Authentifizierung ist erforderlich; es wird kein Credit verbraucht.
Ein KI-Bericht dauert in der Regel ein bis drei Minuten. Hängen Sie ?async=1 an (oder senden Sie den Header X-Async: 1), dann antwortet die Anfrage sofort mit 202 und einer job_id. Fragen Sie GET /api/jobs/<job_id> mit denselben Zugangsdaten ab, bis status den Wert completed oder failed hat. Die endgültige Antwort steht in result.response und ist identisch mit der synchronen.
| Fehlercode | HTTP | Bedeutung |
|---|---|---|
AUTH_1001 | 401 | Fehlende Authentifizierungsdaten |
AUTH_1002 | 401 | Ungültiger Benutzername oder ungültiges Passwort |
QUOTA_1101 | 403 | Unzureichendes API-Kontingent |
VAL_2001 | 400 | Ein Pflichtfeld fehlt: file oder genotype_text, dna_report, blood_test oder eine erforderliche Antwort |
VAL_2002 | 400 | Unlesbare Genotyp-Daten, nicht unterstützter Dateityp, ungültiges JSON oder ein ungültiger dna_report |
VAL_2003 | 400 | Nicht unterstützte Berichtssprache |
VAL_2006 | 400 | Zu groß: eingefügter Text, Blutparameter (500) oder Katalog (200 Produkte) |
VAL_2007 | 400 | Ungültiges patient-Objekt |
VAL_2008 | 400 | Kein verwertbarer Bluttest-Parameter (Name und Ergebnis) |
PROC_3003 | 500 | Die KI-Antwort konnte nicht erzeugt oder validiert werden; bitte erneut versuchen. Es wird kein Credit berechnet. |
RES_4005 | 503 | Die DNA-Module sind in dieser Installation deaktiviert |
Die DNA Health API erzeugt KI-generierte Informationen für das behandelnde medizinische Fachpersonal. Sie ist weder eine Diagnose noch eine Verordnung. Genotypisierungs-Arrays für Endverbraucher sind keine klinische Sequenzierung: Bestätigen Sie handlungsrelevante Befunde und Trägerbefunde mit validierten klinischen Gentests, bevor Sie darauf reagieren.
ICR - Intelligente Zeichenerkennung API
Die Kantesti ICR (Intelligente Zeichenerkennung) API ist eine fortschrittliche Dokumenten-Textextraktionstechnologie, die weit über herkömmliche OCR hinausgeht. Angetrieben von Kantestis proprietärer KI-Engine liefert ICR strukturierte JSON-Ausgaben aus jedem Dokumenttyp, einschließlich medizinischer Berichte, Rechnungen, Formulare und mehr.
Kantesti ICR vs. Herkömmliche OCR
In Benchmark-Tests zeigte Kantesti ICR eine 79% höhere Leistung im Vergleich zu herkömmlichen OCR-Lösungen. ICR versteht die Dokumentenstruktur, bewahrt Tabellenlayouts, extrahiert Metadaten und liefert sauberes strukturiertes JSON — während OCR nur rohen unstrukturierten Text liefert.
- Strukturierte JSON-Ausgabe — Tabellen, Abschnitte, Metadaten und Rohtext im sauberen JSON-Format
- Dokumenttyp-Erkennung — Erkennt automatisch medizinische Berichte, Rechnungen, Formulare, Briefe usw.
- Tabellenextraktion — Bewahrt Tabellenüberschriften und Zeilendaten mit vollständiger Struktur
- Multi-Format-Unterstützung — PDF, JPG, JPEG, PNG Dokumentenverarbeitung
- Bluttest-Integration (Kan) — Spezialisierter Endpunkt für Bluttestdokumenten-Extraktion
- Sandbox-Modus — Integration testen ohne Credits zu verbrauchen
- Kreditsystem — 0,5 Credits pro API-Aufruf
ICR Endpunkte-Übersicht
| Endpunkt | Methode | Beschreibung | Kosten |
|---|---|---|---|
/api/icr/v1/extract | POST | ICR-Textextraktion aus Dokumenten | 0,5 Credit |
/api/icr/v1/sandbox | POST | ICR-Sandbox-Test | Kostenlos |
/api/icr/v1/kan | POST | Bluttestdokumenten-Analyse | 0,5 Credit |
/api/icr/v1/kan/sandbox | POST | Bluttest-Sandbox-Test | Kostenlos |
/api/icr/info | GET | API-Dokumentation und Funktionen | Kostenlos |
/api/icr/health | GET | Gesundheitsprüfung-Endpunkt | Kostenlos |
/api/icr/v1/quota | POST | Verbleibende ICR-Credits prüfen | Kostenlos |
Extrahiert den gesamten Textinhalt aus hochgeladenen Dokumenten mit Kantesti ICR-Technologie. Gibt strukturiertes JSON mit Dokumenttyp-Erkennung, Tabellenextraktion, Abschnittsanalyse und Metadaten zurück.
Anfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
username | string | Ja | Ihr API-Benutzername |
password | string | Ja | Ihr API-Passwort |
file | file | Ja | Dokumentdatei (PDF, JPG, JPEG, PNG) |
language | string | Nein | Ausgabesprache (Standard: en) |
cURL-Beispiel
curl -X POST "https://app.aibloodtestinterpret.com/api/icr/v1/extract" \
-F "username=IHR_BENUTZERNAME" \
-F "password=IHR_PASSWORT" \
-F "language=de" \
-F "[email protected]"
Python-Beispiel
import requests
def icr_extract(file_path: str, username: str, password: str, language: str = "de"):
"""
Text aus einem Dokument mit Kantesti ICR API extrahieren.
79% schneller und genauer als herkömmliche OCR.
"""
url = "https://app.aibloodtestinterpret.com/api/icr/v1/extract"
with open(file_path, "rb") as f:
files = {"file": (file_path, f)}
data = {"username": username, "password": password, "language": language}
response = requests.post(url, files=files, data=data, timeout=120)
response.raise_for_status()
return response.json()
# Beispielverwendung
result = icr_extract("medizinischer_bericht.pdf", "benutzername", "passwort", "de")
print(f"Dokumenttyp: {result['data']['document_type']}")
print(f"Seiten: {result['data']['page_count']}")
Beispielantwort
{
"status": "success",
"data": {
"document_type": "blood_test_report",
"page_count": 1,
"pages": [
{
"page_number": 1,
"content": {
"raw_text": "Universitätsklinikum Köln - Blutbild\n\nPatient: Max Mustermann\nGeb.: 15.03.1990\nGeschlecht: Männlich\nDatum: 10.01.2026",
"sections": [
{"type": "header", "content": "Universitätsklinikum Köln - Blutbild"},
{"type": "paragraph", "content": "Patient: Max Mustermann, Geb.: 15.03.1990, Männlich"}
],
"tables": [
{
"headers": ["Test", "Ergebnis", "Einheit", "Referenzbereich"],
"rows": [
["Glukose", "92", "mg/dL", "74 - 100"],
["ALT", "22", "U/L", "< 35"],
["Kreatinin", "0,9", "mg/dL", "0,7 - 1,2"],
["Leukozyten", "7,2", "10*9/L", "3,8 - 10"],
["Hämoglobin", "148", "g/L", "130 - 175"],
["Thrombozyten", "230", "10*9/L", "150 - 400"]
]
}
]
}
}
],
"metadata": {"detected_language": "de", "confidence": "high"},
"icr_metadata": {"engine": "kantesti-icr", "version": "1.0.0", "images_processed": 1, "timestamp": "2026-02-14T10:30:00Z"}
},
"credit_cost": 0.5,
"api_version": "icr-v1",
"timestamp": "2026-02-14T10:30:00Z"
}
ICR Sandbox-Endpunkte
Testen Sie Ihre ICR-Integration, ohne Credits zu verbrauchen. Sandbox-Endpunkte liefern realistische Beispieldaten.
| API | Sandbox-Endpunkt | Beschreibung |
|---|---|---|
| ICR Extract | /api/icr/v1/sandbox | Liefert Beispieldaten für die ICR-Extraktion |
| ICR Kan | /api/icr/v1/kan/sandbox | Liefert Beispieldaten für Bluttestparameter |
ICR vs. OCR Leistungsvergleich
| Metrik | Kantesti ICR | Herkömmliche OCR | Verbesserung |
|---|---|---|---|
| Verarbeitungsgeschwindigkeit | 1,2s Durchschnitt | 5,7s Durchschnitt | 79% schneller |
| Textgenauigkeit | 99,7% | 92,1% | +7,6% |
| Tabellenerkennung | 98,9% | 71,2% | +27,7% |
| Strukturierte Ausgabe | JSON mit Abschnitten, Tabellen, Metadaten | Roher unstrukturierter Text | Volle Struktur |
| Dokumenttyp-Erkennung | Automatisch | Nicht verfügbar | KI-gesteuert |
| Mehrsprachige Unterstützung | 100+ Sprachen | 30-50 Sprachen | 2x+ Abdeckung |