Punkty końcowe API badań krwi
Pełna referencja wszystkich punktów końcowych API Kantesti z przykładami kodu w wielu językach programowania.
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.
https://app.aibloodtestinterpret.com
Changelog
Śledź wersje API, aktualizacje i informacje o migracji. Używaj zalecanych punktów końcowych dla nowych integracji.
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.
| API | Punkt Końcowy | Status |
|---|---|---|
| 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
| Data | Wersja | Zmiany |
|---|---|---|
| 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.
| Wersja | Punkt Końcowy | Status |
|---|---|---|
| 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 |
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).
Jeśli parametr language nie zostanie podany, API zwraca odpowiedzi w języku angielskim (en).
Główne języki światowe
| Kod | Język | Nazwa rodzima |
|---|---|---|
en | Angielski | English |
zh | Chiński | 中文 |
es | Hiszpański | Español |
ar | Arabski | العربية |
hi | Hindi | हिन्दी |
pt | Portugalski | Português |
ru | Rosyjski | Русский |
ja | Japoński | 日本語 |
fr | Francuski | Français |
de | Niemiecki | Deutsch |
ko | Koreański | 한국어 |
tr | Turecki | Türkçe |
Języki europejskie
| Kod | Język | Nazwa rodzima |
|---|---|---|
it | Włoski | Italiano |
nl | Holenderski | Nederlands |
pl | Polski | Polski |
el | Grecki | Ελληνικά |
sv | Szwedzki | Svenska |
no | Norweski | Norsk |
da | Duński | Dansk |
fi | Fiński | Suomi |
cs | Czeski | Čeština |
uk | Ukraiński | Українська |
ro | Rumuński | Română |
hu | Węgierski | Magyar |
bg | Bułgarski | Български |
hr | Chorwacki | Hrvatski |
sk | Słowacki | Slovenčina |
sl | Słoweński | Slovenščina |
sr | Serbski | Српски |
lt | Litewski | Lietuvių |
lv | Łotewski | Latviešu |
et | Estoński | Eesti |
Języki Bliskiego Wschodu i Azji Środkowej
| Kod | Język | Nazwa rodzima |
|---|---|---|
he | Hebrajski | עברית |
fa | Perski | فارسی |
az | Azerbejdżański | Azərbaycan |
ka | Gruziński | ქართული |
hy | Ormiański | Հայdelays |
kk | Kazachski | Қазақша |
uz | Uzbecki | Oʻzbek |
Języki Azji Południowej
| Kod | Język | Nazwa rodzima |
|---|---|---|
bn | Bengalski | বাংলা |
ta | Tamilski | தமிழ் |
te | Telugu | తెలుగు |
ur | Urdu | اردو |
ne | Nepalski | नेपाली |
Języki Azji Południowo-Wschodniej
| Kod | Język | Nazwa rodzima |
|---|---|---|
id | Indonezyjski | Bahasa Indonesia |
th | Tajski | ไทย |
vi | Wietnamski | Tiếng Việt |
ms | Malajski | Bahasa Melayu |
fil | Filipiński | Filipino |
Języki afrykańskie
| Kod | Język | Nazwa rodzima |
|---|---|---|
af | Afrikaans | Afrikaans |
sw | Suahili | Kiswahili |
am | Amharski | አማርኛ |
Inne języki
| Kod | Język | Nazwa rodzima |
|---|---|---|
la | Łaciński | Latina |
eo | Esperanto | Esperanto |
yi | Jidysz | ייִדיש |
ht | Kreolski haitański | Kreyòl Ayisyen |
mi | Maoryski | Te Reo Māori |
sm | Samoański | Gagana Samoa |
to | Tongijski | Lea Faka-Tonga |
haw | Hawajski | ʻŌ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.
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
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
username | string | Tak | Twoja nazwa użytkownika API |
password | string | Tak | Twoje hasło API |
file | file | Tak | Obraz badania krwi (PNG, JPG, WEBP) lub PDF. Maks. 20MB. Powtórz pole, aby przesłać kilka obrazów. |
language | string | Nie | Kod języka odpowiedzi (domyślnie: en). Obsługuje ponad 100 języków. |
pdf_password | string | Nie | Hasł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"
}
Punkt końcowy produkcyjny dla analizy badań krwi. Zużywa 1 kredyt na żądanie.
Parametry Żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
username | string | Tak | Twoja nazwa użytkownika API |
password | string | Tak | Twoje hasło API |
file | file | Tak | Obraz badania krwi (PNG, JPG, WEBP) lub PDF. Maks. 20MB. |
language | string | Nie | Kod 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
| Pole | Typ | Opis |
|---|---|---|
status | string | "success" lub "error" |
data | object | Zawiera wszystkie wyniki analizy |
timestamp | string | Znacznik czasu ISO 8601 odpowiedzi |
api_version | string | Użyta wersja API |
Obiekt data.metadata
| Pole | Typ | Opis |
|---|---|---|
lab_date | string | Data pobrania krwi (RRRR-MM-DD) |
results_date | string | Data wydania wyników (RRRR-MM-DD) |
lab_name | string | Nazwa laboratorium |
lab_city | string | Miasto laboratorium |
lab_country | string | Kraj laboratorium |
patient_name | string | Pełne imię i nazwisko pacjenta (tylko metadane, nie wysyłane do interpretacji) |
patient_age | string | Wiek pacjenta |
patient_sex | string | "male", "female" lub "other" |
Element tablicy data.parameters
| Pole | Typ | Opis |
|---|---|---|
category | string | Kategoria parametru (np. "Morfologia", "Profil lipidowy") |
long_name | string | Pełna nazwa parametru |
short_name | string | Skrócona nazwa parametru |
result | string | Zmierzona wartość |
unit | string | Jednostka miary |
range_min | string | Minimalny zakres referencyjny |
range_max | string | Maksymalny zakres referencyjny |
evaluation | string | Status wyniku. Zobacz wartości oceny |
Element tablicy data.interpretation
| Pole | Typ | Opis |
|---|---|---|
title | string | Tytuł sekcji (np. "Ogólna ocena zdrowia") |
content | string | Interpretacja 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"
}
Pole evaluation używa standardowych wartości. Zobacz wartości oceny.
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"}
]
}
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.
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"
}
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.
- 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
| API | Punkt 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 |
Wybierz odpowiednie API dla swojego przypadku użycia:
| Funkcja | Porównanie AI Badań Krwi | Analiza Trendów |
|---|---|---|
| Główny Fokus | Porównanie narracyjne AI | Statystyczna analiza trendów |
| Przetwarzanie AI | Pełna narracja AI | AI wzbogacone + statystyki |
| Typ Wyjścia | Podsumowania narracyjne | Wykresy, statystyki, wzorce |
| Idealne Do | Co się zmieniło między badaniami | Długoterminowe śledzenie parametrów |
| Min Badań | 2 | 2 |
| Max Badań | 20 | 50 |
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.
Analizuje trendy w wielu badaniach krwi, dostarczając wizualizacje danych, analizę statystyczną i interpretacje AI zmian parametrów w czasie.
- Minimum: 2 badania krwi wymagane
- Maksimum: 50 badań na żądanie
- Każde badanie musi mieć
lab_dateLUBresults_date - Używaj spójnych nazw parametrów dla dokładnego śledzenia
Parametry Żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
username | string | Tak | Twoja nazwa użytkownika API |
password | string | Tak | Twoje hasło API |
language | string | Nie | Kod języka odpowiedzi (domyślnie: en) |
blood_tests | array | Tak | Tablica obiektów badań krwi (min: 2, max: 50) |
analysis_type | string | Nie | Typ analizy. Zobacz wartości |
analysis_options | object | Nie | Opcje konfiguracji analizy |
patient | object | Nie | Informacje o pacjencie dla kontekstu |
Obiekt analysis_options
| Pole | Typ | Domyślnie | Opis |
|---|---|---|---|
include_predictions | boolean | true | Uwzględnij prognozy trendów AI |
include_statistics | boolean | true | Uwzględnij analizę statystyczną |
include_charts | boolean | true | Uwzględnij dane konfiguracji wykresów |
Struktura Tablicy blood_tests
Każdy obiekt w tablicy blood_tests powinien zawierać:
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
test_date | string | Tak | Data badania w formacie RRRR-MM-DD |
parameters | array | Tak | Tablica parametrów badania krwi |
Struktura blood_tests[].parameters
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
name | string | Tak | Nazwa parametru (używaj spójnych nazw w testach!) |
short_name | string | Nie | Krótki kod parametru (np. HGB, GLU, CHOL) |
value | number | Tak | Zmierzona wartość (można również użyć result) |
unit | string | Tak | Jednostka miary (np. g/dL, mg/dL, %) |
range_min | number | Nie | Minimalna wartość zakresu referencyjnego |
range_max | number | Nie | Maksymalna wartość zakresu referencyjnego |
category | string | Nie | Kategoria parametru (np. "Panel Lipidowy", "Morfologia") |
evaluation | string | Nie | Wstępnie oceniony status. Zobacz wartości oceny |
Referencja Pól Odpowiedzi
Poziom Główny
| Pole | Typ | Opis |
|---|---|---|
status | string | "success" lub "error" |
data | object | Zawiera wszystkie wyniki analizy trendów |
timestamp | string | Znacznik czasu ISO 8601 odpowiedzi |
api_version | string | Użyta wersja API |
Obiekt data.summary
| Pole | Typ | Opis |
|---|---|---|
total_tests | integer | Liczba przeanalizowanych badań |
date_range | object | Zakres dat analizy (earliest, latest) |
parameters_tracked | integer | Liczba śledzonych parametrów |
Element Tablicy data.trends
| Pole | Typ | Opis |
|---|---|---|
parameter_name | string | Nazwa parametru badania krwi |
trend_direction | string | Kierunek trendu. Zobacz wartości |
trend_strength | string | Siła trendu. Zobacz wartości |
statistical_significance | boolean | Czy trend jest statystycznie istotny |
chart_data | array | Punkty danych dla wizualizacji |
interpretation | string | Interpretacja AI trendu parametru |
Element Tablicy data.chart_data
| Pole | Typ | Opis |
|---|---|---|
date | string | Data pomiaru (RRRR-MM-DD) |
value | number | Zmierzona wartość |
unit | string | Jednostka miary |
evaluation | string | Status oceny w tym punkcie czasowym |
Przykład cURL
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "twoja_nazwa_uzytkownika",
"password": "twoje_haslo",
"language": "pl",
"analysis_type": "comprehensive",
"analysis_options": {
"include_predictions": true,
"include_statistics": true,
"include_charts": true
},
"blood_tests": [
{
"test_date": "2024-01-15",
"parameters": [
{"short_name": "GLU", "result": 115, "unit": "mg/dL"},
{"short_name": "HBA1C", "result": 6.5, "unit": "%"},
{"short_name": "CHOL", "result": 240, "unit": "mg/dL"},
{"short_name": "LDL", "result": 160, "unit": "mg/dL"},
{"short_name": "HDL", "result": 40, "unit": "mg/dL"}
]
},
{
"test_date": "2024-04-22",
"parameters": [
{"short_name": "GLU", "result": 108, "unit": "mg/dL"},
{"short_name": "HBA1C", "result": 6.2, "unit": "%"},
{"short_name": "CHOL", "result": 220, "unit": "mg/dL"},
{"short_name": "LDL", "result": 145, "unit": "mg/dL"},
{"short_name": "HDL", "result": 43, "unit": "mg/dL"}
]
},
{
"test_date": "2024-08-15",
"parameters": [
{"short_name": "GLU", "result": 102, "unit": "mg/dL"},
{"short_name": "HBA1C", "result": 5.9, "unit": "%"},
{"short_name": "CHOL", "result": 205, "unit": "mg/dL"},
{"short_name": "LDL", "result": 130, "unit": "mg/dL"},
{"short_name": "HDL", "result": 46, "unit": "mg/dL"}
]
},
{
"test_date": "2024-12-18",
"parameters": [
{"short_name": "GLU", "result": 95, "unit": "mg/dL"},
{"short_name": "HBA1C", "result": 5.6, "unit": "%"},
{"short_name": "CHOL", "result": 190, "unit": "mg/dL"},
{"short_name": "LDL", "result": 115, "unit": "mg/dL"},
{"short_name": "HDL", "result": 50, "unit": "mg/dL"}
]
}
]
}'
Przykładowa Odpowiedź
{
"status": "success",
"data": {
"summary": {
"total_tests": 3,
"date_range": {
"earliest": "2025-01-15",
"latest": "2025-12-15"
},
"parameters_tracked": 3
},
"trends": [
{
"parameter_name": "Cholesterol całkowity",
"short_name": "CHOL",
"trend_direction": "downward",
"trend_strength": "moderate",
"statistical_significance": true,
"percent_change": -13.6,
"chart_data": [
{"date": "2025-01-15", "value": 220, "unit": "mg/dL", "evaluation": "borderline_high"},
{"date": "2025-06-15", "value": 205, "unit": "mg/dL", "evaluation": "borderline_high"},
{"date": "2025-12-15", "value": 190, "unit": "mg/dL", "evaluation": "normal"}
],
"interpretation": "Pozytywny trend spadkowy cholesterolu całkowitego o 13.6% w ciągu roku. Wartości poprawiły się z granicznych do normalnych zakresów."
}
],
"overall_interpretation": {
"title": "Ogólna Ocena Trendów",
"content": "Twoje wyniki badań pokazują pozytywny trend poprawy profilu lipidowego w ciągu ostatniego roku. Cholesterol całkowity i LDL wykazują konsekwentny spadek, podczas gdy HDL pokazuje korzystną tendencję wzrostową."
}
},
"api_version": "v1",
"timestamp": "2025-12-22T10:30:00Z"
}
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.
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.
Minimum 2 badania krwi, maksimum 20 badań dla porównania AI.
Parametry Żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
username | string | Tak | Twoja nazwa użytkownika API |
password | string | Tak | Twoje hasło API |
language | string | Nie | Kod języka odpowiedzi (domyślnie: en) |
blood_tests | array | Tak | Tablica obiektów badań krwi (min: 2, max: 20) |
patient | object | Nie | Informacje o pacjencie dla kontekstu |
Struktura Tablicy blood_tests
Każdy obiekt w tablicy blood_tests powinien zawierać:
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
test_date | string | Tak | Data badania w formacie RRRR-MM-DD |
parameters | array | Tak | Tablica parametrów badania krwi |
Referencja Pól Odpowiedzi
Poziom Główny
| Pole | Typ | Opis |
|---|---|---|
status | string | "success" lub "error" |
data | object | Zawiera wszystkie wyniki porównania |
timestamp | string | Znacznik czasu ISO 8601 odpowiedzi |
api_version | string | Użyta wersja API |
Obiekt data.summary
| Pole | Typ | Opis |
|---|---|---|
total_tests | integer | Liczba porównanych badań |
date_range | object | Zakres dat porównania (earliest, latest) |
overall_trend | string | Ogólna ocena trendu. Zobacz wartości |
Element Tablicy data.comparisons
| Pole | Typ | Opis |
|---|---|---|
parameter_name | string | Nazwa parametru badania krwi |
short_name | string | Skrócona nazwa parametru |
changes | array | Tablica zmian między testami |
narrative_summary | string | Narracyjne podsumowanie AI zmian |
clinical_significance | string | Znaczenie kliniczne obserwowanych zmian |
Element Tablicy changes
| Pole | Typ | Opis |
|---|---|---|
from_date | string | Data początkowego badania |
to_date | string | Data końcowego badania |
from_value | number | Wartość początkowa |
to_value | number | Wartość końcowa |
change_amount | number | Bezwzględna zmiana |
change_percent | number | Zmiana procentowa |
trend_assessment | string | Ocena 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ślna | Opis |
|---|---|---|
comprehensive | ✓ | Pełna analiza ze statystykami, wykresami i interpretacją AI |
statistical | Tylko analiza statystyczna | |
summary | Tylko podsumowanie wysokiego poziomu |
health_goals API Żywienia
Cele zdrowotne dla spersonalizowanych rekomendacji żywieniowych. Można podać wiele wartości jako tablicę.
| Wartość | Opis |
|---|---|
maintain | Utrzymanie obecnego zdrowia (domyślne) |
improve_energy | Skupienie na poziomie energii |
weight_management | Zdrowe zarządzanie wagą |
heart_health | Zdrowie sercowo-naczyniowe |
immune_support | Wsparcie układu odpornościowego |
digestive_health | Zdrowie trawienne |
bone_health | Zdrowie kości |
mental_clarity | Funkcja 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_sodium | Zmniejszone spożycie sodu |
low_sugar | Zmniejszone spożycie cukru |
low_fat | Zmniejszone spożycie tłuszczu |
gluten_free | Bez glutenu |
dairy_free | Bez nabiału |
nut_free | Bez orzechów |
soy_free | Bez soi |
egg_free | Bez jaj |
halal | Zgodne z halal |
kosher | Zgodne z koszerne |
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 |
|---|---|
omnivore | Brak ograniczeń (domyślne) |
vegetarian | Bez mięsa |
vegan | Bez produktów odzwierzęcych |
pescatarian | Wegetarianin + ryby |
keto | Dieta ketogeniczna |
paleo | Dieta paleolityczna |
mediterranean | Dieta śródziemnomorska |
activity_level API Żywienia
Poziom aktywności fizycznej dla obliczeń kalorycznych i żywieniowych.
| Wartość | Opis |
|---|---|
sedentary | Mało lub brak ćwiczeń |
light | Lekkie ćwiczenia 1-3 dni/tydzień |
moderate | Umiarkowane ćwiczenia 3-5 dni/tydzień (domyślne) |
active | Intensywne ćwiczenia 6-7 dni/tydzień |
very_active | Bardzo intensywne ćwiczenia lub praca fizyczna |
budget API Żywienia
Poziom budżetu dla rekomendacji żywnościowych i suplementowych.
| Wartość | Opis |
|---|---|
low | Opcje ekonomiczne |
moderate | Opcje zrównoważone (domyślne) |
high | Opcje premium |
gender Wszystkie API
Płeć pacjenta dla spersonalizowanych zakresów referencyjnych i rekomendacji.
| Wartość | Opis |
|---|---|
male | Pacjent płci męskiej |
female | Pacjent płci żeńskiej |
other | Inne 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 |
|---|---|
normal | W normalnym zakresie referencyjnym |
low | Poniżej normalnego zakresu |
high | Powyżej normalnego zakresu |
critical_low | Krytycznie niski (wymagana natychmiastowa uwaga) |
critical_high | Krytycznie wysoki (wymagana natychmiastowa uwaga) |
borderline_low | Nieznacznie poniżej normalnego zakresu |
borderline_high | Nieznacznie powyżej normalnego zakresu |
trend_assessment API Porównanie & Trendy
Ogólna ocena trendów parametrów między testami.
| Wartość | Opis |
|---|---|
positive | Poprawa (w kierunku normalnego zakresu) |
negative | Pogorszenie (oddalanie się od normalnego zakresu) |
stable | Względnie bez zmian między testami |
improving | Ogólny trend poprawy |
worsening | Ogólny trend pogorszenia |
trend_direction API Analiza trendów
Kierunek zmian wartości parametrów w czasie.
| Wartość | Opis |
|---|---|
upward | Wartości rosnące w czasie |
downward | Wartości malejące w czasie |
stable | Minimalna zmiana w czasie |
trend_strength API Analiza trendów
Siła obserwowanego trendu.
| Wartość | Opis |
|---|---|
strong | >15% zmiany między okresami |
moderate | 5-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 |
|---|---|
excellent | Wszystkie markery w optymalnym zakresie |
good | Większość markerów w normalnym zakresie |
fair | Niektóre markery wymagają uwagi |
poor | Wiele markerów wymaga uwagi |
Punkty Końcowe Użytkowe
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
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.
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.
- 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
| Endpoint | Metoda | Opis | Auth |
|---|---|---|---|
/api/v1/family-health/analyze | POST | Generuj kompleksowy raport oceny ryzyka | Wymagane (1 kredyt) |
/api/v1/family-health/validate | POST | Walidacja danych żądania (bez zużycia limitu) | Wymagane (Bezpłatne) |
/api/v1/family-health/supported-languages | GET | Lista 100+ obsługiwanych języków | Niewymagane |
/api/v1/family-health/condition-categories | GET | Lista kategorii chorób | Niewymagane |
/api/v1/family-health/family-relations | GET | Lista typów relacji rodzinnych | Niewymagane |
/api/v1/family-health/sandbox/analyze | POST | Test sandbox z przykładowymi danymi | Wymagane (Bezpłatne) |
Generuj kompleksowy raport oceny ryzyka zdrowia rodzinnego napędzany AI.
Parametry żądania (JSON Body)
| Parametr | Typ | Wymagane | Opis |
|---|---|---|---|
username | string | Tak | Nazwa użytkownika API |
password | string | Tak | Hasło API |
patient_data | object | Tak | Dane pacjenta |
family_members | array | Tak* | Członkowie rodziny (maks. 100) |
health_profile | object | Tak* | Profil zdrowotny |
blood_test_data | array | Nie | Dane badań krwi |
language | string | Nie | Kod 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
| Kod | HTTP | Opis |
|---|---|---|
AUTH_1001 | 401 | Brak danych uwierzytelniających |
AUTH_1002 | 401 | Nieprawidłowa nazwa użytkownika lub hasło |
QUOTA_1101 | 403 | Niewystarczający limit API |
VAL_2001 | 400 | Brak wymaganego pola |
VAL_2003 | 400 | Nieobsługiwany kod języka |
PROC_3001 | 500 | Generowanie raportu nie powiodło się |
SRV_5001 | 500 | Wewnętrzny błąd serwera |
Endpoint Sandbox Family Health
Testuj integrację bez zużywania kredytów.
| API | Sandbox | Opis |
|---|---|---|
| Family Health | /api/v1/family-health/sandbox/analyze | Przykładowe dane raportu |
Endpointy referencyjne (Bez auth)
| Endpoint | Metoda | Opis |
|---|---|---|
/api/v1/family-health/supported-languages | GET | 100+ obsługiwanych języków |
/api/v1/family-health/condition-categories | GET | 9 kategorii chorób |
/api/v1/family-health/family-relations | GET | 14 relacji rodzinnych |
API Mapy Ciała
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.
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.
- 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
| Endpoint | Metoda | Opis | Auth |
|---|---|---|---|
/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 |
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
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
username | string | Tak | Twoja nazwa użytkownika API |
password | string | Tak | Twoje hasło API |
parameters | array | Tak | Obiekty wyników laboratoryjnych. Maks. 500. Każdy wymaga nazwy analitu i pola evaluation. |
interpretation | array | Nie | Interpretacja kliniczna, używana jako kontekst tylko przy włączonym ai_assist |
ai_assist | boolean | Nie | Pozwól modelowi umiejscowić markery nierozpoznane przez tabele aliasów (domyślnie: false) |
include_image | boolean | Nie | Zażądaj wygenerowanej ilustracji (domyślnie: false) |
image_wait | integer | Nie | Liczba sekund oczekiwania na świeżo wygenerowaną ilustrację, 0-30 (domyślnie: 0) |
Pola obiektu parametru
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
short_name | string | Tak* | Nazwa analitu wydrukowana przez laboratorium. *Wymagane jest co najmniej jedno z pól short_name, long_name, name, parameter_name lub parameter. |
long_name | string | Nie | Pełna nazwa analitu; poprawia dopasowanie skrótów |
evaluation | string | Nie | Jedna z wartości high, low, bad, slightly_high, slightly_low, normal. Na mapie pojawiają się tylko wartości oznaczone. |
result | string|number | Nie | Zmierzona wartość; używana do uszeregowania rysowanych obszarów |
unit | string | Nie | Jednostka wyniku, w dowolnym zapisie |
range_normal_min | number | Nie | Dolna granica zakresu referencyjnego |
range_normal_max | number | Nie | Górna granica zakresu referencyjnego |
category | string | Nie | Kategoria 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
| Pole | Typ | Opis |
|---|---|---|
body_map.spec | string | Kanoniczny 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[].key | string | Jeden z 13 kluczy obszarów |
body_map.regions[].level | integer | 2 = poza zakresem, 1 = graniczny |
body_map.regions[].drawn | boolean | Czy ten obszar jest zaznaczony na ilustracji. Legenda zawsze wymienia każdy obszar; rysowanych jest najwyżej sześć. |
body_map.regions[].markers | array | Nazwy markerów, które umieściły ten obszar na mapie, zaczynając od najgorszego |
body_map.unmapped | integer | Oznaczone markery, których nie udało się przypisać do żadnego obszaru |
body_map.image_url | string|null | Ilustracja z pamięci podręcznej. null, dopóki plik nie istnieje — użyj wtedy fallback_url. |
body_map.fallback_url | string | Podpisany adres URL generujący obraz. Zawsze obecny. Zwraca 503 z nagłówkiem Retry-After, dopóki ilustracja jest jeszcze tworzona. |
all_clear | boolean | true, gdy nic nie zostało oznaczone; obowiązuje wspólna sylwetka "bez odchyleń" |
mode | string | deterministic lub ai_assisted |
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.
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.
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
}
}
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łędu | HTTP | Znaczenie |
|---|---|---|
AUTH_1001 | 401 | Brak danych uwierzytelniających |
AUTH_1002 | 401 | Nieprawidłowa nazwa użytkownika lub hasło |
AUTH_1004 | 400 | Zniekształcone dane uwierzytelniające (zły typ lub nadmierny rozmiar) |
QUOTA_1101 | 403 | Niewystarczający limit API |
VAL_2001 | 400 | Brak pola parameters |
VAL_2002 | 400 | Nieprawidłowy format danych |
VAL_2005 | 400 | Pole parameters jest puste |
VAL_2006 | 400 | Więcej niż 500 parametrów |
VAL_2008 | 400 | Wiersz parametru jest zniekształcony lub bez nazwy |
RES_4004 | 422 | Istnieją oznaczone wyniki, ale żaden nie odwzorowuje się na obszar ciała |
RES_4005 | 503 | Silnik mapy ciała jest wyłączony w tym wdrożeniu |
API Biologicznego Wieku Krwi
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.
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.
- 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
| Endpoint | Metoda | Opis | Auth |
|---|---|---|---|
/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 |
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
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
username | string | Tak | Twoja nazwa użytkownika API |
password | string | Tak | Twoje hasło API |
parameters | array | Tak | Obiekty wyników laboratoryjnych. Maks. 500. Każdy wymaga nazwy analitu i wyniku. |
metadata | object | Nie | Nagłówek raportu. Zdecydowanie zalecany: PhenoAge zawiera człon wieku metrykalnego. Odczytuje patient_age, patient_sex, dob, lab_date. |
patient | object | Nie | {"age": 42, "gender": "female"} — używany, gdy metadane ich nie zawierają |
interpretation | array | Nie | Interpretacja kliniczna, używana wyłącznie jako kontekst dla modelu |
language | string | Nie | Język opcjonalnej notatki osobistej (domyślnie: en). Obsługuje ponad 100 języków. |
ai_assist | boolean | Nie | Pozwól modelowi rozpoznać nietypowe nazwy analitów (domyślnie: false) |
ai_estimate | boolean | Nie | Pozwól modelowi ulepszyć wiek obliczony częściowo (domyślnie: false) |
ai_note | boolean | Nie | Poproś 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.
| Marker | Typowa nazwa | Jednostka docelowa |
|---|---|---|
albumin | Albumina | g/L |
creatinine | Kreatynina | µmol/L |
glucose | Glukoza / Cukier we krwi na czczo | mmol/L |
crp | Białko C-reaktywne | mg/L |
lymph | Limfocyty | % |
mcv | Średnia objętość krwinki czerwonej | fL |
rdw | Rozkład objętości krwinek czerwonych | % |
alp | Fosfataza alkaliczna | U/L |
wbc | Liczba białych krwinek | 10⁹/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
| Pole | Typ | Opis |
|---|---|---|
summary.status | string | ok, missing_age, missing_markers, needs_markers lub unavailable |
summary.source | string | formula (wszystkie dziewięć markerów), partial (uzupełnione medianami) lub ai (oszacowanie modelu, tylko z ai_estimate) |
summary.chronological_age | integer|null | Wiek odczytany z metadanych lub obiektu pacjenta |
summary.biological_age | number|null | Obliczony wiek krwi, w latach |
summary.delta_years | number|null | Wiek biologiczny minus metrykalny. Wartość ujemna oznacza młodszy niż kalendarzowy. |
summary.markers_missing | array | Które z dziewięciu markerów PhenoAge nie zostały dostarczone przez panel |
blood_age.age.inputs | object | Faktycznie użyte przeliczone wartości, w jednostkach docelowych |
blood_age.age.labels | object | Nazwa każdego dopasowanego markera używana przez Twoje laboratorium |
blood_age.indices[].band | string | ok, borderline, high, low lub info |
blood_age.indices[].from | array | Wiersze laboratoryjne, z których wyprowadzono ten wskaźnik |
mode | string | deterministic lub ai_assisted |
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.
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.
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."
}
}
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łędu | HTTP | Znaczenie |
|---|---|---|
AUTH_1001 | 401 | Brak danych uwierzytelniających |
AUTH_1002 | 401 | Nieprawidłowa nazwa użytkownika lub hasło |
AUTH_1004 | 400 | Zniekształcone dane uwierzytelniające (zły typ lub nadmierny rozmiar) |
QUOTA_1101 | 403 | Niewystarczający limit API |
VAL_2001 | 400 | Brak pola parameters |
VAL_2002 | 400 | Nieprawidłowy format danych |
VAL_2003 | 400 | Nieobsługiwany kod języka |
VAL_2005 | 400 | Pole parameters jest puste |
VAL_2006 | 400 | Więcej niż 500 parametrów |
VAL_2007 | 400 | Nieprawidłowy obiekt patient |
VAL_2008 | 400 | Wiersz parametru jest zniekształcony lub bez nazwy |
VAL_2009 | 400 | Nieobsługiwana wartość patient.gender |
RES_4004 | 422 | Z tych parametrów nie da się nic obliczyć |
RES_4005 | 503 | Silnik wieku krwi jest wyłączony w tym wdrożeniu |
API Zdrowia DNA: interpretacja testu DNA, raport DNA + krew i doradca suplementacji
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.
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.
- Wszystkie popularne źródła DNA — Surowe pliki z 23andMe, AncestryDNA, MyHeritage, FTDNA i LivingDNA, pliki VCF, także spakowane jako
.ziplub.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,neutrallubwatchi 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=1i 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
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
| Endpoint | Metoda | Opis | Auth |
|---|---|---|---|
/api/v1/dna-interpretation/analyze | POST | Plik DNA, wklejone wiersze rsID lub strony raportu → kompleksowy raport zdrowia genetycznego | Wymagane (1 kredyt) |
/api/v1/dna-interpretation/validate | POST | Przetwórz przesłany plik i pokaż, co zostało znalezione, bez wywołania AI | Wymagane (Bezpłatne) |
/api/v1/dna-interpretation/sandbox | POST | Przykładowy raport genetyczny | Wymagane (Bezpłatne) |
/api/v1/dna-interpretation/info | GET | Akceptowane dane wejściowe, limity i języki raportów | Niewymagane |
/api/v1/dna-blood-report/analyze | POST | Raport DNA + zinterpretowane badanie krwi → łączony raport zdrowotny | Wymagane (1 kredyt) |
/api/v1/dna-blood-report/validate | POST | Sprawdź dane żądania bez wywołania AI | Wymagane (Bezpłatne) |
/api/v1/dna-blood-report/sandbox | POST | Przykładowy łączony raport | Wymagane (Bezpłatne) |
/api/v1/dna-blood-report/info | GET | Pola żądania i limity | Niewymagane |
/api/v1/dna-supplements/analyze | POST | Raport DNA + badanie krwi (opcjonalnie) + kwestionariusz → plan suplementacji | Wymagane (1 kredyt) |
/api/v1/dna-supplements/validate | POST | Sprawdź dane żądania i odpowiedzi bez wywołania AI | Wymagane (Bezpłatne) |
/api/v1/dna-supplements/sandbox | POST | Przykładowy plan suplementacji | Wymagane (Bezpłatne) |
/api/v1/dna-supplements/questionnaire | GET | 25 pytań i dozwolone odpowiedzi | Niewymagane |
/api/v1/dna-supplements/settings | GET PUT | Odczytaj lub zaktualizuj katalog produktów Twojej kliniki i ustawienia doradcy | Wymagane (Bezpłatne) |
/api/v1/dna-supplements/info | GET | Pola żądania i limity | Niewymagane |
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
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
username | string | Tak | Twoja nazwa użytkownika API (lub użyj uwierzytelniania HTTP Basic) |
password | string | Tak | Twoje hasło API |
file | file | Tak* | 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_text | string | Tak* | Wklejone wiersze genotypu (rsID, chromosom, pozycja, genotyp), do 2 000 000 znaków |
language | string | Nie | Kod języka raportu, np. en, de, ar (domyślnie: en). Zobacz sekcję Obsługiwane języki. |
patient | object | Nie | age, sex, diagnoses, comorbidities, medications, treatments, notes. W żądaniu multipart wyślij go jako ciąg JSON. |
source_label | string | Nie | Wł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
| Pole | Typ | Opis |
|---|---|---|
source | object | Co 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.level | string | typical, slightly_elevated, elevated lub high |
report.sections[] | array | Jeden wpis na każdy obszar zdrowia, z poziomem risk_level i listą ustaleń findings |
report.sections[].findings[] | array | gene, rsid, genotype, phenotype, risk_level (protective, typical, informational, slightly_elevated, elevated, high), evidence (established, probable, preliminary), explanation, recommendation |
report.pharmacogenomics[] | array | Przewidywany 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[] | array | carrier, not_detected, affected_pattern lub inconclusive; zawsze do potwierdzenia klinicznym badaniem genetycznym |
report.disease_risks[], nutrigenomics[], traits[] | array | Ryzyko 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[] | array | Badania uzupełniające z uzasadnieniem oraz ustalenia wymagające pilnej uwagi |
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": []}
}
}
Łą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
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
dna_report | object | Tak | Raport z /api/v1/dna-interpretation/analyze: data.report, cały obiekt data lub pełna odpowiedź |
blood_test | object|array | Tak | Zinterpretowane badanie krwi w postaci zwracanej przez API badań krwi (metadata, parameters, interpretation) albo sama lista do 500 parametrów z nazwą i polem result |
language | string | Nie | Kod języka raportu (domyślnie: en) |
patient | object | Nie | Te 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
| Pole | Typ | Opis |
|---|---|---|
report.overall_status.level | string | good, watch, attention lub urgent |
report.correlations[].concordance | string | confirms, contradicts, neutral lub watch |
report.risk_matrix[] | array | Dla każdego obszaru: genetic_risk, lab_status (normal, borderline, abnormal, not_measured) oraz łączna ocena |
report.priority_actions[] | array | priority (high, medium, low), działanie i jego uzasadnienie |
report.monitoring_plan[] | array | Który marker zbadać ponownie, kiedy i dlaczego |
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
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
dna_report | object | Tak | Raport z /api/v1/dna-interpretation/analyze |
answers | object | Tak | Odpowiedzi 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_test | object|array | Nie | Ten sam format co w raporcie DNA + krew |
use_clinic_catalogue | boolean | Nie | Zastosuj katalog produktów i ustawienia Twojej kliniki (domyślnie: true) |
language | string | Nie | Kod języka raportu (domyślnie: en) |
patient | object | Nie | Te 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
| Pole | Typ | Opis |
|---|---|---|
catalogue | object | Zastosowany tryb katalogu (prefer, only, off) i liczba dostępnych produktów kliniki |
report.recommendations[] | array | name, form, dose, timing, duration, priority, uzasadnienie rationale (genetyczne / laboratoryjne / z kwestionariusza), evidence, cautions, interactions i retest |
report.recommendations[].source | string | clinic_library dla produktu z Twojego katalogu (jego nazwa jest w polu product), w przeciwnym razie evidence_based |
report.uncovered_needs[] | array | W trybie „tylko produkty kliniki”: potrzeby, których Twój katalog nie pokrywa |
report.clinician_review_required[] | array | Wszystko, 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[] | array | Czego unikać, pokarmowe źródła każdego składnika odżywczego i kiedy powtórzyć badania |
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ę.
| Pole | Typ | Opis |
|---|---|---|
catalogue[] | array | Do 200 produktów: name, brand, form, dosage, category (vitamin, mineral, probiotic, omega, herbal, other), description |
settings.mode | string | prefer (produkty kliniki tam, gdzie pasują, w pozostałych przypadkach sugestie oparte na dowodach), only (wyłącznie produkty kliniki) lub off (katalog jest pomijany) |
settings.instructions | string | Własne instrukcje dla AI, do 1500 znaków. Zasady bezpieczeństwa zawsze mają pierwszeństwo. |
settings.max_items | integer | Maksymalna 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łędu | HTTP | Znaczenie |
|---|---|---|
AUTH_1001 | 401 | Brak danych uwierzytelniających |
AUTH_1002 | 401 | Nieprawidłowa nazwa użytkownika lub hasło |
QUOTA_1101 | 403 | Niewystarczający limit API |
VAL_2001 | 400 | Brak wymaganego pola: file lub genotype_text, dna_report, blood_test albo wymaganej odpowiedzi |
VAL_2002 | 400 | Nieczytelne dane genotypu, nieobsługiwany typ pliku, nieprawidłowy JSON lub nieprawidłowy dna_report |
VAL_2003 | 400 | Nieobsługiwany język raportu |
VAL_2006 | 400 | Przekroczony limit rozmiaru: wklejony tekst, parametry krwi (500) lub katalog (200 produktów) |
VAL_2007 | 400 | Nieprawidłowy obiekt patient |
VAL_2008 | 400 | Brak użytecznego parametru badania krwi (nazwy i wyniku) |
PROC_3003 | 500 | Nie udało się wygenerować lub zweryfikować odpowiedzi AI; spróbuj ponownie. Kredyt nie jest pobierany. |
RES_4005 | 503 | Moduły DNA są wyłączone w tym wdrożeniu |
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
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.
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.
- 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
| Endpoint | Metoda | Opis | Koszt |
|---|---|---|---|
/api/icr/v1/extract | POST | Ekstrakcja tekstu ICR | 0,5 kredytu |
/api/icr/v1/sandbox | POST | Test sandbox ICR | Bezpłatnie |
/api/icr/v1/kan | POST | Analiza dokumentów badań krwi | 0,5 kredytu |
/api/icr/v1/kan/sandbox | POST | Test sandbox badań krwi | Bezpłatnie |
/api/icr/info | GET | Dokumentacja i funkcje API | Bezpłatnie |
/api/icr/health | GET | Endpoint sprawdzania stanu | Bezpłatnie |
/api/icr/v1/quota | POST | Sprawdź pozostałe kredyty ICR | Bezpłatnie |
Ekstrahuje całą zawartość tekstową z przesłanych dokumentów za pomocą technologii ICR Kantesti.
Parametry Żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
username | string | Tak | Twoja nazwa użytkownika API |
password | string | Tak | Twoje hasło API |
file | file | Tak | Plik dokumentu (PDF, JPG, JPEG, PNG) |
language | string | Nie | Ję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.
| API | Punkt Końcowy Sandbox | Opis |
|---|---|---|
| ICR Ekstrakcja | /api/icr/v1/sandbox | Zwraca przykładowe dane ekstrakcji ICR |
| ICR Kan | /api/icr/v1/kan/sandbox | Zwraca przykładowe dane parametrów badania krwi |
Wydajność ICR vs OCR
| Metryka | Kantesti ICR | Tradycyjne OCR | Poprawa |
|---|---|---|---|
| Szybkość Przetwarzania | 1,2s średnia | 5,7s średnia | 79% szybszy |
| Dokładność Tekstu | 99,7% | 92,1% | +7,6% |
| Wykrywanie Tabel | 98,9% | 71,2% | +27,7% |
| Strukturalny Wynik | JSON z sekcjami, tabelami, metadanymi | Surowy tekst | Pełna struktura |
| Obsługa Wielojęzyczna | 100+ języków | 30-50 języków | 2x+ pokrycie |