Endpoints van de Bloedtest API
Volledige referentie voor alle Kantesti API endpoints met codevoorbeelden in meerdere programmeertalen.
Met trots kondigen we drie DNA-modules voor de Kantesti API aan. DNA-testinterpretatie zet ruwe DNA-data of een genetisch rapport om in een uitgebreid genetisch gezondheidsrapport, het DNA + Bloedgezondheidsrapport combineert dat rapport met een bloedtest, en de Supplementadviseur stelt een persoonlijk supplementenplan op met de eigen producten van uw kliniek. Lees de referentie van de DNA Health API.
https://app.aibloodtestinterpret.com
Changelog
Volg API-versies, updates en migratie-informatie. Gebruik de aanbevolen endpoints voor nieuwe integraties.
Alle drie de updates van 2026 zijn toegepast op elke hieronder vermelde API-versie. Versienummers en endpoint-paden zijn niet gewijzigd, dus er is geen migratie nodig.
- 8 september 2026 Update van het AI-model en platformbrede verbeteringen
- 21 juli 2026 Uitgebreide verbeteringen en bugfixes
- 8 mei 2026 Uitgebreide verbeteringen en bugfixes
Huidige Stabiele Endpoints
Deze endpoints worden aanbevolen voor productiegebruik en nieuwe integraties.
| API | Endpoint | Status |
|---|---|---|
| Bloedtest Analyse v12 | /api/v12/18-09-2026/analyze |
Aanbevolen Nieuw 18.09.2026 |
| Bloedtest Analyse (Gezondheidsscore) v12 | /api/v12/health-score/analyze |
Aanbevolen Nieuw 18.09.2026 |
| Lichaamskaart v1 | /api/v1/body-map/analyze |
Uitgebracht 18.09.2026 Nieuw |
| Biologische Bloedleeftijd v1 | /api/v1/blood-age/analyze |
Uitgebracht 18.09.2026 Nieuw |
| DNA-testinterpretatie v1 | /api/v1/dna-interpretation/analyze |
Uitgebracht 23.09.2026 Nieuw |
| DNA + Bloedgezondheidsrapport v1 | /api/v1/dna-blood-report/analyze |
Uitgebracht 23.09.2026 Nieuw |
| DNA-supplementadviseur v1 | /api/v1/dna-supplements/analyze |
Uitgebracht 23.09.2026 Nieuw |
| Bloedtest Analyse v11 | /api/v11/01-06-2025/analyze |
Stabiel Bijgewerkt 08.09.2026 |
| Bloedtest Analyse (Gezondheidsscore) v11 | /api/v11/health-score/analyze |
Stabiel Bijgewerkt 08.09.2026 |
| AI Voeding v1 | /api/v1/nutrition/diet-plan/analyze |
Stabiel Bijgewerkt 08.09.2026 |
| AI Bloedtest Vergelijking v1 | /api/v1/bloodtest/comparison/analyze |
Stabiel Bijgewerkt 08.09.2026 |
| Familiaire Gezondheidsrisicobeoordeling v1 | /api/v1/family-health/analyze |
Uitgebracht 23.03.2026 Bijgewerkt 08.09.2026 |
| ICR - Intelligente Tekenherkenning v1 | /api/icr/v1/extract |
Uitgebracht 14.02.2026 Bijgewerkt 08.09.2026 |
| ICR Kan - Bloedtest Extractie v1 | /api/icr/v1/kan |
Uitgebracht 14.02.2026 Bijgewerkt 08.09.2026 |
| Trendanalyse v1 | /api/v1/analytics/trends/analyze |
Stabiel Bijgewerkt 08.09.2026 |
Versiegeschiedenis
| Datum | Versie | Wijzigingen |
|---|---|---|
| 23 september 2026 | DNA-testinterpretatie v1, DNA + Bloedgezondheidsrapport v1, DNA-supplementadviseur v1 | DNA Health API uitgebracht — DNA-testinterpretatie van ruwe DNA-data (23andMe, AncestryDNA, MyHeritage, FTDNA, LivingDNA, VCF) of bestanden met een genetisch rapport aan de hand van 334 geselecteerde markers, een gecombineerd DNA + bloedgezondheidsrapport en een supplementadviseur met de eigen productcatalogus van de kliniek; asynchrone modus en sandbox |
| September 2026 | Bloedtest Analyse v12 | Bloedtest Analyse v12 uitgebracht — upload van meerdere bestanden, rapportage in 100 talen, optionele gezondheidsscore en analyse van ziekterisico's, sandbox-modus |
| September 2026 | Lichaamskaart v1, Biologische Bloedleeftijd v1 | Lichaamskaart API en Biologische Bloedleeftijd API uitgebracht — toewijzing op orgaanniveau van resultaten buiten de referentiewaarden over 13 anatomische regio's, en PhenoAge biologische leeftijd met tot 18 afgeleide klinische indices; beide met een deterministische modus en een sandbox |
| September 2026 | Alle versies | Update van het AI-model, vastgezet op de nieuwste modelversie; uitgebreide verbeteringen en bugfixes in alle API-versies; versienummers ongewijzigd; 98,89% nauwkeurigheid op examens van medische faculteiten (nieuwste open-source benchmark) |
| Juli 2026 | Alle versies | Uitgebreide verbeteringen en bugfixes toegepast op alle API-versies; versienummers ongewijzigd |
| Mei 2026 | Alle versies | Uitgebreide verbeteringen en bugfixes toegepast op alle API-versies; versienummers ongewijzigd |
| Maart 2026 | Family Health v1 | Family Health Risicobeoordeling API uitgebracht — AI-gestuurde erfelijke risicoanalyse, 100+ taalondersteuning, stamboomanalyse, preventief zorgplan, genetische screeningaanbevelingen, sandbox-modus |
| Februari 2026 | ICR v1 | ICR (Intelligente Tekenherkenning) API uitgebracht — 79% sneller dan OCR, gestructureerde JSON-uitvoer, documenttype-detectie, tabelextractie, Kan-bloedtest-integratie |
| December 2025 | Nieuwste | Verbeterde foutafhandeling, 98,7% nauwkeurigheid, ondersteuning voor 100 talen |
| Juni 2025 | v11 | Bloedtestanalyse v11, gezondheidsscore endpoint, multi-file ondersteuning |
| April 2025 | v9 | api_parameters_v9 model, verbeterde parameterextractie |
| Maart 2025 | v8 | Multi-file upload ondersteuning, batchverwerking |
Legacy Endpoints
Deze endpoints worden onderhouden voor achterwaartse compatibiliteit maar worden niet aanbevolen voor nieuwe integraties.
| Versie | Endpoint | Status |
|---|---|---|
| v10 | /api/v10/health-score/analyze |
Legacy |
| v9 | /api/v9/14-04-2025/analyze |
Legacy |
| v8 | /api/v8/31-03-2025/analyze |
Legacy |
| v6 | /api/v6-1/21-11-2024/analyze |
Legacy |
| v3 | /api/v3/10-10-2024/analyze |
Legacy |
Legacy endpoints worden onderhouden voor achterwaartse compatibiliteit maar worden niet aanbevolen voor nieuwe integraties. Migreer naar de huidige stabiele endpoints voor betere prestaties en ondersteuning.
Ondersteunde Talen Referentie
De Kantesti API ondersteunt 100 talen voor responslokalisatie. Gebruik de language parameter met een van de onderstaande ISO 639-1 codes. Indien niet gespecificeerd, worden antwoorden standaard in het Engels (en) geretourneerd.
Als er geen language parameter wordt opgegeven, retourneert de API antwoorden in het Engels (en).
Belangrijkste Wereldtalen
| Code | Taal | Eigen Naam |
|---|---|---|
en | Engels | English |
zh | Chinees | 中文 |
es | Spaans | Español |
ar | Arabisch | العربية |
hi | Hindi | हिन्दी |
pt | Portugees | Português |
ru | Russisch | Русский |
ja | Japans | 日本語 |
fr | Frans | Français |
de | Duits | Deutsch |
ko | Koreaans | 한국어 |
tr | Turks | Türkçe |
Europese Talen
| Code | Taal | Eigen Naam |
|---|---|---|
it | Italiaans | Italiano |
nl | Nederlands | Nederlands |
pl | Pools | Polski |
el | Grieks | Ελληνικά |
sv | Zweeds | Svenska |
no | Noors | Norsk |
da | Deens | Dansk |
fi | Fins | Suomi |
cs | Tsjechisch | Čeština |
uk | Oekraïens | Українська |
ro | Roemeens | Română |
hu | Hongaars | Magyar |
Midden-Oosten & Centraal-Aziatische Talen
| Code | Taal | Eigen Naam |
|---|---|---|
he | Hebreeuws | עברית |
fa | Perzisch | فارسی |
az | Azerbeidzjaans | Azərbaycan |
Zuid-Aziatische Talen
| Code | Taal | Eigen Naam |
|---|---|---|
bn | Bengaals | বাংলা |
ta | Tamil | தமிழ் |
ur | Urdu | اردو |
Zuidoost-Aziatische Talen
| Code | Taal | Eigen Naam |
|---|---|---|
id | Indonesisch | Bahasa Indonesia |
th | Thais | ไทย |
vi | Vietnamees | Tiếng Việt |
Afrikaanse Talen
| Code | Taal | Eigen Naam |
|---|---|---|
af | Afrikaans | Afrikaans |
sw | Swahili | Kiswahili |
Overige Talen
| Code | Taal | Eigen Naam |
|---|---|---|
la | Latijn | Latina |
eo | Esperanto | Esperanto |
yi | Jiddisch | ייִדיש |
ht | Haïtiaans Creools | Kreyòl Ayisyen |
mi | Maori | Te Reo Māori |
sm | Samoaans | Gagana Samoa |
to | Tongaans | Lea Faka-Tonga |
haw | Hawaïaans | ʻŌlelo Hawaiʻi |
Bloedtest Analyse API
Analyseer bloedtestafbeeldingen of PDF's met behulp van AI om parameters te extraheren en uitgebreide medische interpretaties te genereren.
Productie endpoint voor bloedtestanalyse. Upload een of meer bloedtestafbeeldingen of een PDF en ontvang gestructureerde parameters, metagegevens van patiënt en laboratorium, en een volledige klinische interpretatie in elk van de 100 ondersteunde talen. Verbruikt 1 credit per verzoek.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
file | file | Ja | Bloedtest afbeelding (PNG, JPG, WEBP) of PDF. Max 20MB. Herhaal het veld om meerdere afbeeldingen te sturen. |
language | string | Nee | Respons taalcode (standaard: en). Zie ondersteunde talen. |
pdf_password | string | Nee | Wachtwoord voor versleutelde PDF's |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v12/18-09-2026/analyze" \
-F "username=UW_GEBRUIKERSNAAM" \
-F "password=UW_WACHTWOORD" \
-F "language=nl" \
-F "[email protected]"
Python Voorbeeld
import requests
def analyze_blood_test(file_paths, username, password, language="nl"):
"""
Analyseer een bloedtest met Kantesti Bloedtest Analyse v12.
Geef een of meer afbeeldingen mee, of een enkele 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()
# Voorbeeldgebruik
result = analyze_blood_test(
file_paths=["bloedtest.pdf"],
username="gebruikersnaam",
password="wachtwoord",
language="nl"
)
print(f"Status: {result['status']}")
for param in result["data"]["parameters"]:
print(f" {param['short_name']}: {param['result']} {param['unit']} ({param['evaluation']})")
Voorbeeldrespons
{
"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"
}
Productie endpoint met uitgebreide berekening van de gezondheidsscore en analyse van ziekterisico's. Neemt hetzelfde verzoek aan als /api/v12/18-09-2026/analyze en voegt de onderstaande velden toe aan de respons. Verbruikt 1 credit per verzoek.
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v12/health-score/analyze" \
-F "username=UW_GEBRUIKERSNAAM" \
-F "password=UW_WACHTWOORD" \
-F "language=nl" \
-F "[email protected]"
Aanvullende responsvelden
{
"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"}
]
}
Het veld score_interpretation gebruikt gestandaardiseerde waarden. Zie gezondheidsscore waarden.
Productie endpoint voor bloedtestanalyse. Verbruikt 1 credit per verzoek.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
file | file | Ja | Bloedtest afbeelding (PNG, JPG, WEBP) of PDF. Max 20MB. |
language | string | Nee | Respons taalcode (standaard: en). Ondersteunt 100+ talen. |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze" \
-F "username=UW_GEBRUIKERSNAAM" \
-F "password=UW_WACHTWOORD" \
-F "language=nl" \
-F "[email protected]"
Python Voorbeeld
import requests
def analyseer_bloedtest(bestandspad: str, gebruikersnaam: str, wachtwoord: str, taal: str = "nl"):
"""
Analyseer een bloedtest bestand met de Kantesti API.
"""
url = "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze"
with open(bestandspad, "rb") as f:
bestanden = {"file": (bestandspad, f, "application/pdf")}
gegevens = {
"username": gebruikersnaam,
"password": wachtwoord,
"language": taal
}
respons = requests.post(url, files=bestanden, data=gegevens, timeout=120)
respons.raise_for_status()
return respons.json()
# Voorbeeldgebruik
if __name__ == "__main__":
resultaat = analyseer_bloedtest(
bestandspad="bloedtest.pdf",
gebruikersnaam="uw_gebruikersnaam",
wachtwoord="uw_wachtwoord",
taal="nl"
)
print(f"Status: {resultaat['status']}")
print(f"Gevonden parameters: {len(resultaat['data']['parameters'])}")
Referentie responsvelden
Hoofdniveau
| Veld | Type | Beschrijving |
|---|---|---|
status | string | "success" of "error" |
data | object | Bevat alle analyseresultaten |
timestamp | string | ISO 8601 tijdstempel van de respons |
api_version | string | Gebruikte API-versie |
data.metadata Object
| Veld | Type | Beschrijving |
|---|---|---|
lab_date | string | Datum bloedafname (JJJJ-MM-DD) |
results_date | string | Datum uitgifte resultaten (JJJJ-MM-DD) |
lab_name | string | Naam van het laboratorium |
lab_city | string | Stad van het laboratorium |
lab_country | string | Land van het laboratorium |
patient_name | string | Volledige naam van de patiënt (alleen metadata, niet verzonden naar interpretatie) |
patient_age | string | Leeftijd van de patiënt |
patient_sex | string | "male", "female" of "other" |
data.parameters Array Element
| Veld | Type | Beschrijving |
|---|---|---|
category | string | Parametercategorie (bijv. "Volledig bloedbeeld", "Lipidenprofiel") |
long_name | string | Volledige parameternaam |
short_name | string | Afgekorte parameternaam |
result | string | Gemeten waarde |
unit | string | Meeteenheid |
range_min | string | Minimale referentiewaarde |
range_max | string | Maximale referentiewaarde |
evaluation | string | Resultaatstatus. Zie evaluatiewaarden |
data.interpretation Array Element
| Veld | Type | Beschrijving |
|---|---|---|
title | string | Sectietitel (bijv. "Algemene gezondheidsbeoordeling") |
content | string | AI-gegenereerde medische interpretatie |
Volledig responsvoorbeeld
{
"status": "success",
"data": {
"metadata": {
"patient_name": "Anna Müller",
"lab_name": "MedLab Diagnostics International",
"lab_city": "Amsterdam",
"lab_country": "Nederland",
"lab_date": "2025-12-15",
"results_date": "2025-12-16",
"patient_age": "38",
"patient_sex": "female"
},
"parameters": [
{
"short_name": "WBC",
"long_name": "Witte bloedceltelling",
"category": "Volledig bloedbeeld",
"result": "6.8",
"unit": "10^9/L",
"evaluation": "normal",
"range_min": "4.0",
"range_max": "11.0",
"short_description": "Meet het totale aantal witte bloedcellen.",
"long_description": "Witte bloedcellen (leukocyten) zijn essentiële componenten van het immuunsysteem..."
},
{
"short_name": "RBC",
"long_name": "Rode bloedceltelling",
"category": "Volledig bloedbeeld",
"result": "4.52",
"unit": "10^12/L",
"evaluation": "normal",
"range_min": "3.8",
"range_max": "5.8",
"short_description": "Meet het totale aantal rode bloedcellen.",
"long_description": "Rode bloedcellen (erytrocyten) transporteren zuurstof van de longen naar de weefsels..."
},
{
"short_name": "HGB",
"long_name": "Hemoglobine",
"category": "Volledig bloedbeeld",
"result": "13.2",
"unit": "g/dL",
"evaluation": "normal",
"range_min": "11.5",
"range_max": "16.0",
"short_description": "Eiwit in rode bloedcellen dat zuurstof transporteert.",
"long_description": "Hemoglobine is het ijzerbevattende eiwit in rode bloedcellen verantwoordelijk voor zuurstoftransport..."
},
{
"short_name": "GLU",
"long_name": "Nuchtere glucose",
"category": "Metabolisch panel",
"result": "102",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "70",
"range_max": "140",
"short_description": "Meet het bloedsuikerniveau na vasten.",
"long_description": "Nuchtere glucose is een belangrijke indicator van hoe het lichaam suiker verwerkt..."
},
{
"short_name": "TC",
"long_name": "Totaal cholesterol",
"category": "Lipidenprofiel",
"result": "218",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "0",
"range_max": "300",
"short_description": "Meet het totale cholesterol in het bloed.",
"long_description": "Totaal cholesterol is de som van HDL-, LDL- en VLDL-cholesterol..."
},
{
"short_name": "LDL",
"long_name": "LDL-cholesterol",
"category": "Lipidenprofiel",
"result": "142",
"unit": "mg/dL",
"evaluation": "high",
"range_min": "0",
"range_max": "200",
"short_description": "Meet het niveau van 'slecht' cholesterol.",
"long_description": "LDL-cholesterol kan zich ophopen in de slagaderwanden..."
}
],
"interpretation": [
{
"title": "Algemene gezondheidsbeoordeling",
"shortcode": "overall_health_assessment",
"subsections": [
{
"subtitle": "Uitgebreid overzicht",
"items": [
{"item": "De patiënt vertoont over het algemeen gezonde hematologische parameters met alle bloedbeeldwaarden binnen de normale grenzen."},
{"item": "Het lipidenprofiel toont gebieden die aandacht vereisen, met name de LDL-cholesterolniveaus."}
]
}
]
},
{
"title": "Aanbevelingen",
"shortcode": "recommendations",
"subsections": [
{
"subtitle": "Leefstijlaanpassingen",
"items": [
{"item": "Verhoog aerobe fysieke activiteit tot minimaal 150 minuten per week."},
{"item": "Adopteer een mediterraan dieet rijk aan groenten, fruit en gezonde vetten."}
]
}
]
}
]
},
"api_version": "v11",
"timestamp": "2025-12-16T14:32:18Z"
}
Het veld evaluation gebruikt gestandaardiseerde waarden. Zie evaluatiewaarden.
AI Voeding met Supplementen
Genereer gepersonaliseerde voedingsplannen, dieetaanbevelingen en supplementsuggesties op basis van bloedtestanalyse.
Genereert uitgebreide voedings- en supplementaanbevelingen op basis van bloedtestparameters en patiëntprofiel.
Patiënt Object Schema
Gedetailleerde beschrijving van alle beschikbare velden voor het patiënt object:
| Veld | Type | Vereist | Standaard | Beschrijving |
|---|---|---|---|---|
age |
integer | Ja | - | Leeftijd patiënt in jaren (18-120) |
gender |
string | Ja | - | Geslacht patiënt. Zie waarden |
weight |
number | Nee | null | Gewicht in kg (voor calorieberekeningen) |
height |
number | Nee | null | Lengte in cm (voor BMI-berekeningen) |
conditions |
array | Nee | [] | Medische condities. Zie waarden |
allergies |
array | Nee | [] | Voedselallergieën. Zie waarden |
dietary_preferences |
array | Nee | [] | Dieetvoorkeuren. Zie waarden |
activity_level |
string | Nee | "moderate" | Fysiek activiteitsniveau. Zie waarden |
dietary_restrictions |
array | Nee | [] | Dieetbeperkingen (bijv: glutenvrij, lactosevrij) |
liked_foods |
array | Nee | [] | Favoriete voedingsmiddelen voor planpersonalisatie |
disliked_foods |
array | Nee | [] | Voedingsmiddelen om te vermijden in aanbevelingen |
meal_frequency |
integer | Nee | 3 | Aantal maaltijden per dag (1-6) |
budget |
string | Nee | "moderate" | Budgetniveau: "low", "moderate", "high" |
medications |
array | Nee | [] | Huidige medicatie (voor interacties) |
Responsvelden referentie
Object nutrition_plan.educational_insights
| Veld | Type | Beschrijving |
|---|---|---|
blood_marker_education |
array | Educatieve inhoud over geanalyseerde bloedmarkers |
nutrition_principles |
array | Algemene voedingsprincipes voor de patiënt |
Array-element blood_marker_education
| Veld | Type | Beschrijving |
|---|---|---|
marker |
string | Naam van de bloedmarker (bijv: "Vitamine D", "Cholesterol") |
explanation |
string | Educatieve uitleg over het belang van de marker |
normal_range |
string | Normaal waardenbereik voor de marker |
Array-element food_recommendations.power_foods
| Veld | Type | Beschrijving |
|---|---|---|
food |
string | Naam van het aanbevolen voedingsmiddel |
nutrients |
array | Lijst van belangrijke voedingsstoffen |
serving |
string | Aanbevolen portiegrootte |
why |
string | Uitleg van gezondheidsvoordelen |
Array-element supplement_recommendations
| Veld | Type | Beschrijving |
|---|---|---|
supplement |
string | Naam van het supplement |
dosage |
string | Aanbevolen dagelijkse dosering |
timing |
string | Beste moment voor inname (bijv: "Bij het ontbijt") |
duration |
string | Aanbevolen duur van supplementatie |
reason |
string | Onderbouwing op basis van testresultaten |
Volledig cURL voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/nutrition/diet-plan/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "uw_gebruikersnaam",
"password": "uw_wachtwoord",
"language": "nl",
"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"]
}'
Volledige respons
{
"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": "Vitamine D",
"explanation": "Vitamine D is essentieel voor botgezondheid, immuunfunctie en stemmingsregulatie. Uw niveau van 18 ng/mL duidt op een tekort dat de calciumopname en algemene gezondheid kan beïnvloeden.",
"normal_range": "30-50 ng/mL"
},
{
"marker": "LDL-cholesterol",
"explanation": "LDL-cholesterol, vaak 'slecht cholesterol' genoemd, kan zich ophopen in de slagaderwanden. Uw niveau van 140 mg/dL is verhoogd en kan het cardiovasculaire risico verhogen.",
"normal_range": "< 100 mg/dL"
}
],
"nutrition_principles": [
"Prioriteit voor omega-3 vetzuren voor hartgezondheid",
"Verhoog oplosbare vezels om LDL-cholesterol te verlagen",
"Neem voedingsmiddelen rijk aan vitamine D en zonlicht op"
]
}
},
"food_recommendations": {
"power_foods": [
{
"food": "Wilde zalm",
"nutrients": ["Omega-3", "Vitamine D", "Eiwitten"],
"serving": "150g, 3 keer per week",
"why": "Uitstekende bron van omega-3 en natuurlijke vitamine D voor hart- en botgezondheid"
},
{
"food": "Volkoren havermout",
"nutrients": ["Bèta-glucaan", "Vezels", "Magnesium"],
"serving": "50g per dag bij het ontbijt",
"why": "Oplosbare vezels in havermout helpen de opname van LDL-cholesterol te verminderen"
},
{
"food": "Extra vierge olijfolie",
"nutrients": ["Enkelvoudig onverzadigde vetten", "Polyfenolen", "Vitamine E"],
"serving": "2-3 eetlepels per dag",
"why": "Gezonde mediterrane vetten verbeteren het lipidenprofiel en beschermen het hart"
},
{
"food": "Spinazie",
"nutrients": ["IJzer", "Foliumzuur", "Vitamine K"],
"serving": "100g per dag, rauw of gekookt",
"why": "Rijk aan ijzer en antioxidanten voor energie en cardiovasculaire gezondheid"
}
]
},
"supplement_recommendations": [
{
"supplement": "Vitamine D3",
"dosage": "2000-4000 IE per dag",
"timing": "Bij het ontbijt (maaltijd met vetten)",
"duration": "3-6 maanden, daarna opnieuw testen",
"reason": "Uw niveau van 18 ng/mL ligt onder het optimale van 30-50 ng/mL"
},
{
"supplement": "Omega-3 (EPA/DHA)",
"dosage": "1000-2000mg EPA+DHA per dag",
"timing": "Bij de hoofdmaaltijden",
"duration": "Doorlopend voor hartgezondheid",
"reason": "Helpt triglyceriden te verlagen en verbetert de HDL/LDL-verhouding"
},
{
"supplement": "Co-enzym Q10",
"dosage": "100mg per dag",
"timing": "Bij de ochtendmaaltijd",
"duration": "Minimaal 3 maanden",
"reason": "Ondersteunt hartgezondheid, bijzonder belangrijk bij hypertensie"
}
]
},
"api_version": "v1",
"timestamp": "2025-12-22T10:30:00Z"
}
Voor een volledige lijst van alle mogelijke responswaarden, zie de sectie Uitvoer trefwoorden.
Sandbox Endpoints
Sandbox endpoints retourneren realistische testgegevens zonder API-quota te verbruiken. Gebruik ze voor ontwikkeling en integratietesten.
- Geen quota verbruik
- Retourneert realistische testgegevens
- Zelfde verzoekformaat als productie
- Test uw integratie voor lancering
- Beschikbaar voor alle API-versies
| API | Sandbox Endpoint |
|---|---|
| Bloedtest v12 | /api/v12/18-09-2026/sandbox |
| Bloedtest v12-health | /api/v12/health-score/sandbox |
| Lichaamskaart | /api/v1/body-map/sandbox |
| Biologische bloedleeftijd | /api/v1/blood-age/sandbox |
| DNA-testinterpretatie | /api/v1/dna-interpretation/sandbox |
| DNA + Bloedgezondheidsrapport | /api/v1/dna-blood-report/sandbox |
| DNA-supplementadviseur | /api/v1/dna-supplements/sandbox |
| Bloedtest v11 | /api/v11/01-06-2025/sandbox |
| Bloedtest v11-health | /api/v11/health-score/sandbox |
| AI Voeding | /api/v1/nutrition/diet-plan/sandbox |
| Test vergelijking | /api/v1/bloodtest/comparison/sandbox |
| Trendanalyse | /api/v1/analytics/trends/sandbox |
| ICR Extractie | /api/icr/v1/sandbox |
| ICR Kan Bloedtest | /api/icr/v1/kan/sandbox |
Kies de juiste API voor uw gebruikssituatie:
| Functie | AI Bloedtest Vergelijking | Trendanalyse |
|---|---|---|
| Primaire Focus | AI narratieve vergelijking | Statistische trendanalyse |
| AI Verwerking | Volledige AI narratief | AI-verbeterd + statistieken |
| Uitvoertype | Narratieve samenvattingen | Grafieken, statistieken, patronen |
| Ideaal Voor | Wat veranderde tussen tests | Langetermijn parameter tracking |
| Min Tests | 2 | 2 |
| Max Tests | 20 | 50 |
Trendanalyse API
Analyseer langetermijntrends in bloedtestparameters over meerdere tests. Identificeer patronen, bereken statistieken en genereer AI-gestuurde inzichten voor gezondheidsmonitoring in de tijd.
Voer trendanalyse uit op 2-50 bloedtests om langetermijnpatronen en gezondheidsveranderingen te identificeren. Verbruikt 1 credit per verzoek.
- Minimum: 2 bloedtests vereist
- Maximum: 50 bloedtests per verzoek
- Elke test moet lab_date OF results_date hebben
- Gebruik consistente parameternamen voor nauwkeurige tracking
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
blood_tests | array | Ja | Array van bloedtestobjecten (min: 2, max: 50) |
language | string | Nee | Respons taalcode (standaard: en) |
analysis_type | string | Nee | Type analyse. Zie waarden. Standaard: "comprehensive" |
analysis_options | object | Nee | Analyseconfiguratie-opties |
analysis_options Object
Optionele configuratie-opties voor het aanpassen van de analyse-uitvoer:
| Veld | Type | Standaard | Beschrijving |
|---|---|---|---|
include_predictions | boolean | true | AI-trendvoorspellingen opnemen |
include_statistics | boolean | true | Statistische analyse opnemen |
include_charts | boolean | true | Grafiekconfiguratie opnemen |
blood_tests Array Structuur
Elk bloedtest object in de blood_tests array moet de volgende structuur hebben:
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
test_date | string | Ja | Datum bloedtest (JJJJ-MM-DD) |
parameters | array | Ja | Array van bloedparameters met short_name, result, unit |
blood_tests[].parameters Structuur
Elk parameter object in de parameters array moet de volgende velden bevatten:
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
short_name | string | Ja | Standaard parameternaam (bijv. "CHOL", "GLU", "HbA1c") |
result | number | Ja | Gemeten waarde van de parameter |
unit | string | Ja | Meeteenheid (bijv. "mg/dL", "%", "mmol/L") |
Referentie responsvelden
data.trend_summary Object
| Veld | Type | Beschrijving |
|---|---|---|
total_tests | integer | Aantal geanalyseerde tests |
date_range | object | Start- en einddatum van analysebereik |
parameters_tracked | integer | Aantal getrackte parameters |
overall_assessment | string | Algehele trendbeoordeling. Zie waarden |
data.parameter_trends Array Element
| Veld | Type | Beschrijving |
|---|---|---|
parameter_name | string | Naam bloedparameter |
trend_direction | string | Richting trend. Zie waarden |
trend_strength | string | Sterkte trend. Zie waarden |
statistical_data | object | Gemiddelde, mediaan, min, max, standaardafwijking |
chart_data | array | Datapunten voor visualisatie (datum, waarde) |
interpretation | string | AI-gegenereerde trendinterpretatie |
data.insights Object
| Veld | Type | Beschrijving |
|---|---|---|
positive_trends | array | Parameters die verbeteren |
negative_trends | array | Parameters die verslechteren |
stable_parameters | array | Parameters die stabiel blijven |
recommendations | array | AI-aanbevelingen op basis van trends |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "uw_gebruikersnaam",
"password": "uw_wachtwoord",
"language": "nl",
"analysis_type": "comprehensive",
"blood_tests": [
{
"test_date": "2024-01-15",
"parameters": [
{"short_name": "GLU", "result": 118, "unit": "mg/dL"},
{"short_name": "HbA1c", "result": 6.2, "unit": "%"},
{"short_name": "CHOL", "result": 235, "unit": "mg/dL"},
{"short_name": "LDL", "result": 155, "unit": "mg/dL"},
{"short_name": "HDL", "result": 38, "unit": "mg/dL"}
]
},
{
"test_date": "2024-05-18",
"parameters": [
{"short_name": "GLU", "result": 108, "unit": "mg/dL"},
{"short_name": "HbA1c", "result": 5.9, "unit": "%"},
{"short_name": "CHOL", "result": 215, "unit": "mg/dL"},
{"short_name": "LDL", "result": 140, "unit": "mg/dL"},
{"short_name": "HDL", "result": 42, "unit": "mg/dL"}
]
},
{
"test_date": "2024-08-20",
"parameters": [
{"short_name": "GLU", "result": 102, "unit": "mg/dL"},
{"short_name": "HbA1c", "result": 5.6, "unit": "%"},
{"short_name": "CHOL", "result": 200, "unit": "mg/dL"},
{"short_name": "LDL", "result": 128, "unit": "mg/dL"},
{"short_name": "HDL", "result": 48, "unit": "mg/dL"}
]
},
{
"test_date": "2024-12-18",
"parameters": [
{"short_name": "GLU", "result": 95, "unit": "mg/dL"},
{"short_name": "HbA1c", "result": 5.4, "unit": "%"},
{"short_name": "CHOL", "result": 188, "unit": "mg/dL"},
{"short_name": "LDL", "result": 115, "unit": "mg/dL"},
{"short_name": "HDL", "result": 52, "unit": "mg/dL"}
]
}
]
}'
Python Voorbeeld
import requests
def analyseer_trends(bloedtests: list, gebruikersnaam: str, wachtwoord: str, taal: str = "nl"):
"""
Voer trendanalyse uit op meerdere bloedtests.
"""
url = "https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze"
payload = {
"username": gebruikersnaam,
"password": wachtwoord,
"language": taal,
"analysis_type": "comprehensive",
"blood_tests": bloedtests
}
respons = requests.post(url, json=payload, timeout=120)
respons.raise_for_status()
return respons.json()
# Voorbeeldgebruik
if __name__ == "__main__":
bloedtests = [
{
"test_date": "2025-01-15",
"parameters": [
{"short_name": "CHOL", "result": 220, "unit": "mg/dL"},
{"short_name": "LDL", "result": 145, "unit": "mg/dL"}
]
},
{
"test_date": "2025-06-15",
"parameters": [
{"short_name": "CHOL", "result": 205, "unit": "mg/dL"},
{"short_name": "LDL", "result": 135, "unit": "mg/dL"}
]
}
]
resultaat = analyseer_trends(
bloedtests=bloedtests,
gebruikersnaam="uw_gebruikersnaam",
wachtwoord="uw_wachtwoord",
taal="nl"
)
print(f"Totaal tests: {resultaat['data']['trend_summary']['total_tests']}")
print(f"Algehele beoordeling: {resultaat['data']['trend_summary']['overall_assessment']}")
Bloedtest Vergelijking API
Vergelijk 2-20 bloedtests met behulp van AI om veranderingen te identificeren, parameterbewegingen te begrijpen en narratieve samenvattingen te genereren van wat er is veranderd tussen tests.
Genereer AI-gestuurde narratieve vergelijkingen tussen bloedtests. Verbruikt 1 credit per verzoek.
- Minimum: 2 bloedtests vereist
- Maximum: 20 bloedtests ondersteund
- Focus: AI narratieve interpretatie van veranderingen
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
blood_tests | array | Ja | Array van bloedtestobjecten (min: 2, max: 20) |
language | string | Nee | Respons taalcode (standaard: en) |
blood_tests Array Structuur
Elk bloedtest object in de blood_tests array moet de volgende structuur hebben:
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
test_date | string | Ja | Datum bloedtest (JJJJ-MM-DD) |
parameters | array | Ja | Array van bloedparameters met short_name, result, unit |
Referentie responsvelden
data.comparison_summary Object
| Veld | Type | Beschrijving |
|---|---|---|
total_tests_compared | integer | Aantal vergeleken tests |
date_range | object | Start- en einddatum van vergelijking |
overall_change | string | Algehele veranderingsbeoordeling. Zie waarden |
parameters_analyzed | integer | Aantal geanalyseerde parameters |
data.parameter_comparisons Array Element
| Veld | Type | Beschrijving |
|---|---|---|
parameter_name | string | Naam bloedparameter |
initial_value | object | Startwaarde (test_date, result, unit, evaluation) |
final_value | object | Eindwaarde (test_date, result, unit, evaluation) |
change_percent | number | Procentuele verandering tussen eerste en laatste test |
change_direction | string | Richting van verandering. Zie waarden |
assessment | string | Of verandering positief of negatief is. Zie waarden |
narrative | string | AI-gegenereerde verhaaluitleg van verandering |
data.ai_interpretation Object
| Veld | Type | Beschrijving |
|---|---|---|
key_improvements | array | Lijst van parameters met significante verbetering |
areas_of_concern | array | Parameters die verslechtering tonen |
stable_parameters | array | Parameters met minimale verandering |
overall_summary | string | AI-gegenereerde algehele narratieve samenvatting |
recommendations | array | Aanbevelingen op basis van geïdentificeerde veranderingen |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/bloodtest/comparison/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "uw_gebruikersnaam",
"password": "uw_wachtwoord",
"language": "nl",
"blood_tests": [
{
"test_date": "2025-01-15",
"parameters": [
{"short_name": "CHOL", "result": 220, "unit": "mg/dL"},
{"short_name": "LDL", "result": 145, "unit": "mg/dL"},
{"short_name": "HDL", "result": 42, "unit": "mg/dL"},
{"short_name": "TRIG", "result": 165, "unit": "mg/dL"}
]
},
{
"test_date": "2025-12-15",
"parameters": [
{"short_name": "CHOL", "result": 195, "unit": "mg/dL"},
{"short_name": "LDL", "result": 125, "unit": "mg/dL"},
{"short_name": "HDL", "result": 52, "unit": "mg/dL"},
{"short_name": "TRIG", "result": 140, "unit": "mg/dL"}
]
}
]
}'
Python Voorbeeld
import requests
def vergelijk_bloedtests(bloedtests: list, gebruikersnaam: str, wachtwoord: str, taal: str = "nl"):
"""
Vergelijk bloedtests met behulp van AI-narratieve analyse.
"""
url = "https://app.aibloodtestinterpret.com/api/v1/bloodtest/comparison/analyze"
payload = {
"username": gebruikersnaam,
"password": wachtwoord,
"language": taal,
"blood_tests": bloedtests
}
respons = requests.post(url, json=payload, timeout=120)
respons.raise_for_status()
return respons.json()
# Voorbeeldgebruik
if __name__ == "__main__":
bloedtests = [
{
"test_date": "2025-01-15",
"parameters": [
{"short_name": "CHOL", "result": 220, "unit": "mg/dL"},
{"short_name": "LDL", "result": 145, "unit": "mg/dL"}
]
},
{
"test_date": "2025-12-15",
"parameters": [
{"short_name": "CHOL", "result": 195, "unit": "mg/dL"},
{"short_name": "LDL", "result": 125, "unit": "mg/dL"}
]
}
]
resultaat = vergelijk_bloedtests(
bloedtests=bloedtests,
gebruikersnaam="uw_gebruikersnaam",
wachtwoord="uw_wachtwoord",
taal="nl"
)
print(f"Totaal vergeleken tests: {resultaat['data']['comparison_summary']['total_tests_compared']}")
print(f"Algehele verandering: {resultaat['data']['comparison_summary']['overall_change']}")
Trefwoord Referentie
Volledige referentie voor alle invoertrefwoordwaarden die worden gebruikt in Kantesti API-endpoints. Gebruik deze exacte waarden bij API-verzoeken.
analysis_type Trendanalyse API
Specificeert het type trendanalyse dat moet worden uitgevoerd.
| Waarde | Standaard | Beschrijving |
|---|---|---|
comprehensive | ✓ | Volledige analyse met statistieken, grafieken en AI-interpretatie |
statistical | Alleen statistische analyse | |
summary | Alleen samenvatting op hoog niveau |
health_goals Voedings-API
Gezondheidsdoelen voor gepersonaliseerde voedingsaanbevelingen. Meerdere waarden kunnen als array worden opgegeven.
| Waarde | Beschrijving |
|---|---|
maintain | Huidige gezondheid behouden (standaard) |
improve_energy | Focus op energieniveaus |
weight_management | Gezond gewichtsbeheer |
heart_health | Cardiovasculaire gezondheid |
immune_support | Ondersteuning immuunsysteem |
digestive_health | Spijsverteringswelzijn |
bone_health | Botgezondheid |
mental_clarity | Cognitieve functie |
dietary_restrictions Voedings-API
Dieetbeperkingen en allergieën. Meerdere waarden kunnen als array worden opgegeven. Vrije tekst wordt ook geaccepteerd voor aangepaste beperkingen.
| Waarde | Beschrijving |
|---|---|
low_sodium | Verminderde natriuminname |
low_sugar | Verminderde suikerinname |
low_fat | Verminderde vetinname |
gluten_free | Geen gluten |
dairy_free | Geen zuivel |
nut_free | Geen noten |
soy_free | Geen soja |
egg_free | Geen eieren |
halal | Halal-conform |
kosher | Koosjer-conform |
Vrije tekst wordt ook geaccepteerd voor aangepaste dieetbeperkingen die hierboven niet worden vermeld.
dietary_preferences Voedings-API
Dieetlevensstijlvoorkeuren voor maaltijdplanning.
| Waarde | Beschrijving |
|---|---|
omnivore | Geen beperkingen (standaard) |
vegetarian | Geen vlees |
vegan | Geen dierlijke producten |
pescatarian | Vegetarisch + vis |
keto | Ketogeen dieet |
paleo | Paleolithisch dieet |
mediterranean | Mediterraan dieet |
activity_level Voedings-API
Fysiek activiteitsniveau voor calorische en voedingsberekeningen.
| Waarde | Beschrijving |
|---|---|
sedentary | Weinig of geen beweging |
light | Lichte beweging 1-3 dagen/week |
moderate | Matige beweging 3-5 dagen/week (standaard) |
active | Intensieve beweging 6-7 dagen/week |
very_active | Zeer intensieve beweging of fysiek werk |
budget Voedings-API
Budgetniveau voor voedings- en supplementaanbevelingen.
| Waarde | Beschrijving |
|---|---|
low | Budgetvriendelijke opties |
moderate | Evenwichtige opties (standaard) |
high | Premium opties |
gender Alle API's
Geslacht van de patiënt voor gepersonaliseerde referentiebereiken en aanbevelingen.
| Waarde | Beschrijving |
|---|---|
male | Mannelijke patiënt |
female | Vrouwelijke patiënt |
other | Anders of niet gespecificeerd |
Uitvoer trefwoorden
De volgende trefwoorden verschijnen in API-antwoorden. Begrip van deze waarden helpt u resultaten correct te interpreteren en weer te geven.
evaluation Bloedtest- & Vergelijkings-APIs
Beoordelingsstatus van parameter die aangeeft hoe het resultaat zich verhoudt tot referentiebereiken.
| Waarde | Beschrijving |
|---|---|
normal | Binnen normaal referentiebereik |
low | Onder normaal bereik |
high | Boven normaal bereik |
critical_low | Kritiek laag (onmiddellijke aandacht vereist) |
critical_high | Kritiek hoog (onmiddellijke aandacht vereist) |
borderline_low | Licht onder normaal bereik |
borderline_high | Licht boven normaal bereik |
trend_assessment Vergelijkings- & Trend-APIs
Algehele beoordeling van parametertrends tussen tests.
| Waarde | Beschrijving |
|---|---|
positive | Verbeterd (richting normaal bereik) |
negative | Verslechterd (weg van normaal bereik) |
stable | Relatief onveranderd tussen tests |
improving | Algehele verbeteringstrend |
worsening | Algehele verslechteringstrend |
trend_direction Trendanalyse-API
Richting van parameterwaardeveranderingen in de tijd.
| Waarde | Beschrijving |
|---|---|
upward | Waarden stijgen in de tijd |
downward | Waarden dalen in de tijd |
stable | Minimale verandering in de tijd |
trend_strength Trendanalyse-API
Sterkte van de waargenomen trend.
| Waarde | Beschrijving |
|---|---|
strong | >15% verandering tussen periodes |
moderate | 5-15% verandering tussen periodes |
mild | <5% verandering tussen periodes |
health_score / score_interpretation Gezondheidsscore-API
Algehele interpretatie van de gezondheidsscore op basis van geanalyseerde parameters.
| Waarde | Beschrijving |
|---|---|
excellent | Alle markers binnen optimaal bereik |
good | De meeste markers binnen normaal bereik |
fair | Sommige markers vereisen aandacht |
poor | Meerdere markers vereisen aandacht |
Hulpprogramma Endpoints
Controleer uw resterende API-quota. Authenticatie vereist.
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/quota/check" \
-H "Content-Type: application/json" \
-d '{"username": "UW_GEBRUIKERSNAAM", "password": "UW_WACHTWOORD"}'
Voorbeeld Respons
{
"status": "success",
"quota": {
"remaining": 847,
"total": 1000,
"reset_date": "2026-01-01",
"plan": "professional"
}
}
API Familiaire Gezondheidsrisicobeoordeling
De Kantesti API Familiaire Gezondheidsrisicobeoordeling is een AI-gestuurd platform voor analyse van erfelijke gezondheidsrisico's. Het genereert uitgebreide familiegezondheidsrapporten door de medische familiegeschiedenis, gezondheidprofielen van patiënten en bloedtestgegevens te analyseren om erfelijke risicofactoren te identificeren en gepersonaliseerde preventieve zorgaanbevelingen te bieden.
AI-gestuurde erfelijke risicoanalyse
De Family Health API maakt gebruik van geavanceerde AI-modellen om de medische familiegeschiedenis te kruisen met de bloedtestgegevens van de patiënt, waarbij erfelijke risicopatronen worden geïdentificeerd in de categorieën cardiovasculair, metabool, oncologisch, neurologisch, respiratoir, auto-immuun, genetisch, geestelijke gezondheid en nier/lever. Rapporten omvatten risicoscore, preventief zorgplan, genetische screeningaanbevelingen en levensstijladviezen — allemaal gelokaliseerd in meer dan 100 talen.
- Erfelijke risicoanalyse — Classificatie in hoog, matig en laag risico
- Stamboomanalyse — Risicokarteling van vaderlijke en moederlijke lijnen
- Bloedtest correlatie — Kruising van familiegeschiedenis met bloedparameters
- Genetische screeningaanbevelingen — Gepersonaliseerde suggesties voor genetische tests
- Preventief zorgplan — Leeftijdsgeschikte screeningprogramma's
- Medicijnanalyse — Beoordeling van erfelijke interacties en gevoeligheden
- 100+ talen ondersteund — Volledige lokalisatie van rapporten
- Sandbox-modus — Test de integratie zonder credits te verbruiken
Overzicht endpoints
| Endpoint | Methode | Beschrijving | Auth |
|---|---|---|---|
/api/v1/family-health/analyze | POST | Genereert uitgebreid risicobeoordeligsrapport | Vereist (1 credit) |
/api/v1/family-health/validate | POST | Valideert de aanvraaggegevens (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/family-health/supported-languages | GET | Lijst van 100+ ondersteunde talen | Niet vereist |
/api/v1/family-health/condition-categories | GET | Lijst van aandoeningscategorieën | Niet vereist |
/api/v1/family-health/family-relations | GET | Lijst van familierelatie types | Niet vereist |
/api/v1/family-health/sandbox/analyze | POST | Sandbox-test met voorbeeldgegevens | Vereist (Gratis) |
Genereert een uitgebreid AI-gestuurd rapport voor familiaire gezondheidsrisicobeoordeling.
Aanvraagparameters (JSON Body)
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | API gebruikersnaam |
password | string | Ja | API wachtwoord |
patient_data | object | Ja | Patiëntinformatie |
family_members | array | Ja* | Familieleden (max 100) |
health_profile | object | Ja* | Gezondheidsprofiel |
blood_test_data | array | Nee | Bloedtestgegevens |
language | string | Nee | Taalcode (standaard: en) |
cURL voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze" \
-H "Content-Type: application/json" \
-d '{"username":"GEBRUIKER","password":"WACHTWOORD","patient_data":{"name":"Anna de Vries","age":42,"gender":"female"},"family_members":[{"relation":"father","age":70,"conditions":["hypertension"]}],"language":"nl"}'
Python voorbeeld
import requests
url = "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze"
payload = {"username":"GEBRUIKER","password":"WACHTWOORD","patient_data":{"name":"Anna de Vries","age":42,"gender":"female"},"family_members":[{"relation":"father","age":70,"conditions":["hypertension"]}],"language":"nl"}
response = requests.post(url, json=payload, timeout=120)
print(response.json())
Voorbeeld respons
{"status":"success","data":{"report_data":{"report_title":"Familiaire Gezondheidsrisicobeoordeling Rapport","hereditary_risk_analysis":{"high_risk":[{"condition":"Cardiovasculaire ziekte","risk_score":75}]},"genetic_screening_recommendations":["BRCA1/BRCA2 genetische test"]}},"timestamp":"2026-03-23T10:30:00Z","api_version":"1.0.0"}
Foutcodes Family Health API
| Code | HTTP | Beschrijving |
|---|---|---|
AUTH_1001 | 401 | Ontbrekende inloggegevens |
AUTH_1002 | 401 | Ongeldige inloggegevens |
QUOTA_1101 | 403 | Onvoldoende API-quotum |
VAL_2001 | 400 | Verplicht veld ontbreekt |
VAL_2003 | 400 | Niet-ondersteunde taalcode |
PROC_3001 | 500 | Rapportgeneratie mislukt |
SRV_5001 | 500 | Interne serverfout |
Sandbox Endpoint Family Health
Test uw integratie zonder credits te verbruiken.
| API | Sandbox | Beschrijving |
|---|---|---|
| Family Health | /api/v1/family-health/sandbox/analyze | Voorbeeld rapportgegevens |
Referentie-endpoints (Geen auth)
| Endpoint | Methode | Beschrijving |
|---|---|---|
/api/v1/family-health/supported-languages | GET | 100+ ondersteunde talen |
/api/v1/family-health/condition-categories | GET | 9 aandoeningscategorieën |
/api/v1/family-health/family-relations | GET | 14 familierelaties |
Lichaamskaart API
De Kantesti Lichaamskaart API vertaalt een laboratoriumpanel naar anatomie. Elk resultaat buiten de referentiewaarden of op de grens daarvan wordt op een van de 13 lichaamsregio's geplaatst, en de API retourneert zowel de legenda — welke regio, hoe ernstig, welke markers daartoe leidden — als een URL van een bijpassende illustratie van het lichaam.
Standaard deterministisch
Markernamen worden vergeleken met meertalige aliastabellen die 39 rapporttalen omvatten, inclusief niet-Latijnse schriften — u stuurt de analytnamen precies zoals uw laboratorium ze heeft afgedrukt, in welke taal dan ook. Er wordt geen model aangeroepen en geen illustratie gegenereerd tenzij u daarom vraagt, dus het standaardverzoek is vrij van AI-kosten en geeft steeds hetzelfde antwoord voor hetzelfde panel.
- 13 anatomische regio's — Hersenen en zenuwen, schildklier, hart en bloedvaten, lever, alvleesklier, bijnieren, nieren, darmen, voortplantingsorganen, bloed, immuunsysteem, botten, spieren
- Ernstniveaus — Niveau 2 voor resultaten buiten de referentiewaarden, niveau 1 voor grenswaarden, zodat een legenda zonder extra logica gekleurd kan worden
- Markertoewijzing — Elke regio vermeldt de markers die daartoe leidden, de ernstigste eerst
- Taalonafhankelijke uitvoer — Regiosleutels en uw eigen markernamen; de illustratie bevat geen tekst, dus één afbeelding volstaat voor elke taal
- Ondertekende illustratie-URL's — Elke illustratie-URL bevat een HMAC-handtekening, zodat niemand ze kan opsommen of vervalsen
- Eerlijke lege toestanden — Een schoon panel geeft het gedeelde lichaam "alles in orde" terug; een panel waarvan de gemarkeerde markers niet geplaatst kunnen worden geeft een fout terug in plaats van een misleidend groen lichaam
- Deterministische modus — Standaard. Geen modelaanroep, geen afbeeldingscredit, reproduceerbare uitvoer
- Sandbox-modus — Test uw integratie zonder credits te verbruiken
Overzicht endpoints
| Endpoint | Methode | Beschrijving | Auth |
|---|---|---|---|
/api/v1/body-map/analyze | POST | Bouwt een lichaamskaart op uit een laboratoriumpanel | Vereist (1 credit) |
/api/v1/body-map/validate | POST | Valideert een payload en toont welke markers herkend worden (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/body-map/sandbox | POST | Sandbox-test met voorbeeldgegevens (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/body-map/regions | GET | Lijst van alle 13 lichaamsregio's en de ernstniveaus | Niet vereist |
/api/v1/body-map/info | GET | Metagegevens over mogelijkheden, limieten en authenticatie | Niet vereist |
Plaatst elk gemarkeerd resultaat uit een laboratoriumpanel op het lichaam. Verbruikt 1 credit per geslaagd verzoek. Een verzoek dat de validatie niet doorstaat, of waarvan de gemarkeerde markers niet geplaatst kunnen worden, wordt niet in rekening gebracht.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
parameters | array | Ja | Objecten met laboratoriumresultaten. Max 500. Elk object heeft een analytnaam en een evaluation nodig. |
interpretation | array | Nee | Klinische interpretatie, alleen als context gebruikt wanneer ai_assist aanstaat |
ai_assist | boolean | Nee | Laat het model markers plaatsen die de aliastabellen niet herkennen (standaard: false) |
include_image | boolean | Nee | Vraagt de gerenderde illustratie op (standaard: false) |
image_wait | integer | Nee | Aantal seconden wachten op een nieuw gegenereerde illustratie, 0-30 (standaard: 0) |
Velden van het parameterobject
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
short_name | string | Ja* | Analytnaam zoals afgedrukt door het laboratorium. *Ten minste één van short_name, long_name, name, parameter_name of parameter is vereist. |
long_name | string | Nee | Volledige analytnaam; verbetert de herkenning van afkortingen |
evaluation | string | Nee | Eén van high, low, bad, slightly_high, slightly_low, normal. Alleen gemarkeerde waarden verschijnen op de kaart. |
result | string|number | Nee | De gemeten waarde; bepaalt mede welke regio's getekend worden |
unit | string | Nee | Eenheid van het resultaat, in welke schrijfwijze dan ook |
range_normal_min | number | Nee | Ondergrens van de referentiewaarde |
range_normal_max | number | Nee | Bovengrens van de referentiewaarde |
category | string | Nee | Laboratoriumcategorie; gebruikt als terugval wanneer de analytnaam onbekend is |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/body-map/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "UW_GEBRUIKERSNAAM",
"password": "UW_WACHTWOORD",
"parameters": [
{"short_name": "ALT", "long_name": "Alanine aminotransferase", "result": "65", "unit": "U/L", "range_normal_min": 7, "range_normal_max": 45, "evaluation": "high"},
{"short_name": "AST", "long_name": "Aspartate aminotransferase", "result": "48", "unit": "U/L", "range_normal_min": 8, "range_normal_max": 40, "evaluation": "slightly_high"},
{"short_name": "TSH", "long_name": "Thyrotropin", "result": "6.2", "unit": "mIU/L", "range_normal_min": 0.4, "range_normal_max": 4.0, "evaluation": "high"}
]
}'
Python Voorbeeld
import requests
def build_body_map(parameters, username, password, include_image=False):
"""
Plaats bloedtestresultaten buiten de referentiewaarden op het lichaam.
Retourneert de regio's, de legenda en de URL's van de illustratie.
"""
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()
# Voorbeeldgebruik
result = build_body_map(
parameters=[
{"short_name": "ALT", "result": "65", "unit": "U/L", "evaluation": "high"},
{"short_name": "TSH", "result": "6.2", "unit": "mIU/L", "evaluation": "high"},
],
username="gebruikersnaam",
password="wachtwoord",
)
body_map = result["data"]["body_map"]
for region in body_map["regions"]:
ernst = "buiten referentie" if region["level"] == 2 else "grenswaarde"
print(f" {region['key']}: {ernst} ({', '.join(region['markers'])})")
print(f"Illustratie: {body_map['image_url'] or body_map['fallback_url']}")
Voorbeeldrespons
{
"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"
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
body_map.spec | string | Canonieke aanduiding van deze combinatie van regio's en ernstniveaus. Identieke panels delen een spec en daarmee dezelfde illustratie uit de cache. |
body_map.regions[].key | string | Eén van de 13 regiosleutels |
body_map.regions[].level | integer | 2 = buiten referentie, 1 = grenswaarde |
body_map.regions[].drawn | boolean | Of deze regio op de illustratie is ingekleurd. De legenda vermeldt altijd elke regio; er worden er hoogstens zes getekend. |
body_map.regions[].markers | array | Markernamen die deze regio op de kaart brachten, de ernstigste eerst |
body_map.unmapped | integer | Gemarkeerde markers die op geen enkele regio geplaatst konden worden |
body_map.image_url | string|null | Illustratie uit de cache. null zolang het bestand niet bestaat — val dan terug op fallback_url. |
body_map.fallback_url | string | Ondertekende genererende URL. Altijd aanwezig. Antwoordt met 503 en Retry-After zolang de illustratie nog gemaakt wordt. |
all_clear | boolean | true wanneer er niets gemarkeerd is; dan geldt het gedeelde lichaam "alles in orde" |
mode | string | deterministic of ai_assisted |
De respons is bewust taalonafhankelijk: hij bevat regiosleutels en de markernamen van uw eigen laboratorium. Vertaal de 13 regiosleutels in uw eigen client en geef de voorkeur aan de legenda boven de illustratie — mocht het beeldmodel ooit het verkeerde orgaan inkleuren, dan klopt de legenda ernaast nog steeds.
Controleert een payload zonder de analyse uit te voeren en meldt welke van uw analytnamen de engine herkent, onder recognised en unrecognised. Authenticatie is vereist; er wordt geen quota verbruikt en het endpoint blijft werken op een account zonder resterende credits.
Referentie-endpoints
Beide referentie-endpoints zijn gratis en vereisen geen authenticatie.
Geeft de 13 lichaamsregio's in canonieke volgorde terug, samen met de ernstniveaus. Gebruik dit om uw eigen vertalingen van de legenda op te bouwen.
Metagegevens over de mogelijkheden: of de engine op deze deployment ingeschakeld is, de verzoeklimieten, het authenticatieschema en de volledige lijst met endpoints.
Sandbox
POST /api/v1/body-map/sandbox retourneert een voorbeeldrespons in precies de vorm die /analyze oplevert, zodat een client die tegen de sandbox is geschreven ongewijzigd tegen productie werkt. Authenticatie is vereist, zodat de aanroep meteen uw inloggegevens bevestigt, maar er wordt geen quota verbruikt en er vindt geen analyse plaats.
| Foutcode | HTTP | Betekenis |
|---|---|---|
AUTH_1001 | 401 | Ontbrekende inloggegevens |
AUTH_1002 | 401 | Ongeldige gebruikersnaam of wachtwoord |
QUOTA_1101 | 403 | Onvoldoende API-quotum |
VAL_2001 | 400 | parameters ontbreekt |
VAL_2002 | 400 | Ongeldig gegevensformaat |
VAL_2005 | 400 | parameters is leeg |
VAL_2006 | 400 | Meer dan 500 parameters |
RES_4004 | 422 | Er zijn gemarkeerde resultaten, maar geen ervan hoort bij een lichaamsregio |
RES_4005 | 503 | De lichaamskaart-engine is uitgeschakeld op deze deployment |
Biologische Bloedleeftijd API
De Kantesti Biologische Bloedleeftijd API beantwoordt een vraag die een referentiewaarde niet kan beantwoorden: hoe oud ziet dit bloed eruit? De API berekent de biologische leeftijd uit een routinepanel met het gepubliceerde Levine PhenoAge-model en leidt daarnaast tot 18 klinische indices af — FIB-4, HOMA-IR, TyG, eGFR, AIP, NLR, aniongat en meer — die een laboratoriumrapport zelden afdrukt.
Een uitkomst, ook uit een onvolledig panel
PhenoAge heeft negen markers nodig en de meeste panels bevatten er minder. Zijn alle negen aanwezig, dan geeft de API de gepubliceerde formule ongewijzigd terug. Zo niet, dan worden de ontbrekende invoerwaarden aangevuld met populatiemedianen en komt het antwoord terug als source: "partial", zodat u altijd weet welke van de twee u kreeg. Beide routes zijn deterministisch: geen modelaanroep, geen extra kosten, steeds hetzelfde antwoord voor hetzelfde panel.
- Levine PhenoAge — Het gepubliceerde model, ongewijzigd berekend wanneer alle negen markers aanwezig zijn
- Geleidelijke terugval — Een onvolledig panel levert alsnog een uitkomst op, duidelijk als zodanig gelabeld en met de ontbrekende markers erbij
- 18 klinische indices — FIB-4, De Ritis, A/G-ratio, HOMA-IR, TyG, eAG, eGFR, aniongat, ureum/creatinine, non-HDL, TG/HDL, AIP, TC/HDL, restcholesterol, NLR, Mentzer, transferrinesaturatie, gecorrigeerd calcium
- Automatische eenheidsconversie — SI- en conventionele eenheden, in welke schrijfwijze dan ook, met fysiologische plausibiliteitscontroles die onmogelijke waarden afwijzen
- Meertalige markerherkenning — Analytnamen in 39 rapporttalen inclusief niet-Latijnse schriften; u stuurt nooit interne sleutels
- Deterministische modus — Standaard. Geen netwerkaanroep, geen AI-kosten, reproduceerbare uitvoer
- Optionele modellagen — Rijherkenning, een verbeterde schatting en een persoonlijke notitie, elk achter een eigen vlag. Een volledige PhenoAge met negen markers wordt nooit door het model overschreven.
- 100 talen — Voor de optionele persoonlijke notitie
- Sandbox-modus — Test uw integratie zonder credits te verbruiken
Overzicht endpoints
| Endpoint | Methode | Beschrijving | Auth |
|---|---|---|---|
/api/v1/blood-age/analyze | POST | Berekent de biologische bloedleeftijd en de afgeleide klinische indices | Vereist (1 credit) |
/api/v1/blood-age/validate | POST | Valideert een payload en toont welke markers het panel bevat (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/blood-age/sandbox | POST | Sandbox-test met voorbeeldgegevens (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/blood-age/biomarkers | GET | Lijst van de markers die de engine leest en hun doeleenheden | Niet vereist |
/api/v1/blood-age/info | GET | Metagegevens over mogelijkheden, limieten en authenticatie | Niet vereist |
Berekent de biologische bloedleeftijd en de afgeleide indices uit een laboratoriumpanel. Verbruikt 1 credit per geslaagd verzoek. Een verzoek dat de validatie niet doorstaat, of waarvan het panel niets berekenbaars oplevert, wordt niet in rekening gebracht.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
parameters | array | Ja | Objecten met laboratoriumresultaten. Max 500. Elk object heeft een analytnaam en een resultaat nodig. |
metadata | object | Nee | Rapportkop. Sterk aanbevolen: PhenoAge bevat een term voor de kalenderleeftijd. Leest patient_age, patient_sex, dob, lab_date. |
patient | object | Nee | {"age": 42, "gender": "female"} — gebruikt wanneer de metagegevens deze niet bevatten |
interpretation | array | Nee | Klinische interpretatie, alleen als context voor het model gebruikt |
language | string | Nee | Taal van de optionele persoonlijke notitie (standaard: en). Zie ondersteunde talen. |
ai_assist | boolean | Nee | Laat het model ongebruikelijke analytnamen herkennen (standaard: false) |
ai_estimate | boolean | Nee | Laat het model een onvolledige leeftijd verbeteren (standaard: false) |
ai_note | boolean | Nee | Vraagt een persoonlijke notitie in language (standaard: false) |
De negen PhenoAge-markers
Stuur ze onder de namen die uw laboratorium heeft afgedrukt — de herkenning gebeurt op naam, in elk van de 39 ondersteunde rapporttalen, en eenheden worden automatisch omgerekend.
| Marker | Gebruikelijke naam | Doeleenheid |
|---|---|---|
albumin | Albumine | g/L |
creatinine | Creatinine | µmol/L |
glucose | Glucose / Nuchtere bloedsuiker | mmol/L |
crp | C-reactief proteïne | mg/L |
lymph | Lymfocyten | % |
mcv | Gemiddeld celvolume | fL |
rdw | Rodecelverdelingsbreedte | % |
alp | Alkalische fosfatase | U/L |
wbc | Aantal witte bloedcellen | 10⁹/L |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/blood-age/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "UW_GEBRUIKERSNAAM",
"password": "UW_WACHTWOORD",
"metadata": {"patient_age": "40", "patient_sex": "Male", "lab_date": "2026-09-11"},
"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"}
]
}'
Python Voorbeeld
import requests
def biological_blood_age(parameters, metadata, username, password):
"""
Bereken de biologische bloedleeftijd uit een routinebloedpanel.
De metagegevens dragen patient_age en patient_sex aan.
"""
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()
# Voorbeeldgebruik
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="gebruikersnaam",
password="wachtwoord",
)
samenvatting = result["data"]["summary"]
print(f"Kalenderleeftijd: {samenvatting['chronological_age']}")
print(f"Biologisch: {samenvatting['biological_age']} ({samenvatting['source']})")
print(f"Verschil: {samenvatting['delta_years']:+} jaar")
Voorbeeldrespons
{
"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": [],
"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"
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
summary.status | string | ok, missing_age, missing_markers, needs_markers of unavailable |
summary.source | string | formula (alle negen markers), partial (medianen ingevuld) of ai (modelschatting, alleen met ai_estimate) |
summary.chronological_age | integer|null | Leeftijd gelezen uit de metagegevens of het patiëntobject |
summary.biological_age | number|null | De berekende bloedleeftijd, in jaren |
summary.delta_years | number|null | Biologisch min kalenderleeftijd. Negatief is jonger dan de kalender. |
summary.markers_missing | array | Welke van de negen PhenoAge-markers het panel niet aanleverde |
blood_age.age.inputs | object | De omgerekende waarden die daadwerkelijk zijn gebruikt, in de doeleenheden |
blood_age.indices[].band | string | ok, borderline, high, low of info |
blood_age.indices[].from | array | De laboratoriumrijen waaruit deze index is afgeleid |
mode | string | deterministic of ai_assisted |
PhenoAge bevat een leeftijdsterm, dus zonder kalenderleeftijd komt de respons terug met status: "missing_age" en zonder uitkomst. Stuur die mee in metadata.patient_age, of in patient.age, of als geboortedatum in patient.dob. De formule geldt tussen 18 en 100 jaar.
Controleert een payload zonder de analyse uit te voeren en meldt welke van de negen PhenoAge-markers uw panel aanlevert en of er een kalenderleeftijd gelezen kon worden — de twee dingen die bepalen of u de volledige formule of de gedeeltelijke schatting krijgt. Authenticatie is vereist; er wordt geen quota verbruikt en het endpoint blijft werken op een account zonder resterende credits.
Referentie-endpoints
Beide referentie-endpoints zijn gratis en vereisen geen authenticatie.
Geeft de negen PhenoAge-invoerwaarden terug, elke marker die de engine kan lezen met zijn doeleenheid, en het leeftijdsbereik waarvoor de formule geldt.
Metagegevens over de mogelijkheden: of de engine op deze deployment ingeschakeld is, de twee modi en wat elk daarvan kost, de verzoeklimieten, het authenticatieschema en de ondersteunde talen.
Sandbox
POST /api/v1/blood-age/sandbox retourneert een voorbeeldrespons in precies de vorm die /analyze oplevert, zodat een client die tegen de sandbox is geschreven ongewijzigd tegen productie werkt. Authenticatie is vereist, zodat de aanroep meteen uw inloggegevens bevestigt, maar er wordt geen quota verbruikt en er vindt geen analyse plaats.
| Foutcode | HTTP | Betekenis |
|---|---|---|
AUTH_1001 | 401 | Ontbrekende inloggegevens |
AUTH_1002 | 401 | Ongeldige gebruikersnaam of wachtwoord |
QUOTA_1101 | 403 | Onvoldoende API-quotum |
VAL_2001 | 400 | parameters ontbreekt |
VAL_2002 | 400 | Ongeldig gegevensformaat |
VAL_2003 | 400 | Niet-ondersteunde taalcode |
VAL_2005 | 400 | parameters is leeg |
VAL_2006 | 400 | Meer dan 500 parameters |
VAL_2007 | 400 | Ongeldig patient-object |
RES_4004 | 422 | Niets berekenbaars uit deze parameters |
RES_4005 | 503 | De bloedleeftijd-engine is uitgeschakeld op deze deployment |
DNA Health API: DNA-testinterpretatie, DNA + Bloedrapport en Supplementadviseur
Met trots introduceren we de Kantesti DNA Health API: drie nieuwe AI-modules die de DNA-test van een patiënt omzetten in klinische rapporten. DNA-testinterpretatie leest een ruw genotypebestand of een genetisch rapport en stelt een uitgebreid genetisch gezondheidsrapport op. Het DNA + Bloedgezondheidsrapport combineert dat rapport met een geïnterpreteerde bloedtest en laat zien waar genen en labwaarden elkaar bevestigen of tegenspreken. De Supplementadviseur vertaalt DNA, bloedtest en een korte vragenlijst naar een persoonlijk supplementenplan, opgebouwd uit de eigen producten van uw kliniek.
Getoetst aan uw eigen bestand
Een ruw genotypebestand wordt op de server ingelezen en vergeleken met een zorgvuldig samengesteld panel van 334 markers in 20 categorieën, van methylerings-, cardiovasculaire en lipidengenen tot farmacogenomica, de stofwisseling van voedingsstoffen, dragerschap en levensduur. Elke bevinding die de AI opschrijft, wordt getoetst aan de upload: een rsID die niet in het bestand voorkomt, wordt geschrapt, en elk genotype wordt vastgezet op de waarde die in het bestand staat, zodat het rapport geen uitslag kan verzinnen.
- Elke gangbare DNA-bron — Ruwe bestanden van 23andMe, AncestryDNA, MyHeritage, FTDNA en LivingDNA, VCF-bestanden, ook in
.zipof.gz; geplakte rsID-regels; of een genetisch rapport als maximaal 6 PDF-, JPG- of PNG-bestanden - Uitgebreid genetisch rapport — Bevindingen per gezondheidsgebied, ziekterisico's, dragerschap, farmacogenomica (voorspelde metabolisatorfenotypen en de betrokken geneesmiddelgroepen), nutrigenomica, kenmerken, aanbevolen vervolgonderzoek en alarmsignalen
- Genen ontmoeten labwaarden — Het DNA + Bloedrapport typeert elk verband tussen een genetische bevinding en een labuitslag als
confirms,contradicts,neutralofwatch, met een risicomatrix, prioritaire acties en een monitoringplan - Supplementenplannen met veiligheidsregels — Dosis, vorm, tijdstip, duur, interacties en hertestmomenten; doseringen blijven binnen de aanvaardbare bovengrens van inname, bij zwangerschap gelden veilige grenswaarden, en alles waarover een voorschrijver moet beslissen, komt in
clinician_review_requiredterecht - Uw eigen productcatalogus — De adviseur beveelt de producten aan die uw kliniek voert, markeert ze als
clinic_libraryen vermeldt in de modus "alleen kliniekproducten" de behoeften die uw catalogus niet dekt - Koppelbaar en stateless — Stuur het rapport van module 1 rechtstreeks door naar module 2 en 3. Er wordt niets bij een patiënt opgeslagen, en ruwe genotypebestanden worden na het inlezen verwijderd
- 100+ rapporttalen — Het rapport wordt geschreven in de taal die u opvraagt
- Asynchrone modus — Voeg
?async=1toe en poll/api/jobs/<job_id>, zodat een lange analyse nooit op een gateway-time-out stuit - Sandbox-modus — Test uw integratie zonder credits te verbruiken
1. POST /api/v1/dna-interpretation/analyze met het DNA-bestand retourneert data.report. 2. Stuur dat rapport samen met een geïnterpreteerde bloedtest naar /api/v1/dna-blood-report/analyze. 3. Stuur hetzelfde rapport, de antwoorden op de vragenlijst en optioneel de bloedtest naar /api/v1/dna-supplements/analyze. Module 2 en 3 accepteren het DNA-rapport precies zoals het is teruggekomen: het report-object, het volledige data-object of de complete respons.
Overzicht endpoints
| Endpoint | Methode | Beschrijving | Auth |
|---|---|---|---|
/api/v1/dna-interpretation/analyze | POST | DNA-bestand, geplakte rsID-regels of rapportpagina's → uitgebreid genetisch gezondheidsrapport | Vereist (1 credit) |
/api/v1/dna-interpretation/validate | POST | Leest de upload in en toont wat er is gevonden, zonder AI-aanroep | Vereist (Gratis) |
/api/v1/dna-interpretation/sandbox | POST | Voorbeeld van een genetisch rapport | Vereist (Gratis) |
/api/v1/dna-interpretation/info | GET | Geaccepteerde invoer, limieten en rapporttalen | Niet vereist |
/api/v1/dna-blood-report/analyze | POST | DNA-rapport + geïnterpreteerde bloedtest → gecombineerd gezondheidsrapport | Vereist (1 credit) |
/api/v1/dna-blood-report/validate | POST | Controleert de payload zonder AI-aanroep | Vereist (Gratis) |
/api/v1/dna-blood-report/sandbox | POST | Voorbeeld van een gecombineerd rapport | Vereist (Gratis) |
/api/v1/dna-blood-report/info | GET | Verzoekvelden en limieten | Niet vereist |
/api/v1/dna-supplements/analyze | POST | DNA-rapport + bloedtest (optioneel) + vragenlijst → supplementenplan | Vereist (1 credit) |
/api/v1/dna-supplements/validate | POST | Controleert de payload en de antwoorden zonder AI-aanroep | Vereist (Gratis) |
/api/v1/dna-supplements/sandbox | POST | Voorbeeld van een supplementenplan | Vereist (Gratis) |
/api/v1/dna-supplements/questionnaire | GET | De 25 vragen en hun toegestane antwoorden | Niet vereist |
/api/v1/dna-supplements/settings | GET PUT | Leest of wijzigt de productcatalogus en de adviseurinstellingen van uw kliniek | Vereist (Gratis) |
/api/v1/dna-supplements/info | GET | Verzoekvelden en limieten | Niet vereist |
Interpreteert één DNA-test en retourneert een uitgebreid genetisch gezondheidsrapport. Stuur een bestand als multipart/form-data, of geplakte genotyperegels als JSON. De upload wordt direct tijdens het verzoek ingelezen, zodat een onleesbaar bestand meteen een 400 oplevert en niets kost. Er wordt pas één credit afgeschreven nadat het rapport is opgesteld.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam (of gebruik HTTP Basic-authenticatie) |
password | string | Ja | Uw API-wachtwoord |
file | file | Ja* | Eén ruw genotypebestand (.txt, .csv, .tsv, .vcf, .zip, .gz, tot 80 MB) of maximaal 6 rapportbestanden (PDF tot 20 MB, JPG/PNG tot 10 MB per bestand). *Stuur file of genotype_text. |
genotype_text | string | Ja* | Geplakte genotyperegels (rsID, chromosoom, positie, genotype), tot 2.000.000 tekens |
language | string | Nee | Taalcode van het rapport, bijv. en, de, ar (standaard: en). Zie ondersteunde talen. |
patient | object | Nee | age, sex, diagnoses, comorbidities, medications, treatments, notes. Stuur het in een multipart-verzoek mee als JSON-string. |
source_label | string | Nee | Uw eigen naam voor de bron, maximaal 120 tekens |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/dna-interpretation/analyze?async=1" \
-u "UW_GEBRUIKERSNAAM:UW_WACHTWOORD" \
-F "file=@genome_raw_data.txt" \
-F "language=en" \
-F 'patient={"age": 41, "sex": "female", "medications": "clopidogrel"}'
# Antwoord 202 Accepted: {"status": "pending", "job_id": "...", "poll_url": "/api/jobs/...", ...}
curl -u "UW_GEBRUIKERSNAAM:UW_WACHTWOORD" "https://app.aibloodtestinterpret.com/api/jobs/JOB_ID"
Python Voorbeeld
import time
import requests
BASE = "https://app.aibloodtestinterpret.com"
AUTH = ("UW_GEBRUIKERSNAAM", "UW_WACHTWOORD")
def run(path, poll=True, **kwargs):
"""POST in asynchrone modus en poll daarna /api/jobs/<id> tot het rapport klaar is."""
resp = requests.post(f"{BASE}{path}?async=1", auth=AUTH, timeout=60, **kwargs)
body = resp.json()
if resp.status_code != 202:
return body # een fout, of een synchroon antwoord
while True:
time.sleep(body.get("poll_interval_ms", 3000) / 1000)
job = requests.get(f"{BASE}{body['poll_url']}", auth=AUTH, timeout=30).json()
if job["status"] in ("completed", "failed"):
return job["result"]["response"]
# 1) DNA-testinterpretatie
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"])
Voorbeeldrespons
{
"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"
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
source | object | Wat er is ingelezen: kind (raw, text of document), het herkende formaat en de genoomversie, het aantal records en genotype-calls, hoeveel van de 334 panelmarkers zijn gevonden, en waarschuwingen van de parser |
report.overall_assessment.level | string | typical, slightly_elevated, elevated of high |
report.sections[] | array | Eén item per gezondheidsgebied, met een risk_level en de bijbehorende 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 | Voorspeld metabolisatorfenotype per gen en de geneesmiddelgroepen waarop dat van invloed kan zijn. Het rapport noemt nooit voorschrijfdoseringen. |
report.carrier_status[] | array | carrier, not_detected, affected_pattern of inconclusive, altijd te bevestigen met klinisch genetisch onderzoek |
report.disease_risks[], nutrigenomics[], traits[] | array | Risico's op aandoeningen, bevindingen over voedingsstoffen en kenmerken, met de onderliggende genen |
report.recommended_tests[], red_flags[] | array | Vervolgonderzoek met een reden, en bevindingen die snel aandacht vragen |
Leest de upload precies zo in als /analyze en meldt wat er is gevonden, zonder AI-aanroep. Authenticatie is vereist; er wordt geen credit verbruikt. Gebruik dit endpoint om een bestand te controleren voordat u een credit besteedt.
Voorbeeldrespons
{
"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": []}
}
}
Combineert een DNA-rapport met een geïnterpreteerde bloedtest tot één gezondheidsrapport. Elk verband tussen een genetische bevinding en een labwaarde wordt geclassificeerd, gevolgd door een risicomatrix, prioritaire acties en een monitoringplan. Eén credit per geslaagd verzoek.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
dna_report | object | Ja | Het rapport van /api/v1/dna-interpretation/analyze: data.report, het volledige data-object of de complete respons |
blood_test | object|array | Ja | Een geïnterpreteerde bloedtest zoals de Bloedtest API die retourneert (metadata, parameters, interpretation), of alleen een lijst van maximaal 500 parameters met een naam en een result |
language | string | Nee | Taalcode van het rapport (standaard: en) |
patient | object | Nee | Dezelfde velden als bij DNA-testinterpretatie |
Python Voorbeeld
# 2) DNA + bloedgezondheidsrapport (gebruikt run() en dna uit het voorbeeld hierboven)
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"])
Voorbeeldrespons
{
"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."
}
}
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
report.overall_status.level | string | good, watch, attention of urgent |
report.correlations[].concordance | string | confirms, contradicts, neutral of watch |
report.risk_matrix[] | array | Per gebied: genetic_risk, lab_status (normal, borderline, abnormal, not_measured) en een gecombineerde beoordeling |
report.priority_actions[] | array | priority (high, medium, low), de actie en de reden |
report.monitoring_plan[] | array | Welke marker opnieuw getest moet worden, wanneer en waarom |
Stelt een persoonlijk supplementenplan op uit het DNA-rapport, de antwoorden op de vragenlijst en, optioneel, een geïnterpreteerde bloedtest. De productcatalogus en de adviseurinstellingen van uw kliniek worden automatisch toegepast. Eén credit per geslaagd verzoek.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
dna_report | object | Ja | Het rapport van /api/v1/dna-interpretation/analyze |
answers | object | Ja | Antwoorden op de vragenlijst. diet_type en pregnancy zijn verplicht; zie GET /api/v1/dna-supplements/questionnaire voor alle 25 vragen. Onbekende sleutels en waarden worden weggelaten. |
blood_test | object|array | Nee | Hetzelfde formaat als bij het DNA + Bloedgezondheidsrapport |
use_clinic_catalogue | boolean | Nee | Past de productcatalogus en de instellingen van uw kliniek toe (standaard: true) |
language | string | Nee | Taalcode van het rapport (standaard: en) |
patient | object | Nee | Dezelfde velden als bij DNA-testinterpretatie. Medicatie die hier wordt vermeld, wordt op interacties gecontroleerd. |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/dna-supplements/analyze?async=1" \
-u "UW_GEBRUIKERSNAAM:UW_WACHTWOORD" \
-H "Content-Type: application/json" \
-d '{
"dna_report": { ...data.report uit de DNA-interpretatie... },
"answers": {"diet_type": "vegetarian", "pregnancy": "no", "sun_exposure": "low", "goals": ["energy", "immunity"]},
"language": "en"
}'
Python Voorbeeld
# 3) Supplementenplan (gebruikt run(), dna en blood_test uit de voorbeelden hierboven)
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"])
Voorbeeldrespons
{
"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."
}
}
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
catalogue | object | De toegepaste catalogusmodus (prefer, only, off) en hoeveel kliniekproducten er beschikbaar waren |
report.recommendations[] | array | name, form, dose, timing, duration, priority, de rationale vanuit genetica, lab en vragenlijst, evidence, cautions, interactions en retest |
report.recommendations[].source | string | clinic_library voor een product uit uw catalogus (genoemd in product), anders evidence_based |
report.uncovered_needs[] | array | In de modus "alleen kliniekproducten": behoeften die uw catalogus niet dekt |
report.clinician_review_required[] | array | Alles waarover een voorschrijver moet beslissen: interacties, zwangerschap, nier- of leverziekte, antistollingsmiddelen, doseringen dicht bij de bovengrens van inname |
report.avoid_or_caution[], dietary_sources[], retest_plan[] | array | Wat te vermijden, voedingsbronnen per voedingsstof, en wanneer opnieuw te testen |
Leest of wijzigt de productcatalogus van uw kliniek en de instellingen van de adviseur. Het is dezelfde catalogus als in het kliniekpaneel en in Nutrition Diet AI, dus een product dat u op één plek toevoegt, is overal beschikbaar. Authenticatie is vereist; er wordt geen credit verbruikt. Stuur catalogue, settings of beide; de catalogus vervangt de volledige lijst.
| Veld | Type | Beschrijving |
|---|---|---|
catalogue[] | array | Maximaal 200 producten: name, brand, form, dosage, category (vitamin, mineral, probiotic, omega, herbal, other), description |
settings.mode | string | prefer (kliniekproducten waar ze passen, anders wetenschappelijk onderbouwde suggesties), only (alleen kliniekproducten) of off (catalogus negeren) |
settings.instructions | string | Uw eigen instructies voor de AI, maximaal 1.500 tekens. Veiligheidsregels hebben altijd voorrang. |
settings.max_items | integer | Maximaal aantal aanbevelingen per plan, 3 tot 12 |
cURL Voorbeeld
curl -X PUT "https://app.aibloodtestinterpret.com/api/v1/dna-supplements/settings" \
-u "UW_GEBRUIKERSNAAM:UW_WACHTWOORD" \
-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}
}'
Referentie-endpoints
GET /api/v1/dna-supplements/questionnaire geeft de 25 vragen (dieet, maaltijden, groente en fruit, vis, rood vlees, zuivel, alcohol, roken, cafeïne, blootstelling aan zonlicht, beweging, slaap, stress, spijsvertering, energie, huidige supplementen, medicatie, allergieën, aandoeningen, zwangerschap, doelen, budget, voorkeursvorm en opmerkingen) met hun typen en toegestane waarden. De drie /info-endpoints retourneren de geaccepteerde invoer, de limieten, de kosten in credits en de volledige lijst met rapporttalen. Geen van deze endpoints vereist authenticatie.
Sandbox en asynchrone modus
POST /api/v1/dna-interpretation/sandbox, /api/v1/dna-blood-report/sandbox en /api/v1/dna-supplements/sandbox retourneren een voorbeeldrapport in precies de vorm die /analyze oplevert. Authenticatie is vereist; er wordt geen credit verbruikt.
Een AI-rapport duurt doorgaans één tot drie minuten. Voeg ?async=1 toe (of de header X-Async: 1) en het verzoek antwoordt meteen met 202 en een job_id. Poll GET /api/jobs/<job_id> met dezelfde inloggegevens tot status de waarde completed of failed heeft. De uiteindelijke respons staat in result.response en is identiek aan de synchrone respons.
| Foutcode | HTTP | Betekenis |
|---|---|---|
AUTH_1001 | 401 | Ontbrekende inloggegevens |
AUTH_1002 | 401 | Ongeldige gebruikersnaam of wachtwoord |
QUOTA_1101 | 403 | Onvoldoende API-quotum |
VAL_2001 | 400 | Er ontbreekt een verplicht veld: file of genotype_text, dna_report, blood_test, of een verplicht antwoord |
VAL_2002 | 400 | Onleesbare genotypegegevens, niet-ondersteund bestandstype, ongeldige JSON of een ongeldig dna_report |
VAL_2003 | 400 | Niet-ondersteunde rapporttaal |
VAL_2006 | 400 | Te groot: geplakte tekst, bloedparameters (500) of catalogus (200 producten) |
VAL_2007 | 400 | Ongeldig patient-object |
VAL_2008 | 400 | Geen bruikbare bloedtestparameter (naam en resultaat) |
PROC_3003 | 500 | Het AI-antwoord kon niet worden opgesteld of gevalideerd; probeer het opnieuw. Er wordt geen credit in rekening gebracht. |
RES_4005 | 503 | De DNA-modules zijn uitgeschakeld op deze deployment |
De DNA Health API levert door AI gegenereerde informatie voor de behandelend clinicus. Het is geen diagnose en geen voorschrift. Genotyperingsarrays voor consumenten zijn geen klinische sequencing: bevestig klinisch relevante bevindingen en dragerschapsbevindingen met gevalideerd klinisch genetisch onderzoek voordat u erop handelt.
ICR - Intelligente Tekenherkenning API
De Kantesti ICR (Intelligente Tekenherkenning) API is een geavanceerde documenttekst-extractietechnologie die ver voorbij traditionele OCR gaat. Aangedreven door Kantesti's eigen AI-engine levert ICR gestructureerde JSON-uitvoer van elk documenttype.
Kantesti ICR vs Traditionele OCR
In benchmarktests toonde Kantesti ICR 79% hogere prestaties vergeleken met traditionele OCR-oplossingen. ICR begrijpt de documentstructuur, bewaart tabellay-outs, extraheert metadata en retourneert schoon gestructureerd JSON.
- Gestructureerde JSON-uitvoer — Tabellen, secties, metadata en ruwe tekst in schoon JSON-formaat
- Documenttype-detectie — Herkent automatisch medische rapporten, facturen, formulieren, brieven, enz.
- Tabelextractie — Bewaart koppen en rijgegevens met volledige structuur
- Multi-formaat ondersteuning — PDF, JPG, JPEG, PNG documentverwerking
- Bloedtest-integratie (Kan) — Gespecialiseerd endpoint voor bloedtestdocument-extractie
- Sandbox-modus — Test integratie zonder credits te verbruiken
- Creditsysteem — 0,5 credits per API-aanroep
ICR Endpoints Overzicht
| Endpoint | Methode | Beschrijving | Kosten |
|---|---|---|---|
/api/icr/v1/extract | POST | ICR-tekstextractie | 0,5 credit |
/api/icr/v1/sandbox | POST | ICR sandbox-test | Gratis |
/api/icr/v1/kan | POST | Bloedtestdocument-analyse | 0,5 credit |
/api/icr/v1/kan/sandbox | POST | Bloedtest sandbox-test | Gratis |
/api/icr/info | GET | API-documentatie en functies | Gratis |
/api/icr/health | GET | Gezondheidscontrole-endpoint | Gratis |
/api/icr/v1/quota | POST | Controleer resterende ICR-credits | Gratis |
Extraheert alle tekstinhoud uit geüploade documenten met Kantesti ICR-technologie.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
file | file | Ja | Documentbestand (PDF, JPG, JPEG, PNG) |
language | string | Nee | Uitvoertaal (standaard: en) |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/icr/v1/extract" \
-F "username=UW_GEBRUIKERSNAAM" \
-F "password=UW_WACHTWOORD" \
-F "language=nl" \
-F "[email protected]"
Python Voorbeeld
import requests
def icr_extract(file_path: str, username: str, password: str, language: str = "nl"):
"""
Extraheer tekst uit een document met de Kantesti ICR API.
79% sneller en nauwkeuriger dan traditionele 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("medisch_rapport.pdf", "gebruikersnaam", "wachtwoord", "nl")
print(f"Documenttype: {result['data']['document_type']}")
print(f"Pagina's: {result['data']['page_count']}")
Voorbeeldrespons
{
"status": "success",
"data": {
"document_type": "blood_test_report",
"page_count": 1,
"pages": [{"page_number": 1, "content": {"raw_text": "Universitair Ziekenhuis Keulen - Bloedbeeld...", "sections": [{"type": "header", "content": "Bloedbeeld"}], "tables": [{"headers": ["Test", "Resultaat", "Eenheid", "Referentiewaarde"], "rows": [["Glucose", "92", "mg/dL", "74 - 100"], ["ALT", "22", "U/L", "< 35"]]}]}}],
"metadata": {"detected_language": "nl", "confidence": "high"},
"icr_metadata": {"engine": "kantesti-icr", "version": "1.0.0"}
},
"credit_cost": 0.5,
"api_version": "icr-v1"
}
ICR Sandbox Endpoints
Test uw ICR-integratie zonder credits te verbruiken. Sandbox endpoints retourneren realistische voorbeeldgegevens.
| API | Sandbox Endpoint | Beschrijving |
|---|---|---|
| ICR Extractie | /api/icr/v1/sandbox | Retourneert voorbeeldgegevens van ICR-extractie |
| ICR Kan | /api/icr/v1/kan/sandbox | Retourneert voorbeeldgegevens van bloedtestparameters |
ICR vs OCR Prestaties
| Metriek | Kantesti ICR | Traditionele OCR | Verbetering |
|---|---|---|---|
| Verwerkingssnelheid | 1,2s gemiddeld | 5,7s gemiddeld | 79% sneller |
| Tekstnauwkeurigheid | 99,7% | 92,1% | +7,6% |
| Tabeldetectie | 98,9% | 71,2% | +27,7% |
| Gestructureerde Uitvoer | JSON met secties, tabellen, metadata | Ruwe ongestructureerde tekst | Volledige structuur |
| Meertalige Ondersteuning | 100+ talen | 30-50 talen | 2x+ dekking |