Punkty końcowe API badań krwi

Ostatnia aktualizacja:

Pełna referencja wszystkich punktów końcowych API Kantesti z przykładami kodu w wielu językach programowania.

Nowość z 23 września 2026: API Zdrowia DNA

Z dumą ogłaszamy trzy moduły DNA w API Kantesti. Interpretacja testu DNA zamienia surowe dane DNA lub raport genetyczny w kompleksowy raport zdrowia genetycznego, Raport zdrowotny DNA + krew łączy go z badaniem krwi, a Doradca suplementacji przygotowuje spersonalizowany plan suplementacji oparty na produktach Twojej kliniki. Przejdź do dokumentacji API Zdrowia DNA.

Bazowy URL
https://app.aibloodtestinterpret.com

Changelog

Śledź wersje API, aktualizacje i informacje o migracji. Używaj zalecanych punktów końcowych dla nowych integracji.

Najnowsze Aktualizacje (2026)

Wszystkie trzy aktualizacje z 2026 roku zostały zastosowane do każdej wersji API wymienionej poniżej. Numery wersji i ścieżki punktów końcowych nie uległy zmianie, więc migracja nie jest wymagana.

  • 8 września 2026 Aktualizacja modelu AI i ulepszenia w całej platformie
  • 21 lipca 2026 Kompleksowe ulepszenia i poprawki błędów
  • 8 maja 2026 Kompleksowe ulepszenia i poprawki błędów

Aktualne Stabilne Punkty Końcowe

Te punkty końcowe są zalecane do użytku produkcyjnego i nowych integracji.

APIPunkt KońcowyStatus
Analiza Krwi v12 /api/v12/18-09-2026/analyze Zalecany Nowy 18.09.2026
Analiza Krwi (Wynik Zdrowia) v12 /api/v12/health-score/analyze Zalecany Nowy 18.09.2026
Mapa Ciała v1 /api/v1/body-map/analyze Wydano 18.09.2026 Nowy
Biologiczny Wiek Krwi v1 /api/v1/blood-age/analyze Wydano 18.09.2026 Nowy
Interpretacja Testu DNA v1 /api/v1/dna-interpretation/analyze Wydano 23.09.2026 Nowy
Raport Zdrowotny DNA + Krew v1 /api/v1/dna-blood-report/analyze Wydano 23.09.2026 Nowy
Doradca Suplementacji DNA v1 /api/v1/dna-supplements/analyze Wydano 23.09.2026 Nowy
Analiza Krwi v11 /api/v11/01-06-2025/analyze Stabilny Zaktualizowano 08.09.2026
Analiza Krwi (Wynik Zdrowia) v11 /api/v11/health-score/analyze Stabilny Zaktualizowano 08.09.2026
AI Żywienie v1 /api/v1/nutrition/diet-plan/analyze Stabilny Zaktualizowano 08.09.2026
Porównanie AI Badań Krwi v1 /api/v1/bloodtest/comparison/analyze Stabilny Zaktualizowano 08.09.2026
Ocena Ryzyka Zdrowia Rodzinnego v1 /api/v1/family-health/analyze Wydano 23.03.2026 Zaktualizowano 08.09.2026
ICR - Inteligentne Rozpoznawanie Znaków v1 /api/icr/v1/extract Wydano 14.02.2026 Zaktualizowano 08.09.2026
ICR Kan - Ekstrakcja Badań Krwi v1 /api/icr/v1/kan Wydano 14.02.2026 Zaktualizowano 08.09.2026
Analiza Trendów v1 /api/v1/analytics/trends/analyze Stabilny Zaktualizowano 08.09.2026

Historia Wersji

DataWersjaZmiany
23 września 2026 Interpretacja Testu DNA v1, Raport Zdrowotny DNA + Krew v1, Doradca Suplementacji DNA v1 Wydano API Zdrowia DNA — interpretacja testu DNA na podstawie surowych danych DNA (23andMe, AncestryDNA, MyHeritage, FTDNA, LivingDNA, VCF) lub plików raportu genetycznego w odniesieniu do 334 wyselekcjonowanych markerów, łączony raport zdrowotny DNA + krew oraz doradca suplementacji korzystający z własnego katalogu produktów kliniki; tryb asynchroniczny i sandbox
Wrzesień 2026 Analiza Krwi v12 Wydano Analizę Krwi v12 — przesyłanie wielu plików, raportowanie w 100 językach, opcjonalny wynik zdrowia i analiza ryzyka chorób, tryb sandbox
Wrzesień 2026 Mapa Ciała v1, Biologiczny Wiek Krwi v1 Wydano API Mapy Ciała i API Biologicznego Wieku Krwi — odwzorowanie wyników poza zakresem na poziomie narządów w 13 obszarach anatomicznych oraz wiek biologiczny PhenoAge z maks. 18 pochodnymi wskaźnikami klinicznymi; oba oferują tryb deterministyczny i sandbox
Wrzesień 2026 Wszystkie wersje Aktualizacja modelu AI i przypięcie go do najnowszej wersji modelu; kompleksowe ulepszenia i poprawki błędów we wszystkich wersjach API; numery wersji bez zmian; 98,89% dokładności na egzaminach wydziałów lekarskich (najnowszy benchmark open source)
Lipiec 2026 Wszystkie wersje Kompleksowe ulepszenia i poprawki błędów zastosowane we wszystkich wersjach API; numery wersji bez zmian
Maj 2026 Wszystkie wersje Kompleksowe ulepszenia i poprawki błędów zastosowane we wszystkich wersjach API; numery wersji bez zmian
Marzec 2026 Family Health v1 API Oceny Ryzyka Zdrowia Rodzinnego wydana — Analiza ryzyka dziedzicznego z AI, wsparcie 100+ języków, analiza drzewa genealogicznego, harmonogram opieki profilaktycznej, zalecenia badań genetycznych, tryb sandbox
Luty 2026 ICR v1 API ICR (Inteligentne Rozpoznawanie Znaków) wydana — 79% szybsza niż OCR, strukturalny wynik JSON, wykrywanie typu dokumentu, ekstrakcja tabel, integracja Kan badań krwi
Grudzień 2025 Najnowsza Ulepszona obsługa błędów, dokładność 98,7%, wsparcie dla 100 języków
Czerwiec 2025 v11 Analiza krwi v11, punkt końcowy wyniku zdrowia, wsparcie wielu plików
Kwiecień 2025 v9 Model api_parameters_v9, ulepszona ekstrakcja parametrów
Marzec 2025 v8 Wsparcie przesyłania wielu plików, przetwarzanie wsadowe

Starsze Punkty Końcowe

Te punkty końcowe są utrzymywane dla kompatybilności wstecznej, ale nie są zalecane dla nowych integracji.

WersjaPunkt KońcowyStatus
v10 /api/v10/health-score/analyze Starszy
v9 /api/v9/14-04-2025/analyze Starszy
v8 /api/v8/31-03-2025/analyze Starszy
v6 /api/v6-1/21-11-2024/analyze Starszy
v3 /api/v3/10-10-2024/analyze Starszy
Uwaga

Starsze punkty końcowe są utrzymywane dla kompatybilności wstecznej, ale nie są zalecane dla nowych integracji. Prosimy o migrację do aktualnych stabilnych punktów końcowych dla lepszej wydajności i wsparcia.

Obsługiwane Języki

API Kantesti obsługuje 100 języków do lokalizacji odpowiedzi. Użyj parametru language z jednym z poniższych kodów ISO 639-1. Jeśli nie podano, odpowiedzi są domyślnie w języku angielskim (en).

Domyślny język

Jeśli parametr language nie zostanie podany, API zwraca odpowiedzi w języku angielskim (en).

Główne języki światowe

KodJęzykNazwa rodzima
enAngielskiEnglish
zhChiński中文
esHiszpańskiEspañol
arArabskiالعربية
hiHindiहिन्दी
ptPortugalskiPortuguês
ruRosyjskiРусский
jaJapoński日本語
frFrancuskiFrançais
deNiemieckiDeutsch
koKoreański한국어
trTureckiTürkçe

Języki europejskie

KodJęzykNazwa rodzima
itWłoskiItaliano
nlHolenderskiNederlands
plPolskiPolski
elGreckiΕλληνικά
svSzwedzkiSvenska
noNorweskiNorsk
daDuńskiDansk
fiFińskiSuomi
csCzeskiČeština
ukUkraińskiУкраїнська
roRumuńskiRomână
huWęgierskiMagyar
bgBułgarskiБългарски
hrChorwackiHrvatski
skSłowackiSlovenčina
slSłoweńskiSlovenščina
srSerbskiСрпски
ltLitewskiLietuvių
lvŁotewskiLatviešu
etEstońskiEesti

Języki Bliskiego Wschodu i Azji Środkowej

KodJęzykNazwa rodzima
heHebrajskiעברית
faPerskiفارسی
azAzerbejdżańskiAzərbaycan
kaGruzińskiქართული
hyOrmiańskiՀայdelays
kkKazachskiҚазақша
uzUzbeckiOʻzbek

Języki Azji Południowej

KodJęzykNazwa rodzima
bnBengalskiবাংলা
taTamilskiதமிழ்
teTeluguతెలుగు
urUrduاردو
neNepalskiनेपाली

Języki Azji Południowo-Wschodniej

KodJęzykNazwa rodzima
idIndonezyjskiBahasa Indonesia
thTajskiไทย
viWietnamskiTiếng Việt
msMalajskiBahasa Melayu
filFilipińskiFilipino

Języki afrykańskie

KodJęzykNazwa rodzima
afAfrikaansAfrikaans
swSuahiliKiswahili
amAmharskiአማርኛ

Inne języki

KodJęzykNazwa rodzima
laŁacińskiLatina
eoEsperantoEsperanto
yiJidyszייִדיש
htKreolski haitańskiKreyòl Ayisyen
miMaoryskiTe Reo Māori
smSamoańskiGagana Samoa
toTongijskiLea Faka-Tonga
hawHawajskiʻŌlelo Hawaiʻi

API Analizy Badań Krwi

Analizuj obrazy lub pliki PDF badań krwi przy użyciu AI, aby wyodrębnić parametry i generować kompleksowe interpretacje medyczne.

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

Punkt końcowy produkcyjny dla analizy badań krwi. Prześlij jeden lub więcej obrazów badania krwi albo plik PDF, a otrzymasz ustrukturyzowane parametry, metadane pacjenta i laboratorium oraz pełną interpretację kliniczną w dowolnym ze 100 obsługiwanych języków. Zużywa 1 kredyt na żądanie.

Parametry Żądania

ParametrTypWymaganyOpis
usernamestringTakTwoja nazwa użytkownika API
passwordstringTakTwoje hasło API
filefileTakObraz badania krwi (PNG, JPG, WEBP) lub PDF. Maks. 20MB. Powtórz pole, aby przesłać kilka obrazów.
languagestringNieKod języka odpowiedzi (domyślnie: en). Obsługuje ponad 100 języków.
pdf_passwordstringNieHasło do zaszyfrowanych plików PDF

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v12/18-09-2026/analyze" \
  -F "username=TWOJA_NAZWA" \
  -F "password=TWOJE_HASLO" \
  -F "language=pl" \
  -F "file=@badanie_krwi.pdf"

Przykład Python

import requests

def analyze_blood_test(file_paths, username: str, password: str, language: str = "pl"):
    """
    Analizuje badanie krwi za pomocą Kantesti Blood Test Analysis v12.
    Przyjmuje kilka obrazów lub pojedynczy plik PDF.
    """
    url = "https://app.aibloodtestinterpret.com/api/v12/18-09-2026/analyze"

    handles = [open(path, "rb") for path in file_paths]
    try:
        files = [("file", (path, handle)) for path, handle in zip(file_paths, handles)]
        data = {"username": username, "password": password, "language": language}
        response = requests.post(url, files=files, data=data, timeout=300)
        response.raise_for_status()
        return response.json()
    finally:
        for handle in handles:
            handle.close()

result = analyze_blood_test(["badanie_krwi.pdf"], "uzytkownik", "haslo", "pl")
print(f"Status: {result['status']}")
for param in result["data"]["parameters"]:
    print(f"  {param['short_name']}: {param['result']} {param['unit']} ({param['evaluation']})")

Przykładowa odpowiedź

{
  "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 Stabilny

Punkt końcowy produkcyjny dla analizy badań krwi. Zużywa 1 kredyt na żądanie.

Parametry Żądania

ParametrTypWymaganyOpis
usernamestringTakTwoja nazwa użytkownika API
passwordstringTakTwoje hasło API
filefileTakObraz badania krwi (PNG, JPG, WEBP) lub PDF. Maks. 20MB.
languagestringNieKod języka odpowiedzi (domyślnie: en). Obsługuje ponad 100 języków.

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze" \
  -F "username=TWOJA_NAZWA_UZYTKOWNIKA" \
  -F "password=TWOJE_HASLO" \
  -F "language=pl" \
  -F "file=@badanie_krwi.pdf"

Przykład Python

import requests

def analizuj_badanie_krwi(sciezka_pliku: str, nazwa_uzytkownika: str, haslo: str, jezyk: str = "pl"):
    """
    Analizuje plik badania krwi za pomocą API Kantesti.
    """
    url = "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze"

    with open(sciezka_pliku, "rb") as f:
        pliki = {"file": (sciezka_pliku, f, "application/pdf")}
        dane = {
            "username": nazwa_uzytkownika,
            "password": haslo,
            "language": jezyk
        }

        odpowiedz = requests.post(url, files=pliki, data=dane, timeout=120)
        odpowiedz.raise_for_status()
        return odpowiedz.json()

# Przykład użycia
if __name__ == "__main__":
    wynik = analizuj_badanie_krwi(
        sciezka_pliku="badanie_krwi.pdf",
        nazwa_uzytkownika="twoja_nazwa_uzytkownika",
        haslo="twoje_haslo",
        jezyk="pl"
    )
    print(f"Status: {wynik['status']}")
    print(f"Znalezione parametry: {len(wynik['data']['parameters'])}")

Referencja pól odpowiedzi

Poziom główny
PoleTypOpis
statusstring"success" lub "error"
dataobjectZawiera wszystkie wyniki analizy
timestampstringZnacznik czasu ISO 8601 odpowiedzi
api_versionstringUżyta wersja API
Obiekt data.metadata
PoleTypOpis
lab_datestringData pobrania krwi (RRRR-MM-DD)
results_datestringData wydania wyników (RRRR-MM-DD)
lab_namestringNazwa laboratorium
lab_citystringMiasto laboratorium
lab_countrystringKraj laboratorium
patient_namestringPełne imię i nazwisko pacjenta (tylko metadane, nie wysyłane do interpretacji)
patient_agestringWiek pacjenta
patient_sexstring"male", "female" lub "other"
Element tablicy data.parameters
PoleTypOpis
categorystringKategoria parametru (np. "Morfologia", "Profil lipidowy")
long_namestringPełna nazwa parametru
short_namestringSkrócona nazwa parametru
resultstringZmierzona wartość
unitstringJednostka miary
range_minstringMinimalny zakres referencyjny
range_maxstringMaksymalny zakres referencyjny
evaluationstringStatus wyniku. Zobacz wartości oceny
Element tablicy data.interpretation
PoleTypOpis
titlestringTytuł sekcji (np. "Ogólna ocena zdrowia")
contentstringInterpretacja medyczna wygenerowana przez AI

Pełny przykład odpowiedzi

{
  "status": "success",
  "data": {
    "metadata": {
      "patient_name": "Anna Müller",
      "lab_name": "MedLab Diagnostics International",
      "lab_city": "Warszawa",
      "lab_country": "Polska",
      "lab_date": "2025-12-15",
      "results_date": "2025-12-16",
      "patient_age": "38",
      "patient_sex": "female"
    },
    "parameters": [
      {
        "short_name": "WBC",
        "long_name": "Liczba białych krwinek",
        "category": "Morfologia krwi",
        "result": "6.8",
        "unit": "10^9/L",
        "evaluation": "normal",
        "range_min": "4.0",
        "range_max": "11.0",
        "short_description": "Mierzy całkowitą liczbę białych krwinek.",
        "long_description": "Białe krwinki (leukocyty) są niezbędnymi składnikami układu odpornościowego..."
      },
      {
        "short_name": "RBC",
        "long_name": "Liczba czerwonych krwinek",
        "category": "Morfologia krwi",
        "result": "4.52",
        "unit": "10^12/L",
        "evaluation": "normal",
        "range_min": "3.8",
        "range_max": "5.8",
        "short_description": "Mierzy całkowitą liczbę czerwonych krwinek.",
        "long_description": "Czerwone krwinki (erytrocyty) transportują tlen z płuc do tkanek ciała..."
      },
      {
        "short_name": "HGB",
        "long_name": "Hemoglobina",
        "category": "Morfologia krwi",
        "result": "13.2",
        "unit": "g/dL",
        "evaluation": "normal",
        "range_min": "11.5",
        "range_max": "16.0",
        "short_description": "Białko w czerwonych krwinkach transportujące tlen.",
        "long_description": "Hemoglobina to białko zawierające żelazo w czerwonych krwinkach odpowiedzialne za transport tlenu..."
      },
      {
        "short_name": "GLU",
        "long_name": "Glukoza na czczo",
        "category": "Panel metaboliczny",
        "result": "102",
        "unit": "mg/dL",
        "evaluation": "borderline_high",
        "range_min": "70",
        "range_max": "140",
        "short_description": "Mierzy poziom cukru we krwi na czczo.",
        "long_description": "Glukoza na czczo jest kluczowym wskaźnikiem tego, jak organizm metabolizuje cukier..."
      },
      {
        "short_name": "TC",
        "long_name": "Cholesterol całkowity",
        "category": "Profil lipidowy",
        "result": "218",
        "unit": "mg/dL",
        "evaluation": "borderline_high",
        "range_min": "0",
        "range_max": "300",
        "short_description": "Mierzy całkowity cholesterol we krwi.",
        "long_description": "Cholesterol całkowity to suma cholesterolu HDL, LDL i VLDL..."
      },
      {
        "short_name": "LDL",
        "long_name": "Cholesterol LDL",
        "category": "Profil lipidowy",
        "result": "142",
        "unit": "mg/dL",
        "evaluation": "high",
        "range_min": "0",
        "range_max": "200",
        "short_description": "Mierzy poziom 'złego' cholesterolu.",
        "long_description": "Cholesterol LDL może gromadzić się w ścianach tętnic..."
      }
    ],
    "interpretation": [
      {
        "title": "Ogólna ocena zdrowia",
        "shortcode": "overall_health_assessment",
        "subsections": [
          {
            "subtitle": "Kompleksowy przegląd",
            "items": [
              {"item": "Pacjentka wykazuje ogólnie zdrowe parametry hematologiczne ze wszystkimi wartościami morfologii w normie."},
              {"item": "Profil lipidowy pokazuje obszary wymagające uwagi, szczególnie poziomy cholesterolu LDL."}
            ]
          }
        ]
      },
      {
        "title": "Zalecenia",
        "shortcode": "recommendations",
        "subsections": [
          {
            "subtitle": "Modyfikacje stylu życia",
            "items": [
              {"item": "Zwiększ aktywność fizyczną aerobową do co najmniej 150 minut tygodniowo."},
              {"item": "Przyjmij dietę typu śródziemnomorskiego bogatą w warzywa, owoce i zdrowe tłuszcze."}
            ]
          }
        ]
      }
    ]
  },
  "api_version": "v11",
  "timestamp": "2025-12-16T14:32:18Z"
}
Słowa kluczowe odpowiedzi

Pole evaluation używa standardowych wartości. Zobacz wartości oceny.

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

Punkt końcowy produkcyjny z kompleksowym obliczaniem wyniku zdrowia i analizą ryzyka chorób. Przyjmuje takie samo żądanie jak /api/v12/18-09-2026/analyze i dodaje do odpowiedzi poniższe pola. Zużywa 1 kredyt na żądanie.

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v12/health-score/analyze" \
  -F "username=TWOJA_NAZWA" \
  -F "password=TWOJE_HASLO" \
  -F "language=pl" \
  -F "file=@badanie_krwi.pdf"

Dodatkowe pola odpowiedzi

{
  "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"}
  ]
}
Słowa kluczowe odpowiedzi

Pole score_interpretation używa standardowych wartości. Zobacz wartości wyniku zdrowia.

AI Żywienie z Suplementami

Generuj spersonalizowane plany żywieniowe, rekomendacje dietetyczne i sugestie suplementów na podstawie analizy badań krwi.

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

Generuje kompleksowe rekomendacje żywieniowe i suplementacyjne na podstawie parametrów badań krwi i profilu pacjenta.

Schemat obiektu pacjenta

Szczegółowy opis wszystkich dostępnych pól dla obiektu pacjenta:

Pole Typ Wymagane Domyślne Opis
age integer Tak - Wiek pacjenta w latach (18-120)
gender string Tak - Płeć pacjenta. Zobacz wartości
weight number Nie null Waga w kg (dla obliczeń kalorycznych)
height number Nie null Wzrost w cm (dla obliczeń BMI)
conditions array Nie [] Schorzenia. Zobacz wartości
allergies array Nie [] Alergie pokarmowe. Zobacz wartości
dietary_preferences array Nie [] Preferencje żywieniowe. Zobacz wartości
activity_level string Nie "moderate" Poziom aktywności fizycznej. Zobacz wartości
dietary_restrictions array Nie [] Ograniczenia dietetyczne (np: bez glutenu, bez laktozy)
liked_foods array Nie [] Ulubione produkty do personalizacji planu
disliked_foods array Nie [] Produkty do pominięcia w rekomendacjach
meal_frequency integer Nie 3 Liczba posiłków dziennie (1-6)
budget string Nie "moderate" Poziom budżetu: "low", "moderate", "high"
medications array Nie [] Aktualne leki (dla interakcji)

Referencja pól odpowiedzi

Obiekt nutrition_plan.educational_insights
Pole Typ Opis
blood_marker_education array Treści edukacyjne o analizowanych markerach krwi
nutrition_principles array Ogólne zasady żywieniowe dla pacjenta
Element tablicy blood_marker_education
Pole Typ Opis
marker string Nazwa markera krwi (np: "Witamina D", "Cholesterol")
explanation string Wyjaśnienie edukacyjne znaczenia markera
normal_range string Zakres wartości prawidłowych dla markera
Element tablicy food_recommendations.power_foods
Pole Typ Opis
food string Nazwa rekomendowanego produktu
nutrients array Lista kluczowych składników odżywczych
serving string Zalecana wielkość porcji
why string Wyjaśnienie korzyści zdrowotnych
Element tablicy supplement_recommendations
Pole Typ Opis
supplement string Nazwa suplementu
dosage string Zalecana dawka dzienna
timing string Najlepsza pora przyjmowania (np: "Ze śniadaniem")
duration string Zalecany czas suplementacji
reason string Uzasadnienie na podstawie wyników badań

Kompletny przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v1/nutrition/diet-plan/analyze" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "twoja_nazwa_uzytkownika",
    "password": "twoje_haslo",
    "language": "pl",
    "patient": {
      "age": 45,
      "gender": "male",
      "weight": 82,
      "height": 178,
      "conditions": ["hypertension"],
      "allergies": ["shellfish"],
      "dietary_preferences": ["mediterranean"],
      "activity_level": "moderate",
      "liked_foods": ["fish", "vegetables", "olive oil"],
      "disliked_foods": ["liver"],
      "meal_frequency": 3,
      "budget": "moderate"
    },
    "blood_test": {
      "lab_date": "2025-12-01",
      "parameters": [
        {"short_name": "VITD", "result": 18, "unit": "ng/mL"},
        {"short_name": "CHOL", "result": 210, "unit": "mg/dL"},
        {"short_name": "LDL", "result": 140, "unit": "mg/dL"},
        {"short_name": "HDL", "result": 45, "unit": "mg/dL"},
        {"short_name": "FE", "result": 65, "unit": "µg/dL"}
      ]
    },
    "health_goals": ["lower_cholesterol", "increase_energy", "heart_health"]
  }'

Pełna odpowiedź

{
  "status": "success",
  "data": {
    "nutrition_plan": {
      "daily_calories": 2100,
      "macros": {
        "protein": {"grams": 105, "percentage": 20},
        "carbohydrates": {"grams": 236, "percentage": 45},
        "fats": {"grams": 82, "percentage": 35}
      },
      "educational_insights": {
        "blood_marker_education": [
          {
            "marker": "Witamina D",
            "explanation": "Witamina D jest niezbędna dla zdrowia kości, funkcji odpornościowej i regulacji nastroju. Twój poziom 18 ng/mL wskazuje na niedobór, który może wpływać na wchłanianie wapnia i ogólny stan zdrowia.",
            "normal_range": "30-50 ng/mL"
          },
          {
            "marker": "Cholesterol LDL",
            "explanation": "Cholesterol LDL, często nazywany 'złym cholesterolem', może gromadzić się w ścianach tętnic. Twój poziom 140 mg/dL jest podwyższony i może zwiększać ryzyko sercowo-naczyniowe.",
            "normal_range": "< 100 mg/dL"
          }
        ],
        "nutrition_principles": [
          "Priorytet dla kwasów tłuszczowych omega-3 dla zdrowia serca",
          "Zwiększ błonnik rozpuszczalny aby obniżyć cholesterol LDL",
          "Uwzględnij produkty bogate w witaminę D i ekspozycję na słońce"
        ]
      }
    },
    "food_recommendations": {
      "power_foods": [
        {
          "food": "Łosoś dziki",
          "nutrients": ["Omega-3", "Witamina D", "Białko"],
          "serving": "150g, 3 razy w tygodniu",
          "why": "Doskonałe źródło omega-3 i naturalnej witaminy D dla zdrowia serca i kości"
        },
        {
          "food": "Płatki owsiane",
          "nutrients": ["Beta-glukan", "Błonnik", "Magnez"],
          "serving": "50g dziennie na śniadanie",
          "why": "Błonnik rozpuszczalny w owsiance pomaga zmniejszyć wchłanianie cholesterolu LDL"
        },
        {
          "food": "Oliwa z oliwek extra virgin",
          "nutrients": ["Tłuszcze jednonienasycone", "Polifenole", "Witamina E"],
          "serving": "2-3 łyżki stołowe dziennie",
          "why": "Zdrowe tłuszcze śródziemnomorskie poprawiają profil lipidowy i chronią serce"
        },
        {
          "food": "Szpinak",
          "nutrients": ["Żelazo", "Kwas foliowy", "Witamina K"],
          "serving": "100g dziennie, surowy lub gotowany",
          "why": "Bogaty w żelazo i antyoksydanty dla energii i zdrowia sercowo-naczyniowego"
        }
      ]
    },
    "supplement_recommendations": [
      {
        "supplement": "Witamina D3",
        "dosage": "2000-4000 IU dziennie",
        "timing": "Ze śniadaniem (posiłek z tłuszczami)",
        "duration": "3-6 miesięcy, potem powtórne badanie",
        "reason": "Twój poziom 18 ng/mL jest poniżej optymalnego 30-50 ng/mL"
      },
      {
        "supplement": "Omega-3 (EPA/DHA)",
        "dosage": "1000-2000mg EPA+DHA dziennie",
        "timing": "Z głównymi posiłkami",
        "duration": "Stale dla zdrowia serca",
        "reason": "Pomaga obniżyć trójglicerydy i poprawić stosunek HDL/LDL"
      },
      {
        "supplement": "Koenzym Q10",
        "dosage": "100mg dziennie",
        "timing": "Z porannym posiłkiem",
        "duration": "Minimum 3 miesiące",
        "reason": "Wspiera zdrowie serca, szczególnie ważne przy nadciśnieniu"
      }
    ]
  },
  "api_version": "v1",
  "timestamp": "2025-12-22T10:30:00Z"
}
Słowa kluczowe odpowiedzi

Pełną listę wszystkich możliwych wartości odpowiedzi znajdziesz w sekcji Słowa kluczowe wyjściowe.

Punkty Końcowe Sandbox

Punkty końcowe sandbox zwracają realistyczne dane testowe bez zużywania limitu API. Używaj ich do rozwoju i testowania integracji.

Zalety Sandbox
  • Brak zużycia limitu
  • Zwraca realistyczne dane testowe
  • Ten sam format żądania co produkcja
  • Testuj integrację przed wdrożeniem
  • Dostępne dla wszystkich wersji API
APIPunkt Końcowy Sandbox
Badanie krwi v12/api/v12/18-09-2026/sandbox
Badanie krwi v12-health/api/v12/health-score/sandbox
Mapa ciała/api/v1/body-map/sandbox
Biologiczny wiek krwi/api/v1/blood-age/sandbox
Interpretacja testu DNA/api/v1/dna-interpretation/sandbox
Raport zdrowotny DNA + krew/api/v1/dna-blood-report/sandbox
Doradca suplementacji DNA/api/v1/dna-supplements/sandbox
Badanie krwi v11/api/v11/01-06-2025/sandbox
Badanie krwi v11-health/api/v11/health-score/sandbox
AI Żywienie/api/v1/nutrition/diet-plan/sandbox
Porównanie badań/api/v1/bloodtest/comparison/sandbox
Analiza trendów/api/v1/analytics/trends/sandbox
ICR Ekstrakcja/api/icr/v1/sandbox
ICR Kan Badania Krwi/api/icr/v1/kan/sandbox
API Porównania vs API Analizy Trendów

Wybierz odpowiednie API dla swojego przypadku użycia:

FunkcjaPorównanie AI Badań KrwiAnaliza Trendów
Główny FokusPorównanie narracyjne AIStatystyczna analiza trendów
Przetwarzanie AIPełna narracja AIAI wzbogacone + statystyki
Typ WyjściaPodsumowania narracyjneWykresy, statystyki, wzorce
Idealne DoCo się zmieniło między badaniamiDługoterminowe śledzenie parametrów
Min Badań22
Max Badań2050

API Analizy Trendów

Analizuj długoterminowe trendy wielu badań krwi, aby zidentyfikować wzorce, śledzić zmiany w czasie i otrzymać statystyczne spostrzeżenia na temat zmian parametrów zdrowotnych.

API Porównania Badań Krwi

Porównaj wiele badań krwi, aby zrozumieć zmiany w parametrach zdrowotnych w czasie. Otrzymuj narracyjne porównania AI i interpretacje zmian między badaniami.

POST /api/v1/bloodtest/comparison/analyze Stabilny

Porównuje wiele badań krwi i generuje szczegółowe narracyjne spostrzeżenia AI na temat zmian parametrów, trendów i znaczenia klinicznego różnic.

Wymagania

Minimum 2 badania krwi, maksimum 20 badań dla porównania AI.

Parametry Żądania

ParametrTypWymaganyOpis
usernamestringTakTwoja nazwa użytkownika API
passwordstringTakTwoje hasło API
languagestringNieKod języka odpowiedzi (domyślnie: en)
blood_testsarrayTakTablica obiektów badań krwi (min: 2, max: 20)
patientobjectNieInformacje o pacjencie dla kontekstu

Struktura Tablicy blood_tests

Każdy obiekt w tablicy blood_tests powinien zawierać:

PoleTypWymaganeOpis
test_datestringTakData badania w formacie RRRR-MM-DD
parametersarrayTakTablica parametrów badania krwi

Referencja Pól Odpowiedzi

Poziom Główny
PoleTypOpis
statusstring"success" lub "error"
dataobjectZawiera wszystkie wyniki porównania
timestampstringZnacznik czasu ISO 8601 odpowiedzi
api_versionstringUżyta wersja API
Obiekt data.summary
PoleTypOpis
total_testsintegerLiczba porównanych badań
date_rangeobjectZakres dat porównania (earliest, latest)
overall_trendstringOgólna ocena trendu. Zobacz wartości
Element Tablicy data.comparisons
PoleTypOpis
parameter_namestringNazwa parametru badania krwi
short_namestringSkrócona nazwa parametru
changesarrayTablica zmian między testami
narrative_summarystringNarracyjne podsumowanie AI zmian
clinical_significancestringZnaczenie kliniczne obserwowanych zmian
Element Tablicy changes
PoleTypOpis
from_datestringData początkowego badania
to_datestringData końcowego badania
from_valuenumberWartość początkowa
to_valuenumberWartość końcowa
change_amountnumberBezwzględna zmiana
change_percentnumberZmiana procentowa
trend_assessmentstringOcena kierunku zmiany

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v1/bloodtest/comparison/analyze" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "twoja_nazwa_uzytkownika",
    "password": "twoje_haslo",
    "language": "pl",
    "blood_tests": [
      {
        "test_date": "2025-01-15",
        "parameters": [
          {"short_name": "HBA1C", "result": 6.8, "unit": "%"},
          {"short_name": "GLU", "result": 115, "unit": "mg/dL"},
          {"short_name": "CHOL", "result": 220, "unit": "mg/dL"}
        ]
      },
      {
        "test_date": "2025-07-15",
        "parameters": [
          {"short_name": "HBA1C", "result": 6.2, "unit": "%"},
          {"short_name": "GLU", "result": 98, "unit": "mg/dL"},
          {"short_name": "CHOL", "result": 195, "unit": "mg/dL"}
        ]
      }
    ],
    "patient": {
      "age": 52,
      "gender": "female"
    }
  }'

Przykładowa Odpowiedź

{
  "status": "success",
  "data": {
    "summary": {
      "total_tests": 2,
      "date_range": {
        "earliest": "2025-01-15",
        "latest": "2025-07-15"
      },
      "overall_trend": "improving",
      "time_span_days": 181
    },
    "comparisons": [
      {
        "parameter_name": "Hemoglobina glikowana (HbA1c)",
        "short_name": "HBA1C",
        "changes": [
          {
            "from_date": "2025-01-15",
            "to_date": "2025-07-15",
            "from_value": 6.8,
            "to_value": 6.2,
            "change_amount": -0.6,
            "change_percent": -8.8,
            "trend_assessment": "positive"
          }
        ],
        "narrative_summary": "Twój poziom HbA1c uległ znacznej poprawie, spadając z 6.8% do 6.2% w ciągu 6 miesięcy - spadek o 8.8%. To reprezentuje zmniejszenie średniego poziomu glukozy we krwi.",
        "clinical_significance": "Ta poprawa jest klinicznie istotna i pokazuje lepszą kontrolę glukozy. Utrzymanie tych poziomów znacząco zmniejsza ryzyko komplikacji związanych z cukrzycą."
      },
      {
        "parameter_name": "Glukoza",
        "short_name": "GLU",
        "changes": [
          {
            "from_date": "2025-01-15",
            "to_date": "2025-07-15",
            "from_value": 115,
            "to_value": 98,
            "change_amount": -17,
            "change_percent": -14.8,
            "trend_assessment": "positive"
          }
        ],
        "narrative_summary": "Glukoza na czczo spadła z 115 mg/dL (przedcukrzyca) do 98 mg/dL (normalny zakres), odzwierciedlając poprawę o 14.8% w kontroli glukozy.",
        "clinical_significance": "Ten spadek przenosi Cię z zakresu przedcukrzycy do normalnych poziomów glukozy, znacząco zmniejszając ryzyko rozwoju cukrzycy typu 2."
      }
    ],
    "overall_interpretation": {
      "title": "Ogólna Ocena Porównania",
      "content": "Twoje wyniki badań pokazują doskonałą poprawę w kontroli glukozy i zarządzaniu ryzykiem metabolicznym. Wszystkie kluczowe parametry związane z metabolizmem glukozy wykazują pozytywne trendy. Twoje zmiany w stylu życia przynoszą wyraźne korzyści."
    },
    "recommendations": {
      "title": "Zalecenia do Kontynuacji",
      "items": [
        "Kontynuuj obecny plan żywieniowy i aktywność fizyczną",
        "Rozważ monitorowanie HbA1c co 3 miesiące",
        "Utrzymuj dziennik poziomów glukozy we krwi"
      ]
    }
  },
  "api_version": "v1",
  "timestamp": "2025-12-22T10:30:00Z"
}

Referencja Słów Kluczowych

Kompletna referencja wszystkich wartości słów kluczowych wejściowych używanych w punktach końcowych API Kantesti. Używaj tych dokładnych wartości w żądaniach API.

analysis_type API Analizy Trendów

Określa typ analizy trendów do wykonania.

WartośćDomyślnaOpis
comprehensive✓Pełna analiza ze statystykami, wykresami i interpretacją AI
statisticalTylko analiza statystyczna
summaryTylko podsumowanie wysokiego poziomu

health_goals API Żywienia

Cele zdrowotne dla spersonalizowanych rekomendacji żywieniowych. Można podać wiele wartości jako tablicę.

WartośćOpis
maintainUtrzymanie obecnego zdrowia (domyślne)
improve_energySkupienie na poziomie energii
weight_managementZdrowe zarządzanie wagą
heart_healthZdrowie sercowo-naczyniowe
immune_supportWsparcie układu odpornościowego
digestive_healthZdrowie trawienne
bone_healthZdrowie kości
mental_clarityFunkcja poznawcza

dietary_restrictions API Żywienia

Ograniczenia dietetyczne i alergie. Można podać wiele wartości jako tablicę. Akceptowany jest również dowolny tekst dla niestandardowych ograniczeń.

WartośćOpis
low_sodiumZmniejszone spożycie sodu
low_sugarZmniejszone spożycie cukru
low_fatZmniejszone spożycie tłuszczu
gluten_freeBez glutenu
dairy_freeBez nabiału
nut_freeBez orzechów
soy_freeBez soi
egg_freeBez jaj
halalZgodne z halal
kosherZgodne z koszerne
Uwaga

Akceptowany jest również dowolny tekst dla niestandardowych ograniczeń dietetycznych niewymienionych powyżej.

dietary_preferences API Żywienia

Preferencje stylu życia żywieniowego do planowania posiłków.

WartośćOpis
omnivoreBrak ograniczeń (domyślne)
vegetarianBez mięsa
veganBez produktów odzwierzęcych
pescatarianWegetarianin + ryby
ketoDieta ketogeniczna
paleoDieta paleolityczna
mediterraneanDieta śródziemnomorska

activity_level API Żywienia

Poziom aktywności fizycznej dla obliczeń kalorycznych i żywieniowych.

WartośćOpis
sedentaryMało lub brak ćwiczeń
lightLekkie ćwiczenia 1-3 dni/tydzień
moderateUmiarkowane ćwiczenia 3-5 dni/tydzień (domyślne)
activeIntensywne ćwiczenia 6-7 dni/tydzień
very_activeBardzo intensywne ćwiczenia lub praca fizyczna

budget API Żywienia

Poziom budżetu dla rekomendacji żywnościowych i suplementowych.

WartośćOpis
lowOpcje ekonomiczne
moderateOpcje zrównoważone (domyślne)
highOpcje premium

gender Wszystkie API

Płeć pacjenta dla spersonalizowanych zakresów referencyjnych i rekomendacji.

WartośćOpis
malePacjent płci męskiej
femalePacjent płci żeńskiej
otherInne lub nieokreślone

Słowa kluczowe wyjściowe

Następujące słowa kluczowe pojawiają się w odpowiedziach API. Zrozumienie tych wartości pomaga poprawnie interpretować i wyświetlać wyniki.

evaluation API Badania krwi & Porównanie

Status oceny parametru wskazujący, jak wynik porównuje się z zakresami referencyjnymi.

WartośćOpis
normalW normalnym zakresie referencyjnym
lowPoniżej normalnego zakresu
highPowyżej normalnego zakresu
critical_lowKrytycznie niski (wymagana natychmiastowa uwaga)
critical_highKrytycznie wysoki (wymagana natychmiastowa uwaga)
borderline_lowNieznacznie poniżej normalnego zakresu
borderline_highNieznacznie powyżej normalnego zakresu

trend_assessment API Porównanie & Trendy

Ogólna ocena trendów parametrów między testami.

WartośćOpis
positivePoprawa (w kierunku normalnego zakresu)
negativePogorszenie (oddalanie się od normalnego zakresu)
stableWzględnie bez zmian między testami
improvingOgólny trend poprawy
worseningOgólny trend pogorszenia

trend_direction API Analiza trendów

Kierunek zmian wartości parametrów w czasie.

WartośćOpis
upwardWartości rosnące w czasie
downwardWartości malejące w czasie
stableMinimalna zmiana w czasie

trend_strength API Analiza trendów

Siła obserwowanego trendu.

WartośćOpis
strong>15% zmiany między okresami
moderate5-15% zmiany między okresami
mild<5% zmiany między okresami

health_score / score_interpretation API Wynik zdrowia

Ogólna interpretacja wyniku zdrowia na podstawie analizowanych parametrów.

WartośćOpis
excellentWszystkie markery w optymalnym zakresie
goodWiększość markerów w normalnym zakresie
fairNiektóre markery wymagają uwagi
poorWiele markerów wymaga uwagi

Punkty Końcowe Użytkowe

POST /api/quota/check

Sprawdź pozostały limit API. Wymagane uwierzytelnianie.

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/quota/check" \
  -H "Content-Type: application/json" \
  -d '{"username": "TWOJA_NAZWA_UZYTKOWNIKA", "password": "TWOJE_HASLO"}'

Przykładowa Odpowiedź

{
  "status": "success",
  "quota": {
    "remaining": 847,
    "total": 1000,
    "reset_date": "2026-01-01",
    "plan": "professional"
  }
}

API Oceny Ryzyka Zdrowia Rodzinnego

Wydano: 23 marca 2026

API Kantesti Oceny Ryzyka Zdrowia Rodzinnego to platforma analizy dziedzicznych zagrożeń zdrowotnych napędzana sztuczną inteligencją. Generuje kompleksowe raporty zdrowia rodzinnego, analizując historię medyczną rodziny, profile zdrowotne pacjentów i dane z badań krwi w celu identyfikacji dziedzicznych czynników ryzyka i dostarczenia spersonalizowanych zaleceń opieki profilaktycznej.

100+
Języków
9
Kategorii chorób
14
Relacji rodzinnych

Analiza ryzyka dziedzicznego z AI

API Family Health wykorzystuje zaawansowane modele AI do porównywania historii medycznej rodziny z danymi z badań krwi pacjenta, identyfikując wzorce ryzyka dziedzicznego w kategoriach: sercowo-naczyniowa, metaboliczna, nowotwory, neurologiczna, oddechowa, autoimmunologiczna, genetyczna, zdrowie psychiczne oraz nerki/wątroba. Raporty zawierają ocenę ryzyka, harmonogramy opieki profilaktycznej, zalecenia badań genetycznych i porady dotyczące stylu życia — wszystko zlokalizowane w ponad 100 językach.

Kluczowe funkcje
  • Analiza ryzyka dziedzicznego — Klasyfikacja na ryzyko wysokie, umiarkowane i niskie ze szczegółową oceną
  • Analiza drzewa genealogicznego — Mapowanie ryzyka linii ojcowskiej i matczynej
  • Korelacja badań krwi — Porównanie historii rodzinnej z parametrami krwi
  • Zalecenia badań genetycznych — Spersonalizowane sugestie testów genetycznych
  • Harmonogram opieki profilaktycznej — Programy badań dostosowane do wieku
  • Analiza leków — Ocena interakcji i wrażliwości dziedzicznych
  • 100+ języków — Pełna lokalizacja raportów w ponad 100 językach
  • Tryb Sandbox — Testuj integrację bez zużywania kredytów

Podsumowanie endpointów

EndpointMetodaOpisAuth
/api/v1/family-health/analyzePOSTGeneruj kompleksowy raport oceny ryzykaWymagane (1 kredyt)
/api/v1/family-health/validatePOSTWalidacja danych żądania (bez zużycia limitu)Wymagane (Bezpłatne)
/api/v1/family-health/supported-languagesGETLista 100+ obsługiwanych językówNiewymagane
/api/v1/family-health/condition-categoriesGETLista kategorii choróbNiewymagane
/api/v1/family-health/family-relationsGETLista typów relacji rodzinnychNiewymagane
/api/v1/family-health/sandbox/analyzePOSTTest sandbox z przykładowymi danymiWymagane (Bezpłatne)
POST /api/v1/family-health/analyze Wydano 23.03.2026

Generuj kompleksowy raport oceny ryzyka zdrowia rodzinnego napędzany AI.

Parametry żądania (JSON Body)

ParametrTypWymaganeOpis
usernamestringTakNazwa użytkownika API
passwordstringTakHasło API
patient_dataobjectTakDane pacjenta
family_membersarrayTak*Członkowie rodziny (maks. 100)
health_profileobjectTak*Profil zdrowotny
blood_test_dataarrayNieDane badań krwi
languagestringNieKod języka (domyślnie: en)

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze" \
  -H "Content-Type: application/json" \
  -d '{"username":"UŻYTKOWNIK","password":"HASŁO","patient_data":{"name":"Anna Kowalska","age":42,"gender":"female"},"family_members":[{"relation":"father","age":70,"conditions":["hypertension"]}],"language":"pl"}'

Przykład Python

import requests
url = "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze"
payload = {"username":"UŻYTKOWNIK","password":"HASŁO","patient_data":{"name":"Anna Kowalska","age":42,"gender":"female"},"family_members":[{"relation":"father","age":70,"conditions":["hypertension"]}],"language":"pl"}
response = requests.post(url, json=payload, timeout=120)
print(response.json())

Przykładowa odpowiedź

{"status":"success","data":{"report_data":{"report_title":"Raport Oceny Ryzyka Zdrowia Rodzinnego","hereditary_risk_analysis":{"high_risk":[{"condition":"Choroba sercowo-naczyniowa","risk_score":75}]},"genetic_screening_recommendations":["Test genetyczny BRCA1/BRCA2"]}},"timestamp":"2026-03-23T10:30:00Z","api_version":"1.0.0"}

Kody błędów Family Health API

KodHTTPOpis
AUTH_1001401Brak danych uwierzytelniających
AUTH_1002401Nieprawidłowa nazwa użytkownika lub hasło
QUOTA_1101403Niewystarczający limit API
VAL_2001400Brak wymaganego pola
VAL_2003400Nieobsługiwany kod języka
PROC_3001500Generowanie raportu nie powiodło się
SRV_5001500Wewnętrzny błąd serwera

Endpoint Sandbox Family Health

Testuj integrację bez zużywania kredytów.

APISandboxOpis
Family Health/api/v1/family-health/sandbox/analyzePrzykładowe dane raportu

Endpointy referencyjne (Bez auth)

EndpointMetodaOpis
/api/v1/family-health/supported-languagesGET100+ obsługiwanych języków
/api/v1/family-health/condition-categoriesGET9 kategorii chorób
/api/v1/family-health/family-relationsGET14 relacji rodzinnych

API Mapy Ciała

Wydano: 18 września 2026

API Kantesti Mapy Ciała zamienia panel laboratoryjny w anatomię. Każdy wynik poza zakresem i każdy wynik graniczny zostaje umieszczony w jednym z 13 obszarów ciała, a API zwraca zarówno legendę — który obszar, jak poważne odchylenie, które markery go tam umieściły — jak i adres URL pasującej ilustracji ciała.

13
Obszarów ciała
39
Języków wejściowych
0
Wywołań modelu domyślnie

Domyślnie deterministyczne

Nazwy markerów są dopasowywane do wielojęzycznych tabel aliasów obejmujących 39 języków raportów, w tym pisma niełacińskie — wysyłasz nazwy analitów dokładnie tak, jak wydrukowało je Twoje laboratorium, w dowolnym języku. Żaden model nie jest wywoływany i żadna ilustracja nie jest generowana, dopóki o to nie poprosisz, więc domyślne żądanie nie generuje kosztów AI i zawsze zwraca tę samą odpowiedź dla tego samego panelu.

Kluczowe funkcje
  • 13 obszarów anatomicznych — Mózg i nerwy, tarczyca, serce i naczynia, wątroba, trzustka, nadnercza, nerki, jelita, układ rozrodczy, krew, układ odpornościowy, kości, mięśnie
  • Poziomy nasilenia — Poziom 2 dla wyników poza zakresem, poziom 1 dla wyników granicznych, dzięki czemu legendę można pokolorować bez dodatkowej logiki
  • Przypisanie markerów — Każdy obszar wymienia markery, które go tam umieściły, zaczynając od najgorszego
  • Wynik niezależny od języka — Klucze obszarów i Twoje własne nazwy markerów; ilustracja nie zawiera tekstu, więc jeden obraz służy każdemu językowi
  • Podpisane adresy URL ilustracji — Każdy adres URL ilustracji zawiera podpis HMAC, więc nikt nie może ich wyliczyć ani podrobić
  • Uczciwe stany puste — Czysty panel zwraca wspólną sylwetkę "bez odchyleń"; panel, którego oznaczonych markerów nie da się umiejscowić, zwraca błąd zamiast mylącej zielonej sylwetki
  • Tryb deterministyczny — Domyślny. Bez wywołania modelu, bez kredytu na obraz, powtarzalny wynik
  • Tryb Sandbox — Testuj integrację bez zużywania kredytów

Podsumowanie endpointów

EndpointMetodaOpisAuth
/api/v1/body-map/analyze POST Zbuduj mapę ciała na podstawie panelu laboratoryjnego Wymagane (1 kredyt)
/api/v1/body-map/validate POST Sprawdź dane żądania i zobacz, które markery są rozpoznawane (bez zużycia limitu) Wymagane (Bezpłatne)
/api/v1/body-map/sandbox POST Test sandbox z przykładowymi danymi (bez zużycia limitu) Wymagane (Bezpłatne)
/api/v1/body-map/regions GET Lista wszystkich 13 obszarów ciała i poziomów nasilenia Niewymagane
/api/v1/body-map/info GET Metadane możliwości, limity i szczegóły uwierzytelniania Niewymagane
POST /api/v1/body-map/analyze Wydano 18.09.2026

Umieszcza każdy oznaczony wynik z panelu laboratoryjnego na ciele. Zużywa 1 kredyt na każde udane żądanie. Żądanie, które nie przejdzie walidacji lub którego oznaczonych markerów nie da się umiejscowić, nie jest rozliczane.

Parametry żądania

ParametrTypWymaganyOpis
usernamestringTakTwoja nazwa użytkownika API
passwordstringTakTwoje hasło API
parametersarrayTakObiekty wyników laboratoryjnych. Maks. 500. Każdy wymaga nazwy analitu i pola evaluation.
interpretationarrayNieInterpretacja kliniczna, używana jako kontekst tylko przy włączonym ai_assist
ai_assistbooleanNiePozwól modelowi umiejscowić markery nierozpoznane przez tabele aliasów (domyślnie: false)
include_imagebooleanNieZażądaj wygenerowanej ilustracji (domyślnie: false)
image_waitintegerNieLiczba sekund oczekiwania na świeżo wygenerowaną ilustrację, 0-30 (domyślnie: 0)

Pola obiektu parametru

PoleTypWymaganeOpis
short_namestringTak*Nazwa analitu wydrukowana przez laboratorium. *Wymagane jest co najmniej jedno z pól short_name, long_name, name, parameter_name lub parameter.
long_namestringNiePełna nazwa analitu; poprawia dopasowanie skrótów
evaluationstringNieJedna z wartości high, low, bad, slightly_high, slightly_low, normal. Na mapie pojawiają się tylko wartości oznaczone.
resultstring|numberNieZmierzona wartość; używana do uszeregowania rysowanych obszarów
unitstringNieJednostka wyniku, w dowolnym zapisie
range_normal_minnumberNieDolna granica zakresu referencyjnego
range_normal_maxnumberNieGórna granica zakresu referencyjnego
categorystringNieKategoria laboratoryjna; używana zapasowo, gdy nazwa analitu jest nieznana

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v1/body-map/analyze" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "TWOJA_NAZWA",
    "password": "TWOJE_HASLO",
    "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"}
    ]
  }'

Przykład Python

import requests

def build_body_map(parameters, username: str, password: str, include_image: bool = False):
    """
    Umieszcza wyniki badań krwi poza zakresem na mapie ciała.
    Domyślnie tryb deterministyczny — bez wywołania modelu.
    """
    url = "https://app.aibloodtestinterpret.com/api/v1/body-map/analyze"

    response = requests.post(url, json={
        "username": username,
        "password": password,
        "parameters": parameters,
        "include_image": include_image,
    }, timeout=60)
    response.raise_for_status()
    return response.json()

result = build_body_map(
    parameters=[
        {"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"},
    ],
    username="uzytkownik",
    password="haslo",
)

body_map = result["data"]["body_map"]
if result["data"]["all_clear"]:
    print("Bez odchyleń — nic nie zostało oznaczone.")
for region in body_map["regions"]:
    nasilenie = "poza zakresem" if region["level"] == 2 else "graniczny"
    print(f"  {region['key']}: {nasilenie} ({', '.join(region['markers'])})")
print(f"Ilustracja: {body_map['image_url'] or body_map['fallback_url']}")

Przykładowa odpowiedź

{
  "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"
}

Referencja pól odpowiedzi

PoleTypOpis
body_map.specstringKanoniczny identyfikator tej kombinacji obszarów i poziomów nasilenia. Identyczne panele mają tę samą wartość spec, a więc współdzielą ilustrację z pamięci podręcznej.
body_map.regions[].keystringJeden z 13 kluczy obszarów
body_map.regions[].levelinteger2 = poza zakresem, 1 = graniczny
body_map.regions[].drawnbooleanCzy ten obszar jest zaznaczony na ilustracji. Legenda zawsze wymienia każdy obszar; rysowanych jest najwyżej sześć.
body_map.regions[].markersarrayNazwy markerów, które umieściły ten obszar na mapie, zaczynając od najgorszego
body_map.unmappedintegerOznaczone markery, których nie udało się przypisać do żadnego obszaru
body_map.image_urlstring|nullIlustracja z pamięci podręcznej. null, dopóki plik nie istnieje — użyj wtedy fallback_url.
body_map.fallback_urlstringPodpisany adres URL generujący obraz. Zawsze obecny. Zwraca 503 z nagłówkiem Retry-After, dopóki ilustracja jest jeszcze tworzona.
all_clearbooleantrue, gdy nic nie zostało oznaczone; obowiązuje wspólna sylwetka "bez odchyleń"
modestringdeterministic lub ai_assisted
Renderowanie legendy

Odpowiedź jest z założenia niezależna od języka: zawiera klucze obszarów i nazwy markerów Twojego laboratorium. Przetłumacz 13 kluczy obszarów we własnym kliencie i traktuj legendę jako nadrzędną wobec ilustracji — jeśli model obrazu kiedykolwiek pokoloruje niewłaściwy narząd, legenda obok niego nadal będzie poprawna.

POST /api/v1/body-map/validate Wydano 18.09.2026

Sprawdza dane żądania bez uruchamiania analizy i zgłasza, które z Twoich nazw analitów silnik rozpoznaje. Uwierzytelnienie jest wymagane; limit nie jest zużywany, a punkt końcowy działa również na koncie bez pozostałych kredytów.

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v1/body-map/validate" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "TWOJA_NAZWA",
    "password": "TWOJE_HASLO",
    "parameters": [
      {"short_name": "ALT", "result": "65", "evaluation": "high"},
      {"short_name": "Unobtainium", "result": "9", "evaluation": "high"}
    ]
  }'

Przykładowa odpowiedź

{
  "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"
}

Endpointy referencyjne

Oba endpointy referencyjne są bezpłatne i nie wymagają uwierzytelnienia.

GET /api/v1/body-map/regions

Wymienia 13 obszarów ciała w kanonicznej kolejności wraz z poziomami nasilenia. Użyj go, aby zbudować własne tłumaczenia legendy.

Przykład cURL

curl "https://app.aibloodtestinterpret.com/api/v1/body-map/regions"

Przykładowa odpowiedź

{
  "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

Metadane możliwości: czy silnik jest włączony w tym wdrożeniu, limity żądań, schemat uwierzytelniania i pełna lista endpointów.

Przykład cURL

curl "https://app.aibloodtestinterpret.com/api/v1/body-map/info"

Sandbox

POST /api/v1/body-map/sandbox zwraca przykładową odpowiedź dokładnie w takiej postaci, jaką generuje /analyze, więc klient napisany pod sandbox działa bez zmian na produkcji. Uwierzytelnienie jest wymagane, aby wywołanie potwierdzało również Twoje dane logowania, ale limit nie jest zużywany i żadna analiza nie jest wykonywana.

Kod błęduHTTPZnaczenie
AUTH_1001401Brak danych uwierzytelniających
AUTH_1002401Nieprawidłowa nazwa użytkownika lub hasło
AUTH_1004400Zniekształcone dane uwierzytelniające (zły typ lub nadmierny rozmiar)
QUOTA_1101403Niewystarczający limit API
VAL_2001400Brak pola parameters
VAL_2002400Nieprawidłowy format danych
VAL_2005400Pole parameters jest puste
VAL_2006400Więcej niż 500 parametrów
VAL_2008400Wiersz parametru jest zniekształcony lub bez nazwy
RES_4004422Istnieją oznaczone wyniki, ale żaden nie odwzorowuje się na obszar ciała
RES_4005503Silnik mapy ciała jest wyłączony w tym wdrożeniu

API Biologicznego Wieku Krwi

Wydano: 18 września 2026

API Kantesti Biologicznego Wieku Krwi odpowiada na pytanie, na które zakres referencyjny odpowiedzieć nie potrafi: na ile lat wygląda ta krew? Oblicza wiek biologiczny ze zwykłego panelu, korzystając z opublikowanego modelu Levine PhenoAge, a obok niego wyprowadza do 18 wskaźników klinicznych — FIB-4, HOMA-IR, TyG, eGFR, AIP, NLR, lukę anionową i inne — których wynik laboratoryjny rzadko podaje.

9
Markerów PhenoAge
18
Wskaźników pochodnych
39
Języków wejściowych

Wynik nawet z niepełnego panelu

PhenoAge wymaga dziewięciu markerów, a większość paneli zawiera ich mniej. Gdy obecnych jest wszystkie dziewięć, API zwraca opublikowany wzór bez zmian. Gdy ich nie ma, brakujące dane są uzupełniane medianami populacyjnymi, a odpowiedź jest zwracana jako source: "partial", więc zawsze wiesz, którą wersję otrzymałeś. Obie ścieżki są deterministyczne: bez wywołania modelu, bez dodatkowych kosztów, zawsze ta sama odpowiedź dla tego samego panelu.

Kluczowe funkcje
  • Levine PhenoAge — Opublikowany model, obliczany bez zmian, gdy obecnych jest wszystkie dziewięć markerów
  • Łagodna degradacja — Niepełny panel nadal daje wynik, wyraźnie oznaczony jako taki, wraz z listą brakujących markerów
  • 18 wskaźników klinicznych — FIB-4, De Ritis, stosunek A/G, HOMA-IR, TyG, eAG, eGFR, luka anionowa, BUN/kreatynina, non-HDL, TG/HDL, AIP, TC/HDL, cholesterol resztkowy, NLR, Mentzer, wysycenie transferyny, skorygowany wapń
  • Automatyczna konwersja jednostek — Jednostki SI i konwencjonalne, w dowolnym zapisie, z kontrolą wiarygodności fizjologicznej odrzucającą niemożliwe wartości
  • Wielojęzyczne dopasowanie markerów — Nazwy analitów w 39 językach raportów, w tym w pismach niełacińskich; nigdy nie wysyłasz kluczy wewnętrznych
  • Tryb deterministyczny — Domyślny. Bez wywołania sieciowego, bez kosztów AI, powtarzalny wynik
  • Opcjonalne warstwy modelu — Rozpoznawanie wierszy, ulepszone oszacowanie i notatka osobista, każde za własną flagą. Pełny dziewięciomarkerowy PhenoAge nigdy nie jest nadpisywany przez model.
  • 100 języków — Dla opcjonalnej notatki osobistej
  • Tryb Sandbox — Testuj integrację bez zużywania kredytów

Podsumowanie endpointów

EndpointMetodaOpisAuth
/api/v1/blood-age/analyze POST Oblicz biologiczny wiek krwi i pochodne wskaźniki kliniczne Wymagane (1 kredyt)
/api/v1/blood-age/validate POST Sprawdź dane żądania i zobacz, które markery zawiera panel (bez zużycia limitu) Wymagane (Bezpłatne)
/api/v1/blood-age/sandbox POST Test sandbox z przykładowymi danymi (bez zużycia limitu) Wymagane (Bezpłatne)
/api/v1/blood-age/biomarkers GET Lista markerów odczytywanych przez silnik i ich jednostek docelowych Niewymagane
/api/v1/blood-age/info GET Metadane możliwości, limity i szczegóły uwierzytelniania Niewymagane
POST /api/v1/blood-age/analyze Wydano 18.09.2026

Oblicza biologiczny wiek krwi oraz wskaźniki pochodne na podstawie panelu laboratoryjnego. Zużywa 1 kredyt na każde udane żądanie. Żądanie, które nie przejdzie walidacji lub którego panel nie pozwala nic obliczyć, nie jest rozliczane.

Parametry żądania

ParametrTypWymaganyOpis
usernamestringTakTwoja nazwa użytkownika API
passwordstringTakTwoje hasło API
parametersarrayTakObiekty wyników laboratoryjnych. Maks. 500. Każdy wymaga nazwy analitu i wyniku.
metadataobjectNieNagłówek raportu. Zdecydowanie zalecany: PhenoAge zawiera człon wieku metrykalnego. Odczytuje patient_age, patient_sex, dob, lab_date.
patientobjectNie{"age": 42, "gender": "female"} — używany, gdy metadane ich nie zawierają
interpretationarrayNieInterpretacja kliniczna, używana wyłącznie jako kontekst dla modelu
languagestringNieJęzyk opcjonalnej notatki osobistej (domyślnie: en). Obsługuje ponad 100 języków.
ai_assistbooleanNiePozwól modelowi rozpoznać nietypowe nazwy analitów (domyślnie: false)
ai_estimatebooleanNiePozwól modelowi ulepszyć wiek obliczony częściowo (domyślnie: false)
ai_notebooleanNiePoproś o notatkę osobistą w języku language (domyślnie: false)

Dziewięć markerów PhenoAge

Wysyłaj je pod takimi nazwami, jakie wydrukowało Twoje laboratorium — dopasowanie odbywa się po nazwie, w dowolnym z 39 obsługiwanych języków raportów, a jednostki są przeliczane automatycznie.

MarkerTypowa nazwaJednostka docelowa
albuminAlbuminag/L
creatinineKreatyninaµmol/L
glucoseGlukoza / Cukier we krwi na czczommol/L
crpBiałko C-reaktywnemg/L
lymphLimfocyty%
mcvŚrednia objętość krwinki czerwonejfL
rdwRozkład objętości krwinek czerwonych%
alpFosfataza alkalicznaU/L
wbcLiczba białych krwinek10⁹/L

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v1/blood-age/analyze" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "TWOJA_NAZWA",
    "password": "TWOJE_HASLO",
    "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}
    ]
  }'

Przykład Python

import requests

def biological_blood_age(parameters, metadata, username: str, password: str):
    """
    Oblicza biologiczny wiek krwi na podstawie zwykłego panelu krwi.
    Nagłówek metadata powinien zawierać patient_age i patient_sex.
    """
    url = "https://app.aibloodtestinterpret.com/api/v1/blood-age/analyze"

    response = requests.post(url, json={
        "username": username,
        "password": password,
        "parameters": parameters,
        "metadata": metadata,
    }, timeout=60)
    response.raise_for_status()
    return response.json()

result = biological_blood_age(
    parameters=[
        {"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"},
    ],
    metadata={"patient_age": "40", "patient_sex": "Male"},
    username="uzytkownik",
    password="haslo",
)

summary = result["data"]["summary"]
if summary["status"] != "ok":
    print(f"Nie obliczono wieku: {summary['status']}")
else:
    print(f"Wiek metrykalny: {summary['chronological_age']}")
    print(f"Wiek biologiczny: {summary['biological_age']} ({summary['source']})")
    print(f"Różnica:          {summary['delta_years']:+} lat")

for index in result["data"]["blood_age"]["indices"]:
    print(f"  {index['key']}: {index['value']} {index['unit']} [{index['band']}]")

Przykładowa odpowiedź

{
  "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"
}

Referencja pól odpowiedzi

PoleTypOpis
summary.statusstringok, missing_age, missing_markers, needs_markers lub unavailable
summary.sourcestringformula (wszystkie dziewięć markerów), partial (uzupełnione medianami) lub ai (oszacowanie modelu, tylko z ai_estimate)
summary.chronological_ageinteger|nullWiek odczytany z metadanych lub obiektu pacjenta
summary.biological_agenumber|nullObliczony wiek krwi, w latach
summary.delta_yearsnumber|nullWiek biologiczny minus metrykalny. Wartość ujemna oznacza młodszy niż kalendarzowy.
summary.markers_missingarrayKtóre z dziewięciu markerów PhenoAge nie zostały dostarczone przez panel
blood_age.age.inputsobjectFaktycznie użyte przeliczone wartości, w jednostkach docelowych
blood_age.age.labelsobjectNazwa każdego dopasowanego markera używana przez Twoje laboratorium
blood_age.indices[].bandstringok, borderline, high, low lub info
blood_age.indices[].fromarrayWiersze laboratoryjne, z których wyprowadzono ten wskaźnik
modestringdeterministic lub ai_assisted
Podaj wiek metrykalny

PhenoAge zawiera człon wieku, więc bez wieku metrykalnego odpowiedź wraca ze status: "missing_age" i bez wyniku. Wyślij go w metadata.patient_age albo w patient.age, albo jako datę urodzenia w patient.dob. Wzór obowiązuje dla wieku od 18 do 100 lat.

POST /api/v1/blood-age/validate Wydano 18.09.2026

Sprawdza dane żądania bez uruchamiania analizy i zgłasza, które z dziewięciu markerów PhenoAge zawiera Twój panel oraz czy udało się odczytać wiek metrykalny — czyli dwie rzeczy rozstrzygające, czy otrzymasz pełny wzór, czy oszacowanie częściowe. Uwierzytelnienie jest wymagane; limit nie jest zużywany, a punkt końcowy działa również na koncie bez pozostałych kredytów.

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v1/blood-age/validate" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "TWOJA_NAZWA",
    "password": "TWOJE_HASLO",
    "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": "%"}
    ]
  }'

Przykładowa odpowiedź

{
  "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"
}

Endpointy referencyjne

Oba endpointy referencyjne są bezpłatne i nie wymagają uwierzytelnienia.

GET /api/v1/blood-age/biomarkers

Wymienia dziewięć danych wejściowych PhenoAge, każdy marker, który silnik potrafi odczytać, wraz z jednostką docelową, oraz zakres wieku, dla którego obowiązuje wzór.

Przykład cURL

curl "https://app.aibloodtestinterpret.com/api/v1/blood-age/biomarkers"

Przykładowa odpowiedź

{
  "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

Metadane możliwości: czy silnik jest włączony w tym wdrożeniu, dwa tryby i koszt każdego z nich, limity żądań, schemat uwierzytelniania i obsługiwane języki.

Przykład cURL

curl "https://app.aibloodtestinterpret.com/api/v1/blood-age/info"

Sandbox

POST /api/v1/blood-age/sandbox zwraca przykładową odpowiedź dokładnie w takiej postaci, jaką generuje /analyze, więc klient napisany pod sandbox działa bez zmian na produkcji. Uwierzytelnienie jest wymagane, aby wywołanie potwierdzało również Twoje dane logowania, ale limit nie jest zużywany i żadna analiza nie jest wykonywana.

Kod błęduHTTPZnaczenie
AUTH_1001401Brak danych uwierzytelniających
AUTH_1002401Nieprawidłowa nazwa użytkownika lub hasło
AUTH_1004400Zniekształcone dane uwierzytelniające (zły typ lub nadmierny rozmiar)
QUOTA_1101403Niewystarczający limit API
VAL_2001400Brak pola parameters
VAL_2002400Nieprawidłowy format danych
VAL_2003400Nieobsługiwany kod języka
VAL_2005400Pole parameters jest puste
VAL_2006400Więcej niż 500 parametrów
VAL_2007400Nieprawidłowy obiekt patient
VAL_2008400Wiersz parametru jest zniekształcony lub bez nazwy
VAL_2009400Nieobsługiwana wartość patient.gender
RES_4004422Z tych parametrów nie da się nic obliczyć
RES_4005503Silnik wieku krwi jest wyłączony w tym wdrożeniu

API Zdrowia DNA: interpretacja testu DNA, raport DNA + krew i doradca suplementacji

Wydano: 23 września 2026

Z dumą przedstawiamy API Kantesti Zdrowia DNA: trzy nowe moduły AI, które zamieniają test DNA pacjenta w raporty kliniczne. Interpretacja testu DNA odczytuje surowy plik genotypu lub raport genetyczny i tworzy kompleksowy raport zdrowia genetycznego. Raport zdrowotny DNA + krew łączy ten raport ze zinterpretowanym badaniem krwi i pokazuje, w których miejscach geny i wyniki laboratoryjne wzajemnie się potwierdzają, a w których sobie przeczą. Doradca suplementacji na podstawie DNA, badania krwi i krótkiego kwestionariusza przygotowuje spersonalizowany plan suplementacji oparty na produktach Twojej kliniki.

334
Wyselekcjonowanych markerów DNA
20
Kategorii zdrowotnych
100+
Języków raportów

Weryfikacja względem Twojego pliku

Surowy plik genotypu jest przetwarzany na serwerze i porównywany z wyselekcjonowanym panelem 334 markerów w 20 kategoriach — od genów metylacji, układu sercowo-naczyniowego i gospodarki lipidowej po farmakogenomikę, metabolizm składników odżywczych, status nosicielstwa i długowieczność. Każde ustalenie zapisane przez AI jest sprawdzane względem przesłanego pliku: rsID, którego plik nie zawiera, zostaje odrzucony, a każdy genotyp jest ustalany zgodnie z odczytem zapisanym w pliku, więc raport nie może wymyślić wyniku.

Kluczowe funkcje
  • Wszystkie popularne źródła DNA — Surowe pliki z 23andMe, AncestryDNA, MyHeritage, FTDNA i LivingDNA, pliki VCF, także spakowane jako .zip lub .gz; wklejone wiersze rsID; albo raport genetyczny w postaci do 6 plików PDF, JPG lub PNG
  • Kompleksowy raport genetyczny — Ustalenia według obszarów zdrowia, ryzyko chorób, status nosicielstwa, farmakogenomika (przewidywane fenotypy metabolizmu leków i grupy leków, których dotyczą), nutrigenomika, cechy, zalecane badania uzupełniające i sygnały alarmowe
  • Geny a wyniki laboratoryjne — Raport DNA + krew oznacza każde powiązanie między ustaleniem genetycznym a wynikiem laboratoryjnym jako confirms, contradicts, neutral lub watch i uzupełnia je macierzą ryzyka, działaniami priorytetowymi oraz planem monitorowania
  • Plany suplementacji z zasadami bezpieczeństwa — Dawka, postać, pora przyjmowania, czas trwania, interakcje i terminy ponownych badań; dawki nie przekraczają górnych tolerowanych poziomów spożycia, obowiązują limity bezpieczne w ciąży, a wszystko, co wymaga decyzji lekarza przepisującego, trafia do clinician_review_required
  • Własny katalog produktów — Doradca poleca produkty dostępne w Twojej klinice, oznacza je jako clinic_library, a w trybie „tylko produkty kliniki” wymienia potrzeby, których Twój katalog nie pokrywa
  • Łączenie modułów, bez przechowywania danych — Raport z modułu 1 wyślij bezpośrednio do modułów 2 i 3. Nic nie jest zapisywane w powiązaniu z pacjentem, a surowe pliki genotypu są usuwane po przetworzeniu
  • 100+ języków raportów — Raport powstaje w wybranym przez Ciebie języku
  • Tryb asynchroniczny — Dodaj ?async=1 i odpytuj /api/jobs/<job_id>, dzięki czemu długa analiza nigdy nie przekroczy limitu czasu bramy
  • Tryb Sandbox — Testuj integrację bez zużywania kredytów
Jak współpracują trzy moduły

1. POST /api/v1/dna-interpretation/analyze z plikiem DNA zwraca data.report. 2. Wyślij ten raport wraz ze zinterpretowanym badaniem krwi do /api/v1/dna-blood-report/analyze. 3. Wyślij ten sam raport, odpowiedzi z kwestionariusza i opcjonalnie badanie krwi do /api/v1/dna-supplements/analyze. Moduły 2 i 3 przyjmują raport DNA w takiej postaci, w jakiej został zwrócony: obiekt report, cały obiekt data lub pełną odpowiedź.

Podsumowanie endpointów

EndpointMetodaOpisAuth
/api/v1/dna-interpretation/analyzePOSTPlik DNA, wklejone wiersze rsID lub strony raportu → kompleksowy raport zdrowia genetycznegoWymagane (1 kredyt)
/api/v1/dna-interpretation/validatePOSTPrzetwórz przesłany plik i pokaż, co zostało znalezione, bez wywołania AIWymagane (Bezpłatne)
/api/v1/dna-interpretation/sandboxPOSTPrzykładowy raport genetycznyWymagane (Bezpłatne)
/api/v1/dna-interpretation/infoGETAkceptowane dane wejściowe, limity i języki raportówNiewymagane
/api/v1/dna-blood-report/analyzePOSTRaport DNA + zinterpretowane badanie krwi → łączony raport zdrowotnyWymagane (1 kredyt)
/api/v1/dna-blood-report/validatePOSTSprawdź dane żądania bez wywołania AIWymagane (Bezpłatne)
/api/v1/dna-blood-report/sandboxPOSTPrzykładowy łączony raportWymagane (Bezpłatne)
/api/v1/dna-blood-report/infoGETPola żądania i limityNiewymagane
/api/v1/dna-supplements/analyzePOSTRaport DNA + badanie krwi (opcjonalnie) + kwestionariusz → plan suplementacjiWymagane (1 kredyt)
/api/v1/dna-supplements/validatePOSTSprawdź dane żądania i odpowiedzi bez wywołania AIWymagane (Bezpłatne)
/api/v1/dna-supplements/sandboxPOSTPrzykładowy plan suplementacjiWymagane (Bezpłatne)
/api/v1/dna-supplements/questionnaireGET25 pytań i dozwolone odpowiedziNiewymagane
/api/v1/dna-supplements/settingsGET PUTOdczytaj lub zaktualizuj katalog produktów Twojej kliniki i ustawienia doradcyWymagane (Bezpłatne)
/api/v1/dna-supplements/infoGETPola żądania i limityNiewymagane
POST /api/v1/dna-interpretation/analyze Wydano 23.09.2026

Interpretuje jeden test DNA i zwraca kompleksowy raport zdrowia genetycznego. Wyślij plik jako multipart/form-data albo wklejone wiersze genotypu jako JSON. Przesłany plik jest przetwarzany od razu, więc na nieczytelny plik API natychmiast odpowiada kodem 400 i niczego nie pobiera. Jeden kredyt jest pobierany dopiero po wygenerowaniu raportu.

Parametry żądania

ParametrTypWymaganyOpis
usernamestringTakTwoja nazwa użytkownika API (lub użyj uwierzytelniania HTTP Basic)
passwordstringTakTwoje hasło API
filefileTak*Jeden surowy plik genotypu (.txt, .csv, .tsv, .vcf, .zip, .gz, do 80 MB) lub do 6 plików raportu (PDF do 20 MB, JPG/PNG do 10 MB każdy). *Wyślij file albo genotype_text.
genotype_textstringTak*Wklejone wiersze genotypu (rsID, chromosom, pozycja, genotyp), do 2 000 000 znaków
languagestringNieKod języka raportu, np. en, de, ar (domyślnie: en). Zobacz sekcję Obsługiwane języki.
patientobjectNieage, sex, diagnoses, comorbidities, medications, treatments, notes. W żądaniu multipart wyślij go jako ciąg JSON.
source_labelstringNieWłasna nazwa źródła, do 120 znaków

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v1/dna-interpretation/analyze?async=1" \
  -u "TWOJA_NAZWA:TWOJE_HASLO" \
  -F "file=@genome_raw_data.txt" \
  -F "language=en" \
  -F 'patient={"age": 41, "sex": "female", "medications": "clopidogrel"}'

# 202 Accepted: {"status": "pending", "job_id": "...", "poll_url": "/api/jobs/...", ...}
curl -u "TWOJA_NAZWA:TWOJE_HASLO" "https://app.aibloodtestinterpret.com/api/jobs/JOB_ID"

Przykład Python

import time
import requests

BASE = "https://app.aibloodtestinterpret.com"
AUTH = ("TWOJA_NAZWA", "TWOJE_HASLO")


def run(path, poll=True, **kwargs):
    """Wysyła POST w trybie asynchronicznym i odpytuje /api/jobs/<id>, aż raport będzie gotowy."""
    resp = requests.post(f"{BASE}{path}?async=1", auth=AUTH, timeout=60, **kwargs)
    body = resp.json()
    if resp.status_code != 202:
        return body                      # błąd lub odpowiedź synchroniczna
    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) Interpretacja testu DNA
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"])

Przykładowa odpowiedź

{
  "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"
}

Referencja pól odpowiedzi

PoleTypOpis
sourceobjectCo zostało odczytane: kind (raw, text lub document), wykryty format i wersja genomu referencyjnego, liczba rekordów i odczytanych genotypów, liczba znalezionych markerów spośród 334 markerów panelu oraz ostrzeżenia parsera
report.overall_assessment.levelstringtypical, slightly_elevated, elevated lub high
report.sections[]arrayJeden wpis na każdy obszar zdrowia, z poziomem risk_level i listą ustaleń 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[]arrayPrzewidywany fenotyp metabolizmu dla każdego genu i grupy leków, na które może on wpływać. Raport nigdy nie podaje dawkowania leków.
report.carrier_status[]arraycarrier, not_detected, affected_pattern lub inconclusive; zawsze do potwierdzenia klinicznym badaniem genetycznym
report.disease_risks[], nutrigenomics[], traits[]arrayRyzyko chorób, ustalenia dotyczące składników odżywczych oraz cechy wraz z genami, które za nimi stoją
report.recommended_tests[], red_flags[]arrayBadania uzupełniające z uzasadnieniem oraz ustalenia wymagające pilnej uwagi
POST /api/v1/dna-interpretation/validate Wydano 23.09.2026

Przetwarza przesłany plik dokładnie tak jak /analyze i zgłasza, co zostało znalezione, bez wywołania AI. Uwierzytelnienie jest wymagane; kredyt nie jest zużywany. Użyj go, aby sprawdzić plik, zanim wykorzystasz kredyt.

Przykładowa odpowiedź

{
  "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 Wydano 23.09.2026

Łączy raport DNA ze zinterpretowanym badaniem krwi w jeden raport zdrowotny. Każde powiązanie między ustaleniem genetycznym a wartością laboratoryjną zostaje sklasyfikowane, a raport uzupełniają macierz ryzyka, działania priorytetowe i plan monitorowania. Jeden kredyt za każde udane żądanie.

Parametry żądania

ParametrTypWymaganyOpis
dna_reportobjectTakRaport z /api/v1/dna-interpretation/analyze: data.report, cały obiekt data lub pełna odpowiedź
blood_testobject|arrayTakZinterpretowane badanie krwi w postaci zwracanej przez API badań krwi (metadata, parameters, interpretation) albo sama lista do 500 parametrów z nazwą i polem result
languagestringNieKod języka raportu (domyślnie: en)
patientobjectNieTe same pola co w Interpretacji testu DNA

Przykład Python

# 2) Raport zdrowotny DNA + krew (korzysta z run() i dna z przykładu powyżej)
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"])

Przykładowa odpowiedź

{
  "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."
    }
  }
}

Referencja pól odpowiedzi

PoleTypOpis
report.overall_status.levelstringgood, watch, attention lub urgent
report.correlations[].concordancestringconfirms, contradicts, neutral lub watch
report.risk_matrix[]arrayDla każdego obszaru: genetic_risk, lab_status (normal, borderline, abnormal, not_measured) oraz łączna ocena
report.priority_actions[]arraypriority (high, medium, low), działanie i jego uzasadnienie
report.monitoring_plan[]arrayKtóry marker zbadać ponownie, kiedy i dlaczego
POST /api/v1/dna-supplements/analyze Wydano 23.09.2026

Tworzy spersonalizowany plan suplementacji na podstawie raportu DNA, odpowiedzi z kwestionariusza i opcjonalnie zinterpretowanego badania krwi. Katalog produktów Twojej kliniki i ustawienia doradcy są stosowane automatycznie. Jeden kredyt za każde udane żądanie.

Parametry żądania

ParametrTypWymaganyOpis
dna_reportobjectTakRaport z /api/v1/dna-interpretation/analyze
answersobjectTakOdpowiedzi z kwestionariusza. Pola diet_type i pregnancy są wymagane; wszystkie 25 pytań opisuje GET /api/v1/dna-supplements/questionnaire. Nieznane klucze i wartości są pomijane.
blood_testobject|arrayNieTen sam format co w raporcie DNA + krew
use_clinic_cataloguebooleanNieZastosuj katalog produktów i ustawienia Twojej kliniki (domyślnie: true)
languagestringNieKod języka raportu (domyślnie: en)
patientobjectNieTe same pola co w Interpretacji testu DNA. Wymienione tu leki są sprawdzane pod kątem interakcji.

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/v1/dna-supplements/analyze?async=1" \
  -u "TWOJA_NAZWA:TWOJE_HASLO" \
  -H "Content-Type: application/json" \
  -d '{
    "dna_report": { ...data.report z interpretacji DNA... },
    "answers": {"diet_type": "vegetarian", "pregnancy": "no", "sun_exposure": "low", "goals": ["energy", "immunity"]},
    "language": "en"
  }'

Przykład Python

# 3) Plan suplementacji (korzysta z run(), dna i blood_test z przykładów powyżej)
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"])

Przykładowa odpowiedź

{
  "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."
    }
  }
}

Referencja pól odpowiedzi

PoleTypOpis
catalogueobjectZastosowany tryb katalogu (prefer, only, off) i liczba dostępnych produktów kliniki
report.recommendations[]arrayname, form, dose, timing, duration, priority, uzasadnienie rationale (genetyczne / laboratoryjne / z kwestionariusza), evidence, cautions, interactions i retest
report.recommendations[].sourcestringclinic_library dla produktu z Twojego katalogu (jego nazwa jest w polu product), w przeciwnym razie evidence_based
report.uncovered_needs[]arrayW trybie „tylko produkty kliniki”: potrzeby, których Twój katalog nie pokrywa
report.clinician_review_required[]arrayWszystko, co wymaga decyzji lekarza przepisującego: interakcje, ciąża, choroby nerek lub wątroby, leki przeciwkrzepliwe, dawki bliskie górnemu tolerowanemu poziomowi spożycia
report.avoid_or_caution[], dietary_sources[], retest_plan[]arrayCzego unikać, pokarmowe źródła każdego składnika odżywczego i kiedy powtórzyć badania
GET PUT /api/v1/dna-supplements/settings Wydano 23.09.2026

Odczytuje lub aktualizuje katalog produktów Twojej kliniki i ustawienia doradcy. To ten sam katalog co w panelu kliniki i w AI Żywienie, więc produkt dodany w jednym miejscu jest dostępny wszędzie. Uwierzytelnienie jest wymagane; kredyt nie jest zużywany. Wyślij catalogue, settings lub oba; katalog zastępuje całą dotychczasową listę.

PoleTypOpis
catalogue[]arrayDo 200 produktów: name, brand, form, dosage, category (vitamin, mineral, probiotic, omega, herbal, other), description
settings.modestringprefer (produkty kliniki tam, gdzie pasują, w pozostałych przypadkach sugestie oparte na dowodach), only (wyłącznie produkty kliniki) lub off (katalog jest pomijany)
settings.instructionsstringWłasne instrukcje dla AI, do 1500 znaków. Zasady bezpieczeństwa zawsze mają pierwszeństwo.
settings.max_itemsintegerMaksymalna liczba rekomendacji w planie, od 3 do 12

Przykład cURL

curl -X PUT "https://app.aibloodtestinterpret.com/api/v1/dna-supplements/settings" \
  -u "TWOJA_NAZWA:TWOJE_HASLO" \
  -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}
  }'

Endpointy referencyjne

GET /api/v1/dna-supplements/questionnaire zwraca listę 25 pytań (dieta, posiłki, owoce i warzywa, ryby, czerwone mięso, nabiał, alkohol, palenie tytoniu, kofeina, ekspozycja na słońce, aktywność fizyczna, sen, stres, trawienie, energia, obecnie przyjmowane suplementy, leki, alergie, choroby, ciąża, cele, budżet, preferowana postać i uwagi) wraz z ich typami i dozwolonymi wartościami. Trzy endpointy /info zwracają akceptowane dane wejściowe, limity, koszt w kredytach i pełną listę języków raportów. Żaden z nich nie wymaga uwierzytelnienia.

Sandbox i tryb asynchroniczny

POST /api/v1/dna-interpretation/sandbox, /api/v1/dna-blood-report/sandbox i /api/v1/dna-supplements/sandbox zwracają przykładowy raport dokładnie w takiej postaci, jaką generuje /analyze. Uwierzytelnienie jest wymagane; kredyt nie jest zużywany.

Przygotowanie raportu AI trwa zwykle od jednej do trzech minut. Dodaj ?async=1 (lub nagłówek X-Async: 1), a żądanie natychmiast odpowie kodem 202 z identyfikatorem job_id. Odpytuj GET /api/jobs/<job_id> z tymi samymi danymi logowania, dopóki status nie przyjmie wartości completed lub failed. Ostateczna odpowiedź znajduje się w result.response i jest identyczna z odpowiedzią synchroniczną.

Kod błęduHTTPZnaczenie
AUTH_1001401Brak danych uwierzytelniających
AUTH_1002401Nieprawidłowa nazwa użytkownika lub hasło
QUOTA_1101403Niewystarczający limit API
VAL_2001400Brak wymaganego pola: file lub genotype_text, dna_report, blood_test albo wymaganej odpowiedzi
VAL_2002400Nieczytelne dane genotypu, nieobsługiwany typ pliku, nieprawidłowy JSON lub nieprawidłowy dna_report
VAL_2003400Nieobsługiwany język raportu
VAL_2006400Przekroczony limit rozmiaru: wklejony tekst, parametry krwi (500) lub katalog (200 produktów)
VAL_2007400Nieprawidłowy obiekt patient
VAL_2008400Brak użytecznego parametru badania krwi (nazwy i wyniku)
PROC_3003500Nie udało się wygenerować lub zweryfikować odpowiedzi AI; spróbuj ponownie. Kredyt nie jest pobierany.
RES_4005503Moduły DNA są wyłączone w tym wdrożeniu
Wspomaganie decyzji klinicznych

API Zdrowia DNA generuje za pomocą AI informacje przeznaczone dla lekarza prowadzącego. Nie stanowią one diagnozy ani recepty. Konsumenckie mikromacierze genotypujące nie są klinicznym sekwencjonowaniem: przed podjęciem działań potwierdź istotne klinicznie ustalenia oraz wyniki dotyczące nosicielstwa za pomocą zwalidowanych klinicznych badań genetycznych.

ICR - Inteligentne Rozpoznawanie Znaków API

Wydano: 14 lutego 2026

API Kantesti ICR (Inteligentne Rozpoznawanie Znaków) to zaawansowana technologia ekstrakcji tekstu z dokumentów, która znacznie wykracza poza tradycyjne OCR. Napędzana własnym silnikiem AI Kantesti, ICR dostarcza strukturalny wynik JSON z każdego typu dokumentu.

79%
Szybszy niż OCR
99,7%
Dokładność
100+
Języków

Kantesti ICR vs Tradycyjne OCR

W testach porównawczych, Kantesti ICR wykazał 79% wyższą wydajność w porównaniu z tradycyjnymi rozwiązaniami OCR. ICR rozumie strukturę dokumentu, zachowuje układy tabel, ekstrahuje metadane i zwraca czysty strukturalny JSON.

Kluczowe Funkcje ICR
  • Strukturalny Wynik JSON — Tabele, sekcje, metadane i surowy tekst w czystym formacie JSON
  • Wykrywanie Typu Dokumentu — Automatycznie identyfikuje raporty medyczne, faktury, formularze, listy itp.
  • Ekstrakcja Tabel — Zachowuje nagłówki i dane wierszy z pełną strukturą
  • Obsługa Wielu Formatów — Przetwarzanie dokumentów PDF, JPG, JPEG, PNG
  • Integracja Badań Krwi (Kan) — Specjalizowany endpoint do ekstrakcji dokumentów badań krwi
  • Tryb Sandbox — Testuj integrację bez zużywania kredytów
  • System Kredytów — 0,5 kredytu za wywołanie API

Podsumowanie Endpointów ICR

EndpointMetodaOpisKoszt
/api/icr/v1/extractPOSTEkstrakcja tekstu ICR0,5 kredytu
/api/icr/v1/sandboxPOSTTest sandbox ICRBezpłatnie
/api/icr/v1/kanPOSTAnaliza dokumentów badań krwi0,5 kredytu
/api/icr/v1/kan/sandboxPOSTTest sandbox badań krwiBezpłatnie
/api/icr/infoGETDokumentacja i funkcje APIBezpłatnie
/api/icr/healthGETEndpoint sprawdzania stanuBezpłatnie
/api/icr/v1/quotaPOSTSprawdź pozostałe kredyty ICRBezpłatnie
POST /api/icr/v1/extract Wydano 14.02.2026

Ekstrahuje całą zawartość tekstową z przesłanych dokumentów za pomocą technologii ICR Kantesti.

Parametry Żądania

ParametrTypWymaganyOpis
usernamestringTakTwoja nazwa użytkownika API
passwordstringTakTwoje hasło API
filefileTakPlik dokumentu (PDF, JPG, JPEG, PNG)
languagestringNieJęzyk wyjściowy (domyślnie: en)

Przykład cURL

curl -X POST "https://app.aibloodtestinterpret.com/api/icr/v1/extract" \
  -F "username=TWOJA_NAZWA" \
  -F "password=TWOJE_HASLO" \
  -F "language=pl" \
  -F "[email protected]"

Przykład Python

import requests

def icr_extract(file_path: str, username: str, password: str, language: str = "pl"):
    """
    Wyodrębnij tekst z dokumentu za pomocą API ICR Kantesti.
    79% szybszy i dokładniejszy niż tradycyjne 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()

result = icr_extract("raport_medyczny.pdf", "uzytkownik", "haslo", "pl")
print(f"Typ dokumentu: {result['data']['document_type']}")
print(f"Strony: {result['data']['page_count']}")

Przykładowa Odpowiedź

{
  "status": "success",
  "data": {
    "document_type": "blood_test_report",
    "page_count": 1,
    "pages": [{"page_number": 1, "content": {"raw_text": "Szpital Uniwersytecki w Kolonii - Morfologia...", "sections": [{"type": "header", "content": "Morfologia"}], "tables": [{"headers": ["Test", "Wynik", "Jednostka", "Zakres Referencyjny"], "rows": [["Glukoza", "92", "mg/dL", "74 - 100"], ["ALT", "22", "U/L", "< 35"]]}]}}],
    "metadata": {"detected_language": "pl", "confidence": "high"},
    "icr_metadata": {"engine": "kantesti-icr", "version": "1.0.0"}
  },
  "credit_cost": 0.5,
  "api_version": "icr-v1"
}

Punkty Końcowe Sandbox ICR

Przetestuj swoją integrację ICR bez zużywania kredytów. Punkty końcowe sandbox zwracają realistyczne przykładowe dane.

APIPunkt Końcowy SandboxOpis
ICR Ekstrakcja/api/icr/v1/sandboxZwraca przykładowe dane ekstrakcji ICR
ICR Kan/api/icr/v1/kan/sandboxZwraca przykładowe dane parametrów badania krwi

Wydajność ICR vs OCR

Wyniki Benchmarku — Kantesti ICR vs Tradycyjne OCR
MetrykaKantesti ICRTradycyjne OCRPoprawa
Szybkość Przetwarzania1,2s średnia5,7s średnia79% szybszy
Dokładność Tekstu99,7%92,1%+7,6%
Wykrywanie Tabel98,9%71,2%+27,7%
Strukturalny WynikJSON z sekcjami, tabelami, metadanymiSurowy tekstPełna struktura
Obsługa Wielojęzyczna100+ języków30-50 języków2x+ pokrycie