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 |
|---|---|---|
| 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) |
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 |
range_min | string | Minimaler Referenzbereich |
range_max | string | Maximaler Referenzbereich |
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 | Nein | 3 | Bevorzugte Mahlzeiten pro Tag (2-6) |
budget | string | Nein | "moderate" | Budgetniveau. Siehe Werte |
medications | array | Nein | [] | Aktuelle Medikamente für Interaktionsprüfungen |
{
"age": 45,
"gender": "male",
"weight": 82,
"height": 178,
"activity_level": "moderate",
"medical_conditions": ["hypertension"],
"current_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",
"medical_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']['supplements']:
print(f"{supp['name']}: {supp['dosage']} - {supp['reason']}")
Beispielantwort
{
"status": "success",
"data": {
"nutrition_plan": {
"daily_calories": 2100,
"macros": {
"protein": {"grams": 105, "percentage": 20},
"carbohydrates": {"grams": 236, "percentage": 45},
"fats": {"grams": 82, "percentage": 35}
},
"meal_plan": {
"breakfast": {
"description": "Haferflocken mit Beeren und Walnüssen",
"calories": 420,
"nutrients": ["Ballaststoffe", "Omega-3", "Antioxidantien"]
},
"lunch": {
"description": "Gegrillter Lachs-Salat mit Olivenöl-Dressing",
"calories": 550,
"nutrients": ["Omega-3", "Protein", "Vitamin D"]
},
"dinner": {
"description": "Mageres Hähnchen mit Quinoa und gedämpftem Gemüse",
"calories": 580,
"nutrients": ["Protein", "Eisen", "Ballaststoffe"]
}
}
},
"supplements": [
{
"name": "Vitamin D3",
"dosage": "2000 IE täglich",
"reason": "Blutspiegel bei 18 ng/mL deutet auf Mangel hin (optimal: 30-50 ng/mL)",
"priority": "hoch",
"timing": "Mit Frühstück (fetthaltige Mahlzeit)",
"duration": "3-6 Monate, dann erneut testen"
},
{
"name": "Omega-3 Fischöl",
"dosage": "1000mg EPA+DHA täglich",
"reason": "Unterstützt Cholesterinoptimierung und Herz-Kreislauf-Gesundheit",
"priority": "mittel",
"timing": "Mit Mahlzeiten"
}
],
"dietary_recommendations": [
{
"category": "erhöhen",
"foods": ["Fetter Fisch", "Blattgemüse", "Nüsse", "Olivenöl"],
"reason": "Unterstützt Vitamin-D-Spiegel und Herz-Kreislauf-Gesundheit"
},
{
"category": "reduzieren",
"foods": ["Verarbeitete Lebensmittel", "Rotes Fleisch", "Gesättigte Fette"],
"reason": "Hilft LDL-Cholesterin zu senken"
}
]
},
"api_version": "v1",
"timestamp": "2025-12-22T10:30:00Z"
}
Antwortfelder-Referenz
nutrition_plan.educational_insights Objekt
| Feld | Typ | Beschreibung |
|---|---|---|
blood_marker_education | array | Bildungsinhalte über Blutmarker und ihre Bedeutung |
nutrition_principles | array | Anwendbare Ernährungsprinzipien basierend auf der Analyse |
blood_marker_education Array-Element
| Feld | Typ | Beschreibung |
|---|---|---|
marker | string | Markername mit Status (z.B. "Ferritin (Niedrig)", "Vitamin D (Mangel)") |
explanation | string | Detaillierte Erklärung des Markers |
normal_range | string | Referenzbereich (geschlechtsspezifisch falls zutreffend) |
food_recommendations.power_foods Array-Element
| Feld | Typ | Beschreibung |
|---|---|---|
food | string | Lebensmittelname (z.B. "Lachs", "Spinat") |
nutrients | array | Liste wichtiger Nährstoffe (z.B. ["Omega-3", "Vitamin D", "Protein"]) |
serving | string | Empfohlene Portionsgröße/Häufigkeit (z.B. "100g, 3x pro Woche") |
why | string | Warum dieses Lebensmittel basierend auf Blutmarkern empfohlen wird |
supplement_recommendations Array-Element
| Feld | Typ | Beschreibung |
|---|---|---|
supplement | string | Name des Nahrungsergänzungsmittels (z.B. "Vitamin D3", "Eisenbisglycinat") |
dosage | string | Empfohlene Dosierung (z.B. "2000 IE täglich", "25mg zweimal täglich") |
timing | string | Wann einzunehmen (z.B. "Mit Frühstück", "Auf nüchternen Magen") |
duration | string | Wie lange einzunehmen (z.B. "3 Monate, dann erneut testen", "Fortlaufend") |
reason | string | Warum empfohlen basierend auf Blutmarkern und Gesundheitszielen |
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": 4,
"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": {
"nutrition_plan": {
"daily_calories": 1850,
"educational_insights": {
"blood_marker_education": [
{
"marker": "Ferritin (Niedrig)",
"explanation": "Ferritin ist die Speicherform von Eisen in Ihrem Körper. Niedrige Werte deuten auf erschöpfte Eisenspeicher hin.",
"normal_range": "Frauen: 20-200 ng/mL (optimal: 50-150 ng/mL)"
},
{
"marker": "Vitamin D (Unzureichend)",
"explanation": "Vitamin D ist essentiell für Kalziumaufnahme, Immunfunktion und Energie.",
"normal_range": "30-100 ng/mL (optimal: 40-60 ng/mL)"
}
],
"nutrition_principles": [
"Eisenreiche Lebensmittel mit Vitamin-C-Quellen kombinieren",
"Kalziumreiche Lebensmittel und Tee/Kaffee 2 Stunden von eisenreichen Mahlzeiten fernhalten"
]
},
"food_recommendations": {
"power_foods": [
{
"food": "Wildlachs",
"nutrients": ["Vitamin D", "Omega-3", "Protein", "B12"],
"serving": "150g, 2-3x pro Woche",
"why": "Ausgezeichnete Vitamin-D-Quelle plus Omega-3 für Entzündungsreduzierung"
},
{
"food": "Spinat mit Zitrone",
"nutrients": ["Nicht-Häm-Eisen", "Folat", "Vitamin C"],
"serving": "100g gekocht, täglich",
"why": "Eisen plus Vitamin-C-Kombination maximiert die Eisenaufnahme"
}
]
}
},
"supplement_recommendations": [
{
"supplement": "Eisenbisglycinat",
"dosage": "25mg elementares Eisen",
"timing": "Mit Vitamin C auf nüchternen Magen einnehmen",
"duration": "3-6 Monate, Ferritin nach 3 Monaten erneut testen",
"reason": "Ferritin bei 12 ng/mL erfordert Supplementierung",
"priority": "hoch"
},
{
"supplement": "Vitamin D3",
"dosage": "2000-4000 IE täglich",
"timing": "Mit Frühstück (fetthaltige Mahlzeit) für Absorption",
"duration": "Fortlaufend, in 3 Monaten erneut testen",
"reason": "Wert von 22 ng/mL ist unzureichend; Ziel ist 40-60 ng/mL",
"priority": "hoch"
}
]
},
"api_version": "v1",
"timestamp": "2025-12-20T14:45:22Z"
}
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 |
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 |
budget Ernährungs-API
Budgetniveau für Lebensmittel- und Nahrungsergänzungsmittelempfehlungen.
| Wert | Beschreibung |
|---|---|
low | Budgetbewusste Optionen |
moderate | Ausgewogene Optionen (Standard) |
high | Premium-Optionen |
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 |
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 |