Endpunkte der Bluttest API

Zuletzt aktualisiert:

Vollständige Referenz aller Kantesti Bluttest-API-Endpunkte mit Codebeispielen in mehreren Programmiersprachen.

Neu am 23. September 2026: die DNA Health API

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.

Basis-URL
https://app.aibloodtestinterpret.com

Changelog

Verfolgen Sie API-Versionen, Updates und Migrationsinformationen. Verwenden Sie die empfohlenen Endpunkte für neue Integrationen.

Neueste Updates (2026)

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.

APIEndpunktStatus
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

DatumVersionÄ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.

VersionEndpunktStatus
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
Hinweis

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.

Standardsprache

Wenn kein language-Parameter angegeben wird, gibt die API Antworten auf Englisch (en) zurück.

Wichtige Weltsprachen

CodeSpracheEigenbezeichnung
enEnglischEnglish
zhChinesisch中文
esSpanischEspañol
arArabischالعربية
hiHindiहिन्दी
ptPortugiesischPortuguês
ruRussischРусский
jaJapanisch日本語
frFranzösischFrançais
deDeutschDeutsch
koKoreanisch한국어
trTürkischTürkçe

Europäische Sprachen

CodeSpracheEigenbezeichnung
itItalienischItaliano
nlNiederländischNederlands
plPolnischPolski
elGriechischΕλληνικά
svSchwedischSvenska
noNorwegischNorsk
daDänischDansk
fiFinnischSuomi
csTschechischČeština
ukUkrainischУкраїнська
roRumänischRomână
huUngarischMagyar
bgBulgarischБългарски
hrKroatischHrvatski
skSlowakischSlovenčina
slSlowenischSlovenščina
srSerbischСрпски
ltLitauischLietuvių
lvLettischLatviešu
etEstnischEesti
caKatalanischCatalà
euBaskischEuskara
glGalizischGalego
cyWalisischCymraeg
gaIrischGaeilge
isIsländischÍslenska
mtMaltesischMalti
sqAlbanischShqip
mkMazedonischМакедонски
bsBosnischBosanski
lbLuxemburgischLëtzebuergesch
beWeißrussischБеларуская

Nahostsprachen & Zentralasiatische Sprachen

CodeSpracheEigenbezeichnung
heHebräischעברית
faPersischفارسی
azAserbaidschanischAzərbaycan
kaGeorgischქართული
hyArmenischՀայdelays
kkKasachischҚазақша
uzUsbekischOʻzbek
tgTadschikischТоҷикӣ
kyKirgisischКыргызча
tkTurkmenischTürkmen
mnMongolischМонгол
psPaschtuپښتو
kuKurdischKurdî

Südasiatische Sprachen

CodeSpracheEigenbezeichnung
bnBengalischবাংলা
taTamilischதமிழ்
teTeluguతెలుగు
mrMarathiमराठी
guGujaratiગુજરાતી
knKannadaಕನ್ನಡ
mlMalayalamമലയാളം
paPunjabiਪੰਜਾਬੀ
urUrduاردو
neNepaliनेपाली
siSinghalesischසිංහල
sdSindhiسنڌي
asAssamesischঅসমীয়া
orOdiaଓଡ଼ିଆ

Südostasiatische Sprachen

CodeSpracheEigenbezeichnung
idIndonesischBahasa Indonesia
thThailändischไทย
viVietnamesischTiếng Việt
msMalaiischBahasa Melayu
myBirmanischမြန်မာ
kmKhmerភាសាខ្មែរ
loLaotischລາວ
filFilipinoFilipino
tlTagalogTagalog
jvJavanischBasa Jawa
suSundanesischBasa Sunda

Afrikanische Sprachen

CodeSpracheEigenbezeichnung
afAfrikaansAfrikaans
swSuaheliKiswahili
amAmharischአማርኛ
haHausaHausa
yoYorubaYorùbá
igIgboIgbo
zuZuluisiZulu
xhXhosaisiXhosa
soSomaliSoomaali
mgMadagassischMalagasy

Andere Sprachen

CodeSpracheEigenbezeichnung
laLateinLatina
eoEsperantoEsperanto
yiJiddischייִדיש
htHaitianisch-KreolischKreyòl Ayisyen
miMaoriTe Reo Māori
smSamoanischGagana Samoa
toTongaischLea Faka-Tonga
hawHawaiianischʻŌlelo Hawaiʻi

Bluttest-Analyse-API

Analysieren Sie Bluttestbilder oder PDFs mit KI, um Parameter zu extrahieren und umfassende medizinische Interpretationen zu generieren.

POST /api/v12/18-09-2026/analyze Neueste

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

ParameterTypErforderlichBeschreibung
usernamestringJaIhr API-Benutzername
passwordstringJaIhr API-Passwort
filefileJaBluttestbild (PNG, JPG, WEBP) oder PDF. Max. 20 MB. Wiederholen Sie das Feld, um mehrere Bilder zu senden.
languagestringNeinSprachcode der Antwort (Standard: en). Siehe unterstützte Sprachen.
pdf_passwordstringNeinPasswort 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"
}
POST /api/v11/01-06-2025/analyze Stabil

Produktionsendpunkt für Bluttestanalyse. Verbraucht 1 Credit pro Anfrage.

Anfrageparameter

ParameterTypErforderlichBeschreibung
usernamestringJaIhr API-Benutzername
passwordstringJaIhr API-Passwort
filefileJaBluttestbild (PNG, JPG, WEBP) oder PDF. Max 20MB.
languagestringNeinAntwortsprachcode (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
FeldTypBeschreibung
statusstring"success" oder "error"
dataobjectEnthält alle Analyseergebnisse
timestampstringISO 8601 Zeitstempel der Antwort
api_versionstringVerwendete API-Version
data.metadata Objekt
FeldTypBeschreibung
lab_datestringDatum der Blutentnahme (JJJJ-MM-TT)
results_datestringDatum der Ergebnisausgabe (JJJJ-MM-TT)
lab_namestringName des Labors
lab_citystringStadt des Labors
lab_countrystringLand des Labors
patient_namestringVollständiger Name des Patienten (nur Metadaten, wird nicht an die Interpretation gesendet)
patient_agestringAlter des Patienten
patient_sexstring"male", "female" oder "other"
data.parameters Array-Element
FeldTypBeschreibung
categorystringParameterkategorie (z.B. "Blutbild", "Lipidprofil")
long_namestringVollständiger Parametername
short_namestringAbgekürzter Parametername
resultstringMesswert
unitstringMaßeinheit
range_minstringMinimaler Referenzbereich
range_maxstringMaximaler Referenzbereich
evaluationstringErgebnisstatus. Siehe Bewertungswerte
data.interpretation Array-Element
FeldTypBeschreibung
titlestringAbschnittstitel (z.B. "Gesamtgesundheitsbewertung")
contentstringKI-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"
}
Antwort-Schlüsselwörter

Das Feld evaluation verwendet standardisierte Werte. Siehe Bewertungswerte.

POST /api/v12/health-score/analyze Neueste

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"}
  ]
}
Antwort-Schlüsselwörter

Das Feld score_interpretation verwendet standardisierte Werte. Siehe Gesundheitsscore-Werte.

POST /api/v11/health-score/analyze Stabil

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.

Sandbox-Vorteile
  • Kein Kontingentverbrauch
  • Liefert realistische Testdaten
  • Gleiches Anfrageformat wie Produktion
  • Testen Sie Ihre Integration vor dem Livebetrieb
  • Für alle API-Versionen verfügbar
APISandbox-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
Vergleichs-API vs Trendanalyse-API

Wählen Sie die richtige API für Ihren Anwendungsfall:

FunktionKI-BluttestvergleichTrendanalyse
HauptfokusKI-narrative VergleichStatistische Trendanalyse
KI-VerarbeitungVollständige KI-NarrativeKI-erweitert + Statistik
AusgabetypNarrative ZusammenfassungenDiagramme, Statistiken, Muster
Geeignet fürWas hat sich zwischen Tests geändertLangzeit-Parameter-Tracking
Min. Tests22
Max. Tests2050

Trendanalyse-API

Analysieren Sie Gesundheitsparameter-Trends über die Zeit mit KI-gestützter Mustererkennung. Identifizieren Sie Verbesserungen, Verschlechterungen und handlungsrelevante Erkenntnisse aus historischen Bluttestdaten.

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.

POST /api/v1/nutrition/diet-plan/analyze Neu

Erstellt umfassende Ernährungs- und Nahrungsergänzungsmittelempfehlungen basierend auf Bluttestparametern und Patientenprofil.

Anfrageparameter

ParameterTypErforderlichBeschreibung
usernamestringJaIhr API-Benutzername
passwordstringJaIhr API-Passwort
languagestringNeinAntwortsprache (Standard: en). Siehe unterstützte Sprachen.
patientobjectJaPatientendemografie und Gesundheitsinformationen
blood_testobjectJaBluttestparameter
health_goalsarrayNeinSpezifische Gesundheitsziele
dietary_restrictionsarrayNeinAllergien, Unverträglichkeiten, Präferenzen

Patientenobjekt-Schema

Patienten-Demografieobjekt mit gender (siehe Werte) und activity_level (siehe Werte).

FeldTypErforderlichStandardBeschreibung
ageintegerJa-Patientenalter in Jahren (18-120)
genderstringJa-Patientengeschlecht. Siehe Werte
weightnumberNeinnullGewicht in kg (für Kalorienberechnungen)
heightnumberNeinnullGröße in cm (für BMI-Berechnungen)
conditionsarrayNein[]Erkrankungen (z.B. ["diabetes", "hypertension"])
allergiesarrayNein[]Lebensmittel-/Nahrungsergänzungsmittelallergien
dietary_preferencesarrayNein[]Ernährungspräferenzen. Siehe Werte
activity_levelstringNein"moderate"Aktivitätsniveau. Siehe Werte
dietary_restrictionsarrayNein[]Ernährungseinschränkungen. Siehe Werte
liked_foodsarrayNein[]Bevorzugte Lebensmittel
disliked_foodsarrayNein[]Abgelehnte Lebensmittel
meal_frequencyintegerNein3Bevorzugte Mahlzeiten pro Tag (2-6)
budgetstringNein"moderate"Budgetniveau. Siehe Werte
medicationsarrayNein[]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
FeldTypBeschreibung
blood_marker_educationarrayBildungsinhalte über Blutmarker und ihre Bedeutung
nutrition_principlesarrayAnwendbare Ernährungsprinzipien basierend auf der Analyse
blood_marker_education Array-Element
FeldTypBeschreibung
markerstringMarkername mit Status (z.B. "Ferritin (Niedrig)", "Vitamin D (Mangel)")
explanationstringDetaillierte Erklärung des Markers
normal_rangestringReferenzbereich (geschlechtsspezifisch falls zutreffend)
food_recommendations.power_foods Array-Element
FeldTypBeschreibung
foodstringLebensmittelname (z.B. "Lachs", "Spinat")
nutrientsarrayListe wichtiger Nährstoffe (z.B. ["Omega-3", "Vitamin D", "Protein"])
servingstringEmpfohlene Portionsgröße/Häufigkeit (z.B. "100g, 3x pro Woche")
whystringWarum dieses Lebensmittel basierend auf Blutmarkern empfohlen wird
supplement_recommendations Array-Element
FeldTypBeschreibung
supplementstringName des Nahrungsergänzungsmittels (z.B. "Vitamin D3", "Eisenbisglycinat")
dosagestringEmpfohlene Dosierung (z.B. "2000 IE täglich", "25mg zweimal täglich")
timingstringWann einzunehmen (z.B. "Mit Frühstück", "Auf nüchternen Magen")
durationstringWie lange einzunehmen (z.B. "3 Monate, dann erneut testen", "Fortlaufend")
reasonstringWarum 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.

POST /api/v1/bloodtest/comparison/analyze

Analysiert 2-20 Bluttests und liefert einen detaillierten Vergleich mit KI-generierten narrativen Erkenntnissen.

Anforderungen
  • Mindestens 2 Bluttests erforderlich
  • Maximal 20 Bluttests pro Anfrage
  • Jeder Test muss lab_date oder results_date enthalten
  • Mindestens ein gemeinsamer Parameter über alle Tests

Anfrageparameter

ParameterTypErforderlichStandardBeschreibung
usernamestringJa-Ihr API-Benutzername
passwordstringJa-Ihr API-Passwort
languagestringNeinenAntwortsprache. Siehe unterstützte Sprachen
blood_testsarrayJa-Array von Bluttestobjekten (2-20 Tests)

blood_tests Array-Struktur

FeldTypErforderlichBeschreibung
lab_datestringJa*Testdatum im YYYY-MM-DD Format
results_datestringJa*Alternative zu lab_date (YYYY-MM-DD)
parametersarrayJaArray von Bluttestparametern
metadataobjectNeinZusä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

FeldTypBeschreibung
comparison_idstringEindeutige Kennung für diesen Vergleich (Format: CMP-XXXXXXXX)
comparison_summaryobjectÜbersicht: key_findings, overall_trend, Berichtsdaten, time_interval
parameter_analysisarrayDetaillierte Analyse pro Parameter mit Änderungstyp und klinischer Bedeutung
health_assessmentobjectBesorgnisbereiche, Verbesserungen, positive Entwicklungen, Risikofaktoren
recommendationsobjectFolgeuntersuchungen, sofortige Maßnahmen, Lebensstiländerungen, Fachärztüberweisungen
detailed_interpretationobjectKI-narrative Abschnitte mit Zusammenfassung und klinischen Empfehlungen

parameter_analysis Objektstruktur

FeldTypBeschreibung
parameter_namestringParametername
report1_valuestringWert aus erstem Bericht mit Einheit
report2_valuestringWert aus zweitem Bericht mit Einheit
change_typestringincreased, decreased oder stable
change_magnitudestringsignificant, moderate oder minor
clinical_significancestringKI-Erklärung der Bedeutung der Änderung
trend_assessmentstringpositive, 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
  }
}
Antwort-Schlüsselwörter

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.

WertStandardBeschreibung
comprehensive✓Vollständige Analyse mit Statistiken, Diagrammen und KI-Interpretation
statisticalNur statistische Analyse
summaryNur Zusammenfassung auf hoher Ebene

health_goals Ernährungs-API

Gesundheitsziele für personalisierte Ernährungsempfehlungen. Mehrere Werte können als Array bereitgestellt werden.

WertBeschreibung
maintainAktuelle Gesundheit beibehalten (Standard)
improve_energyFokus auf Energieniveau
weight_managementGesundes Gewichtsmanagement
heart_healthKardiovaskuläre Gesundheit
immune_supportUnterstützung des Immunsystems
digestive_healthVerdauungsgesundheit
bone_healthKnochengesundheit
mental_clarityKognitive 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.

WertBeschreibung
low_sodiumReduzierte Natriumaufnahme
low_sugarReduzierte Zuckeraufnahme
low_fatReduzierte Fettaufnahme
gluten_freeKein Gluten
dairy_freeKeine Milchprodukte
nut_freeKeine Nüsse
soy_freeKein Soja
egg_freeKeine Eier
halalHalal-konform
kosherKoscher-konform
Hinweis

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.

WertBeschreibung
omnivoreKeine Einschränkungen (Standard)
vegetarianKein Fleisch
veganKeine tierischen Produkte
pescatarianVegetarisch + Fisch
ketoKetogene Ernährung
paleoPaläolithische Ernährung
mediterraneanMediterrane Ernährung

activity_level Ernährungs-API

Körperliches Aktivitätsniveau für Kalorien- und Nährstoffberechnungen.

WertBeschreibung
sedentaryWenig oder keine Bewegung
lightLeichte Bewegung 1-3 Tage/Woche
moderateModerate Bewegung 3-5 Tage/Woche (Standard)
activeIntensive Bewegung 6-7 Tage/Woche
very_activeSehr intensive Bewegung oder körperlicher Beruf

budget Ernährungs-API

Budgetniveau für Lebensmittel- und Nahrungsergänzungsmittelempfehlungen.

WertBeschreibung
lowBudgetbewusste Optionen
moderateAusgewogene Optionen (Standard)
highPremium-Optionen

gender Alle APIs

Patientengeschlecht für personalisierte Referenzbereiche und Empfehlungen.

WertBeschreibung
maleMännlicher Patient
femaleWeiblicher Patient
otherAndere 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.

WertBeschreibung
normalInnerhalb des normalen Referenzbereichs
lowUnter dem Normalbereich
highÜber dem Normalbereich
critical_lowKritisch niedrig (sofortige Aufmerksamkeit erforderlich)
critical_highKritisch hoch (sofortige Aufmerksamkeit erforderlich)
borderline_lowLeicht unter dem Normalbereich
borderline_highLeicht über dem Normalbereich

trend_assessment Vergleichs- & Trend-APIs

Gesamtbewertung der Parametertrends zwischen Tests.

WertBeschreibung
positiveVerbessert (bewegt sich zum Normalbereich)
negativeVerschlechtert (entfernt sich vom Normalbereich)
stableRelativ unverändert zwischen Tests
improvingAllgemeiner Verbesserungstrend
worseningAllgemeiner Verschlechterungstrend

trend_direction Trendanalyse-API

Richtung der Parameterwertänderungen über die Zeit.

WertBeschreibung
upwardWerte steigen über die Zeit
downwardWerte sinken über die Zeit
stableMinimale Änderung über die Zeit

trend_strength Trendanalyse-API

Stärke des beobachteten Trends.

WertBeschreibung
strong>15% Änderung zwischen Perioden
moderate5-15% Änderung zwischen Perioden
mild<5% Änderung zwischen Perioden

health_score / score_interpretation Gesundheitswert-API

Gesamtinterpretation des Gesundheitswertes basierend auf analysierten Parametern.

WertBeschreibung
excellentAlle Marker im optimalen Bereich
goodDie meisten Marker im Normalbereich
fairEinige Marker erfordern Aufmerksamkeit
poorMehrere Marker erfordern Aufmerksamkeit

Hilfs-Endpunkte

GET /api/info

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"
}
GET /api/health

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%"
}
POST /api/quota/check

Ü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

Veröffentlicht: 23. März 2026

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.

100+
Sprachen
9
Erkrankungskategorien
14
Familienbeziehungen

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.

Hauptfunktionen
  • 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

EndpunktMethodeBeschreibungAuth
/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)
POST /api/v1/family-health/analyze Veröffentlicht 23.03.2026

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)

ParameterTypErforderlichBeschreibung
usernamestringJaIhr API-Benutzername
passwordstringJaIhr API-Passwort
patient_dataobjectJaPatienteninformationen (siehe unten)
family_membersarrayJa*Array von Familienmitglieder-Objekten (max. 100). *Erforderlich wenn health_profile fehlt
health_profileobjectJa*Gesundheitsprofil des Patienten. *Erforderlich wenn family_members fehlt
blood_test_dataarrayNeinArray von Bluttestdaten für Korrelationsanalyse
languagestringNeinAntwortsprache (Standard: en). 100+ Sprachen unterstützt

patient_data Objekt

FeldTypErforderlichBeschreibung
namestringNeinVollständiger Name des Patienten
ageintegerJaAlter des Patienten in Jahren
genderstringJamale, female oder other
dobstringNeinGeburtsdatum (JJJJ-MM-TT)

family_members Array-Element

FeldTypErforderlichBeschreibung
relationstringJaBeziehungstyp: father, mother, brother, sister, paternal_grandfather, paternal_grandmother, maternal_grandfather, maternal_grandmother, paternal_uncle, paternal_aunt, maternal_uncle, maternal_aunt, son, daughter
ageintegerNeinAlter des Familienmitglieds
conditionsarrayNeinArray bekannter Erkrankungen (Strings)
deceasedbooleanNeinOb das Familienmitglied verstorben ist
age_at_deathintegerNeinAlter beim Tod (falls verstorben)
cause_of_deathstringNeinTodesursache (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

FehlercodeHTTP-StatusBeschreibung
AUTH_1001401Fehlende Authentifizierungsdaten
AUTH_1002401Ungültiger Benutzername oder Passwort
QUOTA_1101403Unzureichendes API-Kontingent
VAL_2001400Pflichtfeld fehlt
VAL_2003400Nicht unterstützter Sprachcode
VAL_2006400Array überschreitet maximale Größe (max. 100 Familienmitglieder)
VAL_2007400Ungültige Patientendatenstruktur
PROC_3001500Berichterstellung fehlgeschlagen
PROC_3003500KI-Verarbeitungsfehler
SRV_5001500Interner Serverfehler

Family Health Sandbox-Endpunkt

Testen Sie Ihre Family Health API-Integration ohne Credits zu verbrauchen. Der Sandbox-Endpunkt liefert realistische Beispielberichtsdaten.

APISandbox-EndpunktBeschreibung
Family Health Analyze/api/v1/family-health/sandbox/analyzeGibt Beispieldaten für Familiengesundheits-Risikobewertung zurück

Referenz-Endpunkte (Keine Auth erforderlich)

Diese Endpunkte liefern Referenzdaten zum Aufbau Ihrer Integration. Keine Authentifizierung erforderlich.

EndpunktMethodeBeschreibung
/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

Veröffentlicht: 18. September 2026

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.

13
Körperregionen
39
Eingabesprachen
0
Modellaufrufe im Standardfall

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.

Hauptfunktionen
  • 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

EndpunktMethodeBeschreibungAuth
/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
POST /api/v1/body-map/analyze Veröffentlicht 18.09.2026

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

ParameterTypErforderlichBeschreibung
usernamestringJaIhr API-Benutzername
passwordstringJaIhr API-Passwort
parametersarrayJaLaborergebnis-Objekte. Max. 500. Jedes benötigt einen Analytnamen und eine evaluation.
interpretationarrayNeinKlinische Interpretation, wird nur als Kontext verwendet, wenn ai_assist aktiviert ist
ai_assistbooleanNeinDas Modell Marker zuordnen lassen, die die Alias-Tabellen nicht erkennen (Standard: false)
include_imagebooleanNeinDie gerenderte Illustration anfordern (Standard: false)
image_waitintegerNeinSekunden, die auf eine frisch erzeugte Illustration gewartet wird, 0-30 (Standard: 0)

Felder des Parameter-Objekts

FeldTypErforderlichBeschreibung
short_namestringJa*Analytname, wie ihn das Labor gedruckt hat. *Mindestens eines von short_name, long_name, name, parameter_name oder parameter ist erforderlich.
long_namestringNeinVollständiger Analytname; verbessert die Zuordnung von Abkürzungen
evaluationstringNeinEiner der Werte high, low, bad, slightly_high, slightly_low, normal. Nur markierte Werte erscheinen auf der Karte.
resultstring|numberNeinDer gemessene Wert; bestimmt die Rangfolge der gezeichneten Regionen
unitstringNeinEinheit des Ergebnisses, in beliebiger Schreibweise
range_normal_minnumberNeinUntere Grenze des Referenzbereichs
range_normal_maxnumberNeinObere Grenze des Referenzbereichs
categorystringNeinLaborkategorie; 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

FeldTypBeschreibung
body_map.specstringKanonische Kennung für diese Kombination aus Regionen und Schweregraden. Identische Panels teilen sich eine Spec und damit auch eine zwischengespeicherte Illustration.
body_map.regions[].keystringEiner der 13 Regionsschlüssel
body_map.regions[].levelinteger2 = außerhalb des Referenzbereichs, 1 = grenzwertig
body_map.regions[].drawnbooleanOb diese Region auf der Illustration eingezeichnet wird. Die Legende listet immer alle Regionen auf; gezeichnet werden höchstens sechs.
body_map.regions[].markersarrayMarkernamen, die diese Region auf die Karte gebracht haben, die auffälligsten zuerst
body_map.unmappedintegerMarkierte Marker, die keiner Region zugeordnet werden konnten
body_map.image_urlstring|nullZwischengespeicherte Illustration. null, solange die Datei nicht existiert — weichen Sie auf fallback_url aus.
body_map.fallback_urlstringSignierte Erzeugungs-URL. Immer vorhanden. Antwortet mit 503 und Retry-After, solange die Illustration noch erzeugt wird.
all_clearbooleantrue, wenn nichts markiert wurde; dann gilt der gemeinsame "alles in Ordnung"-Körper
modestringdeterministic oder ai_assisted
Die Legende darstellen

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.

POST /api/v1/body-map/validate Veröffentlicht 18.09.2026

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.

GET /api/v1/body-map/regions

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
  }
}
GET /api/v1/body-map/info

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.

FehlercodeHTTPBedeutung
AUTH_1001401Fehlende Authentifizierungsdaten
AUTH_1002401Ungültiger Benutzername oder ungültiges Passwort
AUTH_1004400Fehlerhafte Zugangsdaten (falscher Typ oder zu lang)
QUOTA_1101403Unzureichendes API-Kontingent
VAL_2001400parameters fehlt
VAL_2002400Ungültiges Datenformat
VAL_2005400parameters ist leer
VAL_2006400Mehr als 500 Parameter
VAL_2008400Eine Parameterzeile ist fehlerhaft oder ohne Namen
RES_4004422Es gibt markierte Ergebnisse, aber keines lässt sich einer Körperregion zuordnen
RES_4005503Die Body-Map-Engine ist in dieser Installation deaktiviert

Biologisches Blutalter API

Veröffentlicht: 18. September 2026

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.

9
PhenoAge-Marker
18
Abgeleitete Indizes
39
Eingabesprachen

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.

Hauptfunktionen
  • 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

EndpunktMethodeBeschreibungAuth
/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
POST /api/v1/blood-age/analyze Veröffentlicht 18.09.2026

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

ParameterTypErforderlichBeschreibung
usernamestringJaIhr API-Benutzername
passwordstringJaIhr API-Passwort
parametersarrayJaLaborergebnis-Objekte. Max. 500. Jedes benötigt einen Analytnamen und ein Ergebnis.
metadataobjectNeinBerichtskopf. Dringend empfohlen: PhenoAge enthält einen Term für das chronologische Alter. Gelesen werden patient_age, patient_sex, dob, lab_date.
patientobjectNein{"age": 42, "gender": "female"} — wird verwendet, wenn die Metadaten diese Angaben nicht enthalten
interpretationarrayNeinKlinische Interpretation, dient ausschließlich als Modellkontext
languagestringNeinSprache für die optionale persönliche Notiz (Standard: en). Siehe unterstützte Sprachen.
ai_assistbooleanNeinDas Modell ungewöhnliche Analytnamen erkennen lassen (Standard: false)
ai_estimatebooleanNeinDas Modell ein unvollständiges Alter verbessern lassen (Standard: false)
ai_notebooleanNeinEine 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.

MarkerTypischer NameZieleinheit
albuminAlbuming/L
creatinineKreatininµmol/L
glucoseGlukose / Nüchternblutzuckermmol/L
crpC-reaktives Proteinmg/L
lymphLymphozyten%
mcvMittleres korpuskuläres VolumenfL
rdwErythrozytenverteilungsbreite%
alpAlkalische PhosphataseU/L
wbcLeukozytenzahl10⁹/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

FeldTypBeschreibung
summary.statusstringok, missing_age, missing_markers, needs_markers oder unavailable
summary.sourcestringformula (alle neun Marker), partial (Mediane ergänzt) oder ai (Modellschätzung, nur mit ai_estimate)
summary.chronological_ageinteger|nullAlter aus den Metadaten oder dem patient-Objekt
summary.biological_agenumber|nullDas berechnete Blutalter in Jahren
summary.delta_yearsnumber|nullBiologisch minus chronologisch. Negativ bedeutet jünger als der Kalender.
summary.markers_missingarrayWelche der neun PhenoAge-Marker das Panel nicht geliefert hat
blood_age.age.inputsobjectDie tatsächlich verwendeten umgerechneten Werte in den Zieleinheiten
blood_age.age.labelsobjectDer Name Ihres Labors für jeden von der Engine zugeordneten Marker
blood_age.indices[].bandstringok, borderline, high, low oder info
blood_age.indices[].fromarrayDie Laborzeilen, aus denen dieser Index abgeleitet wurde
modestringdeterministic oder ai_assisted
Chronologisches Alter angeben

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.

POST /api/v1/blood-age/validate Veröffentlicht 18.09.2026

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.

GET /api/v1/blood-age/biomarkers

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."
  }
}
GET /api/v1/blood-age/info

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.

FehlercodeHTTPBedeutung
AUTH_1001401Fehlende Authentifizierungsdaten
AUTH_1002401Ungültiger Benutzername oder ungültiges Passwort
AUTH_1004400Fehlerhafte Zugangsdaten (falscher Typ oder zu lang)
QUOTA_1101403Unzureichendes API-Kontingent
VAL_2001400parameters fehlt
VAL_2002400Ungültiges Datenformat
VAL_2003400Nicht unterstützter Sprachcode
VAL_2005400parameters ist leer
VAL_2006400Mehr als 500 Parameter
VAL_2007400Ungültiges patient-Objekt
VAL_2008400Eine Parameterzeile ist fehlerhaft oder ohne Namen
VAL_2009400Nicht unterstützter Wert für patient.gender
RES_4004422Aus diesen Parametern lässt sich nichts berechnen
RES_4005503Die Blutalter-Engine ist in dieser Installation deaktiviert

DNA Health API: DNA-Test-Interpretation, DNA + Blut-Bericht und Supplement-Berater

Veröffentlicht: 23. September 2026

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.

334
Kuratierte DNA-Marker
20
Gesundheitskategorien
100+
Berichtssprachen

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.

Hauptfunktionen
  • Alle gängigen DNA-Quellen — Rohdateien von 23andMe, AncestryDNA, MyHeritage, FTDNA und LivingDNA, VCF-Dateien, auch als .zip oder .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, neutral oder watch ein, 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_library und 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=1 an 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
So arbeiten die drei Module zusammen

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

EndpunktMethodeBeschreibungAuth
/api/v1/dna-interpretation/analyzePOSTDNA-Datei, eingefügte rsID-Zeilen oder Berichtsseiten → umfassender genetischer GesundheitsberichtErforderlich (1 Credit)
/api/v1/dna-interpretation/validatePOSTUpload einlesen und anzeigen, was gefunden wurde, ohne KI-AufrufErforderlich (Kostenlos)
/api/v1/dna-interpretation/sandboxPOSTBeispiel eines genetischen BerichtsErforderlich (Kostenlos)
/api/v1/dna-interpretation/infoGETAkzeptierte Eingaben, Limits und BerichtssprachenNicht erforderlich
/api/v1/dna-blood-report/analyzePOSTDNA-Bericht + interpretierter Bluttest → kombinierter GesundheitsberichtErforderlich (1 Credit)
/api/v1/dna-blood-report/validatePOSTAnfragedaten ohne KI-Aufruf prüfenErforderlich (Kostenlos)
/api/v1/dna-blood-report/sandboxPOSTBeispiel eines kombinierten BerichtsErforderlich (Kostenlos)
/api/v1/dna-blood-report/infoGETAnfragefelder und LimitsNicht erforderlich
/api/v1/dna-supplements/analyzePOSTDNA-Bericht + Bluttest (optional) + Fragebogen → Supplement-PlanErforderlich (1 Credit)
/api/v1/dna-supplements/validatePOSTAnfragedaten und Antworten ohne KI-Aufruf prüfenErforderlich (Kostenlos)
/api/v1/dna-supplements/sandboxPOSTBeispiel eines Supplement-PlansErforderlich (Kostenlos)
/api/v1/dna-supplements/questionnaireGETDie 25 Fragen und ihre zulässigen AntwortenNicht erforderlich
/api/v1/dna-supplements/settingsGET PUTProduktkatalog und Berater-Einstellungen Ihrer Klinik lesen oder aktualisierenErforderlich (Kostenlos)
/api/v1/dna-supplements/infoGETAnfragefelder und LimitsNicht erforderlich
POST /api/v1/dna-interpretation/analyze Veröffentlicht 23.09.2026

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

ParameterTypErforderlichBeschreibung
usernamestringJaIhr API-Benutzername (oder HTTP Basic-Authentifizierung verwenden)
passwordstringJaIhr API-Passwort
filefileJa*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_textstringJa*Eingefügte Genotyp-Zeilen (rsID, Chromosom, Position, Genotyp), bis zu 2.000.000 Zeichen
languagestringNeinSprachcode des Berichts, z. B. en, de, ar (Standard: en). Siehe unterstützte Sprachen.
patientobjectNeinage, sex, diagnoses, comorbidities, medications, treatments, notes. In einer Multipart-Anfrage als JSON-String senden.
source_labelstringNeinIhre 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

FeldTypBeschreibung
sourceobjectWas 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.levelstringtypical, slightly_elevated, elevated oder high
report.sections[]arrayEin Eintrag pro Gesundheitsbereich mit einem risk_level und den zugehörigen findings
report.sections[].findings[]arraygene, rsid, genotype, phenotype, risk_level (protective, typical, informational, slightly_elevated, elevated, high), evidence (established, probable, preliminary), explanation, recommendation
report.pharmacogenomics[]arrayVorhergesagter Metabolisierer-Phänotyp pro Gen und die Arzneimittelklassen, die davon betroffen sein können. Der Bericht nennt nie Dosierungen verschreibungspflichtiger Arzneimittel.
report.carrier_status[]arraycarrier, not_detected, affected_pattern oder inconclusive, stets durch klinische Gentests zu bestätigen
report.disease_risks[], nutrigenomics[], traits[]arrayErkrankungsrisiken, Nährstoffbefunde und Merkmale mit den zugrunde liegenden Genen
report.recommended_tests[], red_flags[]arrayFolgeuntersuchungen mit Begründung sowie Befunde, die zeitnah Aufmerksamkeit erfordern
POST /api/v1/dna-interpretation/validate Veröffentlicht 23.09.2026

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": []}
  }
}
POST /api/v1/dna-blood-report/analyze Veröffentlicht 23.09.2026

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

ParameterTypErforderlichBeschreibung
dna_reportobjectJaDer Bericht aus /api/v1/dna-interpretation/analyze: data.report, das gesamte data-Objekt oder die vollständige Antwort
blood_testobject|arrayJaEin interpretierter Bluttest, wie ihn die Bluttest API liefert (metadata, parameters, interpretation), oder einfach eine Liste von bis zu 500 Parametern mit Namen und result
languagestringNeinSprachcode des Berichts (Standard: en)
patientobjectNeinDieselben 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

FeldTypBeschreibung
report.overall_status.levelstringgood, watch, attention oder urgent
report.correlations[].concordancestringconfirms, contradicts, neutral oder watch
report.risk_matrix[]arrayPro Bereich: genetic_risk, lab_status (normal, borderline, abnormal, not_measured) und eine kombinierte Bewertung
report.priority_actions[]arraypriority (high, medium, low), die Maßnahme und ihre Begründung
report.monitoring_plan[]arrayWelcher Marker wann und warum erneut getestet werden sollte
POST /api/v1/dna-supplements/analyze Veröffentlicht 23.09.2026

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

ParameterTypErforderlichBeschreibung
dna_reportobjectJaDer Bericht aus /api/v1/dna-interpretation/analyze
answersobjectJaAntworten 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_testobject|arrayNeinDasselbe Format wie beim DNA + Blut-Bericht
use_clinic_cataloguebooleanNeinProduktkatalog und Einstellungen Ihrer Klinik anwenden (Standard: true)
languagestringNeinSprachcode des Berichts (Standard: en)
patientobjectNeinDieselben 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

FeldTypBeschreibung
catalogueobjectDer angewendete Katalogmodus (prefer, only, off) und die Anzahl der verfügbaren Klinikprodukte
report.recommendations[]arrayname, form, dose, timing, duration, priority, die genetische / labordiagnostische / fragebogenbasierte rationale, evidence, cautions, interactions und retest
report.recommendations[].sourcestringclinic_library für ein Produkt aus Ihrem Katalog (benannt in product), andernfalls evidence_based
report.uncovered_needs[]arrayIm Modus „nur Klinikprodukte“: Bedarfe, die Ihr Katalog nicht abdeckt
report.clinician_review_required[]arrayAlles, 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[]arrayWas zu meiden ist, Lebensmittelquellen für jeden Nährstoff und wann erneut getestet werden sollte
GET PUT /api/v1/dna-supplements/settings Veröffentlicht 23.09.2026

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.

FeldTypBeschreibung
catalogue[]arrayBis zu 200 Produkte: name, brand, form, dosage, category (vitamin, mineral, probiotic, omega, herbal, other), description
settings.modestringprefer (Klinikprodukte, wo sie passen, andernfalls evidenzbasierte Vorschläge), only (nur Klinikprodukte) oder off (Katalog ignorieren)
settings.instructionsstringIhre eigenen Anweisungen an die KI, bis zu 1.500 Zeichen. Sicherheitsregeln haben immer Vorrang.
settings.max_itemsintegerMaximale 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.

FehlercodeHTTPBedeutung
AUTH_1001401Fehlende Authentifizierungsdaten
AUTH_1002401Ungültiger Benutzername oder ungültiges Passwort
QUOTA_1101403Unzureichendes API-Kontingent
VAL_2001400Ein Pflichtfeld fehlt: file oder genotype_text, dna_report, blood_test oder eine erforderliche Antwort
VAL_2002400Unlesbare Genotyp-Daten, nicht unterstützter Dateityp, ungültiges JSON oder ein ungültiger dna_report
VAL_2003400Nicht unterstützte Berichtssprache
VAL_2006400Zu groß: eingefügter Text, Blutparameter (500) oder Katalog (200 Produkte)
VAL_2007400Ungültiges patient-Objekt
VAL_2008400Kein verwertbarer Bluttest-Parameter (Name und Ergebnis)
PROC_3003500Die KI-Antwort konnte nicht erzeugt oder validiert werden; bitte erneut versuchen. Es wird kein Credit berechnet.
RES_4005503Die DNA-Module sind in dieser Installation deaktiviert
Klinische Entscheidungsunterstützung

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

Veröffentlicht: 14. Februar 2026

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.

79%
Schneller als OCR
99,7%
Genauigkeitsrate
100+
Sprachen

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.

ICR Hauptfunktionen
  • 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

EndpunktMethodeBeschreibungKosten
/api/icr/v1/extractPOSTICR-Textextraktion aus Dokumenten0,5 Credit
/api/icr/v1/sandboxPOSTICR-Sandbox-TestKostenlos
/api/icr/v1/kanPOSTBluttestdokumenten-Analyse0,5 Credit
/api/icr/v1/kan/sandboxPOSTBluttest-Sandbox-TestKostenlos
/api/icr/infoGETAPI-Dokumentation und FunktionenKostenlos
/api/icr/healthGETGesundheitsprüfung-EndpunktKostenlos
/api/icr/v1/quotaPOSTVerbleibende ICR-Credits prüfenKostenlos
POST /api/icr/v1/extract Veröffentlicht 14.02.2026

Extrahiert den gesamten Textinhalt aus hochgeladenen Dokumenten mit Kantesti ICR-Technologie. Gibt strukturiertes JSON mit Dokumenttyp-Erkennung, Tabellenextraktion, Abschnittsanalyse und Metadaten zurück.

Anfrageparameter

ParameterTypErforderlichBeschreibung
usernamestringJaIhr API-Benutzername
passwordstringJaIhr API-Passwort
filefileJaDokumentdatei (PDF, JPG, JPEG, PNG)
languagestringNeinAusgabesprache (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.

APISandbox-EndpunktBeschreibung
ICR Extract/api/icr/v1/sandboxLiefert Beispieldaten für die ICR-Extraktion
ICR Kan/api/icr/v1/kan/sandboxLiefert Beispieldaten für Bluttestparameter

ICR vs. OCR Leistungsvergleich

Benchmark-Ergebnisse — Kantesti ICR vs. Herkömmliche OCR
MetrikKantesti ICRHerkömmliche OCRVerbesserung
Verarbeitungsgeschwindigkeit1,2s Durchschnitt5,7s Durchschnitt79% schneller
Textgenauigkeit99,7%92,1%+7,6%
Tabellenerkennung98,9%71,2%+27,7%
Strukturierte AusgabeJSON mit Abschnitten, Tabellen, MetadatenRoher unstrukturierter TextVolle Struktur
Dokumenttyp-ErkennungAutomatischNicht verfügbarKI-gesteuert
Mehrsprachige Unterstützung100+ Sprachen30-50 Sprachen2x+ Abdeckung