Endpoints van de Bloedtest API

Laatst bijgewerkt:

Volledige referentie voor alle Kantesti API endpoints met codevoorbeelden in meerdere programmeertalen.

Nieuw op 23 september 2026: de DNA Health API

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.

Basis URL
https://app.aibloodtestinterpret.com

Changelog

Volg API-versies, updates en migratie-informatie. Gebruik de aanbevolen endpoints voor nieuwe integraties.

Nieuwste Updates (2026)

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.

APIEndpointStatus
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

DatumVersieWijzigingen
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.

VersieEndpointStatus
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
Opmerking

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.

Standaardtaal

Als er geen language parameter wordt opgegeven, retourneert de API antwoorden in het Engels (en).

Belangrijkste Wereldtalen

CodeTaalEigen Naam
enEngelsEnglish
zhChinees中文
esSpaansEspañol
arArabischالعربية
hiHindiहिन्दी
ptPortugeesPortuguês
ruRussischРусский
jaJapans日本語
frFransFrançais
deDuitsDeutsch
koKoreaans한국어
trTurksTürkçe

Europese Talen

CodeTaalEigen Naam
itItaliaansItaliano
nlNederlandsNederlands
plPoolsPolski
elGrieksΕλληνικά
svZweedsSvenska
noNoorsNorsk
daDeensDansk
fiFinsSuomi
csTsjechischČeština
ukOekraïensУкраїнська
roRoemeensRomână
huHongaarsMagyar

Midden-Oosten & Centraal-Aziatische Talen

CodeTaalEigen Naam
heHebreeuwsעברית
faPerzischفارسی
azAzerbeidzjaansAzərbaycan

Zuid-Aziatische Talen

CodeTaalEigen Naam
bnBengaalsবাংলা
taTamilதமிழ்
urUrduاردو

Zuidoost-Aziatische Talen

CodeTaalEigen Naam
idIndonesischBahasa Indonesia
thThaisไทย
viVietnameesTiếng Việt

Afrikaanse Talen

CodeTaalEigen Naam
afAfrikaansAfrikaans
swSwahiliKiswahili

Overige Talen

CodeTaalEigen Naam
laLatijnLatina
eoEsperantoEsperanto
yiJiddischייִדיש
htHaïtiaans CreoolsKreyòl Ayisyen
miMaoriTe Reo Māori
smSamoaansGagana Samoa
toTongaansLea Faka-Tonga
hawHawaï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.

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

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

ParameterTypeVereistBeschrijving
usernamestringJaUw API-gebruikersnaam
passwordstringJaUw API-wachtwoord
filefileJaBloedtest afbeelding (PNG, JPG, WEBP) of PDF. Max 20MB. Herhaal het veld om meerdere afbeeldingen te sturen.
languagestringNeeRespons taalcode (standaard: en). Zie ondersteunde talen.
pdf_passwordstringNeeWachtwoord 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"
}
POST /api/v12/health-score/analyze Nieuwste

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"}
  ]
}
Respons trefwoorden

Het veld score_interpretation gebruikt gestandaardiseerde waarden. Zie gezondheidsscore waarden.

POST /api/v11/01-06-2025/analyze Stabiel

Productie endpoint voor bloedtestanalyse. Verbruikt 1 credit per verzoek.

Verzoekparameters

ParameterTypeVereistBeschrijving
usernamestringJaUw API-gebruikersnaam
passwordstringJaUw API-wachtwoord
filefileJaBloedtest afbeelding (PNG, JPG, WEBP) of PDF. Max 20MB.
languagestringNeeRespons 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
VeldTypeBeschrijving
statusstring"success" of "error"
dataobjectBevat alle analyseresultaten
timestampstringISO 8601 tijdstempel van de respons
api_versionstringGebruikte API-versie
data.metadata Object
VeldTypeBeschrijving
lab_datestringDatum bloedafname (JJJJ-MM-DD)
results_datestringDatum uitgifte resultaten (JJJJ-MM-DD)
lab_namestringNaam van het laboratorium
lab_citystringStad van het laboratorium
lab_countrystringLand van het laboratorium
patient_namestringVolledige naam van de patiënt (alleen metadata, niet verzonden naar interpretatie)
patient_agestringLeeftijd van de patiënt
patient_sexstring"male", "female" of "other"
data.parameters Array Element
VeldTypeBeschrijving
categorystringParametercategorie (bijv. "Volledig bloedbeeld", "Lipidenprofiel")
long_namestringVolledige parameternaam
short_namestringAfgekorte parameternaam
resultstringGemeten waarde
unitstringMeeteenheid
range_minstringMinimale referentiewaarde
range_maxstringMaximale referentiewaarde
evaluationstringResultaatstatus. Zie evaluatiewaarden
data.interpretation Array Element
VeldTypeBeschrijving
titlestringSectietitel (bijv. "Algemene gezondheidsbeoordeling")
contentstringAI-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"
}
Respons trefwoorden

Het veld evaluation gebruikt gestandaardiseerde waarden. Zie evaluatiewaarden.

AI Voeding met Supplementen

Genereer gepersonaliseerde voedingsplannen, dieetaanbevelingen en supplementsuggesties op basis van bloedtestanalyse.

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

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"
}
Respons trefwoorden

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.

Sandbox Voordelen
  • Geen quota verbruik
  • Retourneert realistische testgegevens
  • Zelfde verzoekformaat als productie
  • Test uw integratie voor lancering
  • Beschikbaar voor alle API-versies
APISandbox 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
Vergelijking API vs Trendanalyse API

Kies de juiste API voor uw gebruikssituatie:

FunctieAI Bloedtest VergelijkingTrendanalyse
Primaire FocusAI narratieve vergelijkingStatistische trendanalyse
AI VerwerkingVolledige AI narratiefAI-verbeterd + statistieken
UitvoertypeNarratieve samenvattingenGrafieken, statistieken, patronen
Ideaal VoorWat veranderde tussen testsLangetermijn parameter tracking
Min Tests22
Max Tests2050

Trendanalyse API

Analyseer langetermijntrends in bloedtestparameters over meerdere tests. Identificeer patronen, bereken statistieken en genereer AI-gestuurde inzichten voor gezondheidsmonitoring in de tijd.

POST /api/v1/analytics/trends/analyze Stabiel

Voer trendanalyse uit op 2-50 bloedtests om langetermijnpatronen en gezondheidsveranderingen te identificeren. Verbruikt 1 credit per verzoek.

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

ParameterTypeVereistBeschrijving
usernamestringJaUw API-gebruikersnaam
passwordstringJaUw API-wachtwoord
blood_testsarrayJaArray van bloedtestobjecten (min: 2, max: 50)
languagestringNeeRespons taalcode (standaard: en)
analysis_typestringNeeType analyse. Zie waarden. Standaard: "comprehensive"
analysis_optionsobjectNeeAnalyseconfiguratie-opties

analysis_options Object

Optionele configuratie-opties voor het aanpassen van de analyse-uitvoer:

VeldTypeStandaardBeschrijving
include_predictionsbooleantrueAI-trendvoorspellingen opnemen
include_statisticsbooleantrueStatistische analyse opnemen
include_chartsbooleantrueGrafiekconfiguratie opnemen

blood_tests Array Structuur

Elk bloedtest object in de blood_tests array moet de volgende structuur hebben:

VeldTypeVereistBeschrijving
test_datestringJaDatum bloedtest (JJJJ-MM-DD)
parametersarrayJaArray van bloedparameters met short_name, result, unit

blood_tests[].parameters Structuur

Elk parameter object in de parameters array moet de volgende velden bevatten:

VeldTypeVereistBeschrijving
short_namestringJaStandaard parameternaam (bijv. "CHOL", "GLU", "HbA1c")
resultnumberJaGemeten waarde van de parameter
unitstringJaMeeteenheid (bijv. "mg/dL", "%", "mmol/L")

Referentie responsvelden

data.trend_summary Object
VeldTypeBeschrijving
total_testsintegerAantal geanalyseerde tests
date_rangeobjectStart- en einddatum van analysebereik
parameters_trackedintegerAantal getrackte parameters
overall_assessmentstringAlgehele trendbeoordeling. Zie waarden
data.parameter_trends Array Element
VeldTypeBeschrijving
parameter_namestringNaam bloedparameter
trend_directionstringRichting trend. Zie waarden
trend_strengthstringSterkte trend. Zie waarden
statistical_dataobjectGemiddelde, mediaan, min, max, standaardafwijking
chart_dataarrayDatapunten voor visualisatie (datum, waarde)
interpretationstringAI-gegenereerde trendinterpretatie
data.insights Object
VeldTypeBeschrijving
positive_trendsarrayParameters die verbeteren
negative_trendsarrayParameters die verslechteren
stable_parametersarrayParameters die stabiel blijven
recommendationsarrayAI-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.

POST /api/v1/bloodtest/comparison/analyze Stabiel

Genereer AI-gestuurde narratieve vergelijkingen tussen bloedtests. Verbruikt 1 credit per verzoek.

Vereisten
  • Minimum: 2 bloedtests vereist
  • Maximum: 20 bloedtests ondersteund
  • Focus: AI narratieve interpretatie van veranderingen

Verzoekparameters

ParameterTypeVereistBeschrijving
usernamestringJaUw API-gebruikersnaam
passwordstringJaUw API-wachtwoord
blood_testsarrayJaArray van bloedtestobjecten (min: 2, max: 20)
languagestringNeeRespons taalcode (standaard: en)

blood_tests Array Structuur

Elk bloedtest object in de blood_tests array moet de volgende structuur hebben:

VeldTypeVereistBeschrijving
test_datestringJaDatum bloedtest (JJJJ-MM-DD)
parametersarrayJaArray van bloedparameters met short_name, result, unit

Referentie responsvelden

data.comparison_summary Object
VeldTypeBeschrijving
total_tests_comparedintegerAantal vergeleken tests
date_rangeobjectStart- en einddatum van vergelijking
overall_changestringAlgehele veranderingsbeoordeling. Zie waarden
parameters_analyzedintegerAantal geanalyseerde parameters
data.parameter_comparisons Array Element
VeldTypeBeschrijving
parameter_namestringNaam bloedparameter
initial_valueobjectStartwaarde (test_date, result, unit, evaluation)
final_valueobjectEindwaarde (test_date, result, unit, evaluation)
change_percentnumberProcentuele verandering tussen eerste en laatste test
change_directionstringRichting van verandering. Zie waarden
assessmentstringOf verandering positief of negatief is. Zie waarden
narrativestringAI-gegenereerde verhaaluitleg van verandering
data.ai_interpretation Object
VeldTypeBeschrijving
key_improvementsarrayLijst van parameters met significante verbetering
areas_of_concernarrayParameters die verslechtering tonen
stable_parametersarrayParameters met minimale verandering
overall_summarystringAI-gegenereerde algehele narratieve samenvatting
recommendationsarrayAanbevelingen 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.

WaardeStandaardBeschrijving
comprehensive✓Volledige analyse met statistieken, grafieken en AI-interpretatie
statisticalAlleen statistische analyse
summaryAlleen samenvatting op hoog niveau

health_goals Voedings-API

Gezondheidsdoelen voor gepersonaliseerde voedingsaanbevelingen. Meerdere waarden kunnen als array worden opgegeven.

WaardeBeschrijving
maintainHuidige gezondheid behouden (standaard)
improve_energyFocus op energieniveaus
weight_managementGezond gewichtsbeheer
heart_healthCardiovasculaire gezondheid
immune_supportOndersteuning immuunsysteem
digestive_healthSpijsverteringswelzijn
bone_healthBotgezondheid
mental_clarityCognitieve functie

dietary_restrictions Voedings-API

Dieetbeperkingen en allergieën. Meerdere waarden kunnen als array worden opgegeven. Vrije tekst wordt ook geaccepteerd voor aangepaste beperkingen.

WaardeBeschrijving
low_sodiumVerminderde natriuminname
low_sugarVerminderde suikerinname
low_fatVerminderde vetinname
gluten_freeGeen gluten
dairy_freeGeen zuivel
nut_freeGeen noten
soy_freeGeen soja
egg_freeGeen eieren
halalHalal-conform
kosherKoosjer-conform
Opmerking

Vrije tekst wordt ook geaccepteerd voor aangepaste dieetbeperkingen die hierboven niet worden vermeld.

dietary_preferences Voedings-API

Dieetlevensstijlvoorkeuren voor maaltijdplanning.

WaardeBeschrijving
omnivoreGeen beperkingen (standaard)
vegetarianGeen vlees
veganGeen dierlijke producten
pescatarianVegetarisch + vis
ketoKetogeen dieet
paleoPaleolithisch dieet
mediterraneanMediterraan dieet

activity_level Voedings-API

Fysiek activiteitsniveau voor calorische en voedingsberekeningen.

WaardeBeschrijving
sedentaryWeinig of geen beweging
lightLichte beweging 1-3 dagen/week
moderateMatige beweging 3-5 dagen/week (standaard)
activeIntensieve beweging 6-7 dagen/week
very_activeZeer intensieve beweging of fysiek werk

budget Voedings-API

Budgetniveau voor voedings- en supplementaanbevelingen.

WaardeBeschrijving
lowBudgetvriendelijke opties
moderateEvenwichtige opties (standaard)
highPremium opties

gender Alle API's

Geslacht van de patiënt voor gepersonaliseerde referentiebereiken en aanbevelingen.

WaardeBeschrijving
maleMannelijke patiënt
femaleVrouwelijke patiënt
otherAnders 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.

WaardeBeschrijving
normalBinnen normaal referentiebereik
lowOnder normaal bereik
highBoven normaal bereik
critical_lowKritiek laag (onmiddellijke aandacht vereist)
critical_highKritiek hoog (onmiddellijke aandacht vereist)
borderline_lowLicht onder normaal bereik
borderline_highLicht boven normaal bereik

trend_assessment Vergelijkings- & Trend-APIs

Algehele beoordeling van parametertrends tussen tests.

WaardeBeschrijving
positiveVerbeterd (richting normaal bereik)
negativeVerslechterd (weg van normaal bereik)
stableRelatief onveranderd tussen tests
improvingAlgehele verbeteringstrend
worseningAlgehele verslechteringstrend

trend_direction Trendanalyse-API

Richting van parameterwaardeveranderingen in de tijd.

WaardeBeschrijving
upwardWaarden stijgen in de tijd
downwardWaarden dalen in de tijd
stableMinimale verandering in de tijd

trend_strength Trendanalyse-API

Sterkte van de waargenomen trend.

WaardeBeschrijving
strong>15% verandering tussen periodes
moderate5-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.

WaardeBeschrijving
excellentAlle markers binnen optimaal bereik
goodDe meeste markers binnen normaal bereik
fairSommige markers vereisen aandacht
poorMeerdere markers vereisen aandacht

Hulpprogramma Endpoints

POST /api/quota/check

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

Uitgebracht: 23 maart 2026

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.

100+
Talen
9
Aandoeningscategorieën
14
Familierelaties

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.

Belangrijkste functies
  • 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

EndpointMethodeBeschrijvingAuth
/api/v1/family-health/analyzePOSTGenereert uitgebreid risicobeoordeligsrapportVereist (1 credit)
/api/v1/family-health/validatePOSTValideert de aanvraaggegevens (geen quotaverbruik)Vereist (Gratis)
/api/v1/family-health/supported-languagesGETLijst van 100+ ondersteunde talenNiet vereist
/api/v1/family-health/condition-categoriesGETLijst van aandoeningscategorieënNiet vereist
/api/v1/family-health/family-relationsGETLijst van familierelatie typesNiet vereist
/api/v1/family-health/sandbox/analyzePOSTSandbox-test met voorbeeldgegevensVereist (Gratis)
POST /api/v1/family-health/analyze Uitgebracht 23.03.2026

Genereert een uitgebreid AI-gestuurd rapport voor familiaire gezondheidsrisicobeoordeling.

Aanvraagparameters (JSON Body)

ParameterTypeVereistBeschrijving
usernamestringJaAPI gebruikersnaam
passwordstringJaAPI wachtwoord
patient_dataobjectJaPatiëntinformatie
family_membersarrayJa*Familieleden (max 100)
health_profileobjectJa*Gezondheidsprofiel
blood_test_dataarrayNeeBloedtestgegevens
languagestringNeeTaalcode (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

CodeHTTPBeschrijving
AUTH_1001401Ontbrekende inloggegevens
AUTH_1002401Ongeldige inloggegevens
QUOTA_1101403Onvoldoende API-quotum
VAL_2001400Verplicht veld ontbreekt
VAL_2003400Niet-ondersteunde taalcode
PROC_3001500Rapportgeneratie mislukt
SRV_5001500Interne serverfout

Sandbox Endpoint Family Health

Test uw integratie zonder credits te verbruiken.

APISandboxBeschrijving
Family Health/api/v1/family-health/sandbox/analyzeVoorbeeld rapportgegevens

Referentie-endpoints (Geen auth)

EndpointMethodeBeschrijving
/api/v1/family-health/supported-languagesGET100+ ondersteunde talen
/api/v1/family-health/condition-categoriesGET9 aandoeningscategorieën
/api/v1/family-health/family-relationsGET14 familierelaties

Lichaamskaart API

Uitgebracht: 18 september 2026

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.

13
Lichaamsregio's
39
Invoertalen
0
Modelaanroepen standaard

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.

Belangrijkste functies
  • 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

EndpointMethodeBeschrijvingAuth
/api/v1/body-map/analyzePOSTBouwt een lichaamskaart op uit een laboratoriumpanelVereist (1 credit)
/api/v1/body-map/validatePOSTValideert een payload en toont welke markers herkend worden (geen quotaverbruik)Vereist (Gratis)
/api/v1/body-map/sandboxPOSTSandbox-test met voorbeeldgegevens (geen quotaverbruik)Vereist (Gratis)
/api/v1/body-map/regionsGETLijst van alle 13 lichaamsregio's en de ernstniveausNiet vereist
/api/v1/body-map/infoGETMetagegevens over mogelijkheden, limieten en authenticatieNiet vereist
POST /api/v1/body-map/analyze Uitgebracht 18.09.2026

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

ParameterTypeVereistBeschrijving
usernamestringJaUw API-gebruikersnaam
passwordstringJaUw API-wachtwoord
parametersarrayJaObjecten met laboratoriumresultaten. Max 500. Elk object heeft een analytnaam en een evaluation nodig.
interpretationarrayNeeKlinische interpretatie, alleen als context gebruikt wanneer ai_assist aanstaat
ai_assistbooleanNeeLaat het model markers plaatsen die de aliastabellen niet herkennen (standaard: false)
include_imagebooleanNeeVraagt de gerenderde illustratie op (standaard: false)
image_waitintegerNeeAantal seconden wachten op een nieuw gegenereerde illustratie, 0-30 (standaard: 0)

Velden van het parameterobject

VeldTypeVereistBeschrijving
short_namestringJa*Analytnaam zoals afgedrukt door het laboratorium. *Ten minste één van short_name, long_name, name, parameter_name of parameter is vereist.
long_namestringNeeVolledige analytnaam; verbetert de herkenning van afkortingen
evaluationstringNeeEén van high, low, bad, slightly_high, slightly_low, normal. Alleen gemarkeerde waarden verschijnen op de kaart.
resultstring|numberNeeDe gemeten waarde; bepaalt mede welke regio's getekend worden
unitstringNeeEenheid van het resultaat, in welke schrijfwijze dan ook
range_normal_minnumberNeeOndergrens van de referentiewaarde
range_normal_maxnumberNeeBovengrens van de referentiewaarde
categorystringNeeLaboratoriumcategorie; 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

VeldTypeBeschrijving
body_map.specstringCanonieke aanduiding van deze combinatie van regio's en ernstniveaus. Identieke panels delen een spec en daarmee dezelfde illustratie uit de cache.
body_map.regions[].keystringEén van de 13 regiosleutels
body_map.regions[].levelinteger2 = buiten referentie, 1 = grenswaarde
body_map.regions[].drawnbooleanOf deze regio op de illustratie is ingekleurd. De legenda vermeldt altijd elke regio; er worden er hoogstens zes getekend.
body_map.regions[].markersarrayMarkernamen die deze regio op de kaart brachten, de ernstigste eerst
body_map.unmappedintegerGemarkeerde markers die op geen enkele regio geplaatst konden worden
body_map.image_urlstring|nullIllustratie uit de cache. null zolang het bestand niet bestaat — val dan terug op fallback_url.
body_map.fallback_urlstringOndertekende genererende URL. Altijd aanwezig. Antwoordt met 503 en Retry-After zolang de illustratie nog gemaakt wordt.
all_clearbooleantrue wanneer er niets gemarkeerd is; dan geldt het gedeelde lichaam "alles in orde"
modestringdeterministic of ai_assisted
De legenda weergeven

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.

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

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.

GET /api/v1/body-map/regions

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.

GET /api/v1/body-map/info

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.

FoutcodeHTTPBetekenis
AUTH_1001401Ontbrekende inloggegevens
AUTH_1002401Ongeldige gebruikersnaam of wachtwoord
QUOTA_1101403Onvoldoende API-quotum
VAL_2001400parameters ontbreekt
VAL_2002400Ongeldig gegevensformaat
VAL_2005400parameters is leeg
VAL_2006400Meer dan 500 parameters
RES_4004422Er zijn gemarkeerde resultaten, maar geen ervan hoort bij een lichaamsregio
RES_4005503De lichaamskaart-engine is uitgeschakeld op deze deployment

Biologische Bloedleeftijd API

Uitgebracht: 18 september 2026

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.

9
PhenoAge-markers
18
Afgeleide indices
39
Invoertalen

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.

Belangrijkste functies
  • 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

EndpointMethodeBeschrijvingAuth
/api/v1/blood-age/analyzePOSTBerekent de biologische bloedleeftijd en de afgeleide klinische indicesVereist (1 credit)
/api/v1/blood-age/validatePOSTValideert een payload en toont welke markers het panel bevat (geen quotaverbruik)Vereist (Gratis)
/api/v1/blood-age/sandboxPOSTSandbox-test met voorbeeldgegevens (geen quotaverbruik)Vereist (Gratis)
/api/v1/blood-age/biomarkersGETLijst van de markers die de engine leest en hun doeleenhedenNiet vereist
/api/v1/blood-age/infoGETMetagegevens over mogelijkheden, limieten en authenticatieNiet vereist
POST /api/v1/blood-age/analyze Uitgebracht 18.09.2026

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

ParameterTypeVereistBeschrijving
usernamestringJaUw API-gebruikersnaam
passwordstringJaUw API-wachtwoord
parametersarrayJaObjecten met laboratoriumresultaten. Max 500. Elk object heeft een analytnaam en een resultaat nodig.
metadataobjectNeeRapportkop. Sterk aanbevolen: PhenoAge bevat een term voor de kalenderleeftijd. Leest patient_age, patient_sex, dob, lab_date.
patientobjectNee{"age": 42, "gender": "female"} — gebruikt wanneer de metagegevens deze niet bevatten
interpretationarrayNeeKlinische interpretatie, alleen als context voor het model gebruikt
languagestringNeeTaal van de optionele persoonlijke notitie (standaard: en). Zie ondersteunde talen.
ai_assistbooleanNeeLaat het model ongebruikelijke analytnamen herkennen (standaard: false)
ai_estimatebooleanNeeLaat het model een onvolledige leeftijd verbeteren (standaard: false)
ai_notebooleanNeeVraagt 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.

MarkerGebruikelijke naamDoeleenheid
albuminAlbumineg/L
creatinineCreatinineµmol/L
glucoseGlucose / Nuchtere bloedsuikermmol/L
crpC-reactief proteïnemg/L
lymphLymfocyten%
mcvGemiddeld celvolumefL
rdwRodecelverdelingsbreedte%
alpAlkalische fosfataseU/L
wbcAantal witte bloedcellen10⁹/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

VeldTypeBeschrijving
summary.statusstringok, missing_age, missing_markers, needs_markers of unavailable
summary.sourcestringformula (alle negen markers), partial (medianen ingevuld) of ai (modelschatting, alleen met ai_estimate)
summary.chronological_ageinteger|nullLeeftijd gelezen uit de metagegevens of het patiëntobject
summary.biological_agenumber|nullDe berekende bloedleeftijd, in jaren
summary.delta_yearsnumber|nullBiologisch min kalenderleeftijd. Negatief is jonger dan de kalender.
summary.markers_missingarrayWelke van de negen PhenoAge-markers het panel niet aanleverde
blood_age.age.inputsobjectDe omgerekende waarden die daadwerkelijk zijn gebruikt, in de doeleenheden
blood_age.indices[].bandstringok, borderline, high, low of info
blood_age.indices[].fromarrayDe laboratoriumrijen waaruit deze index is afgeleid
modestringdeterministic of ai_assisted
Geef een kalenderleeftijd mee

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.

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

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.

GET /api/v1/blood-age/biomarkers

Geeft de negen PhenoAge-invoerwaarden terug, elke marker die de engine kan lezen met zijn doeleenheid, en het leeftijdsbereik waarvoor de formule geldt.

GET /api/v1/blood-age/info

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.

FoutcodeHTTPBetekenis
AUTH_1001401Ontbrekende inloggegevens
AUTH_1002401Ongeldige gebruikersnaam of wachtwoord
QUOTA_1101403Onvoldoende API-quotum
VAL_2001400parameters ontbreekt
VAL_2002400Ongeldig gegevensformaat
VAL_2003400Niet-ondersteunde taalcode
VAL_2005400parameters is leeg
VAL_2006400Meer dan 500 parameters
VAL_2007400Ongeldig patient-object
RES_4004422Niets berekenbaars uit deze parameters
RES_4005503De bloedleeftijd-engine is uitgeschakeld op deze deployment

DNA Health API: DNA-testinterpretatie, DNA + Bloedrapport en Supplementadviseur

Uitgebracht: 23 september 2026

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.

334
Geselecteerde DNA-markers
20
Gezondheidscategorieën
100+
Rapporttalen

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.

Belangrijkste functies
  • Elke gangbare DNA-bron — Ruwe bestanden van 23andMe, AncestryDNA, MyHeritage, FTDNA en LivingDNA, VCF-bestanden, ook in .zip of .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, neutral of watch, 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_required terecht
  • Uw eigen productcatalogus — De adviseur beveelt de producten aan die uw kliniek voert, markeert ze als clinic_library en 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=1 toe 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
Zo werken de drie modules samen

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

EndpointMethodeBeschrijvingAuth
/api/v1/dna-interpretation/analyzePOSTDNA-bestand, geplakte rsID-regels of rapportpagina's → uitgebreid genetisch gezondheidsrapportVereist (1 credit)
/api/v1/dna-interpretation/validatePOSTLeest de upload in en toont wat er is gevonden, zonder AI-aanroepVereist (Gratis)
/api/v1/dna-interpretation/sandboxPOSTVoorbeeld van een genetisch rapportVereist (Gratis)
/api/v1/dna-interpretation/infoGETGeaccepteerde invoer, limieten en rapporttalenNiet vereist
/api/v1/dna-blood-report/analyzePOSTDNA-rapport + geïnterpreteerde bloedtest → gecombineerd gezondheidsrapportVereist (1 credit)
/api/v1/dna-blood-report/validatePOSTControleert de payload zonder AI-aanroepVereist (Gratis)
/api/v1/dna-blood-report/sandboxPOSTVoorbeeld van een gecombineerd rapportVereist (Gratis)
/api/v1/dna-blood-report/infoGETVerzoekvelden en limietenNiet vereist
/api/v1/dna-supplements/analyzePOSTDNA-rapport + bloedtest (optioneel) + vragenlijst → supplementenplanVereist (1 credit)
/api/v1/dna-supplements/validatePOSTControleert de payload en de antwoorden zonder AI-aanroepVereist (Gratis)
/api/v1/dna-supplements/sandboxPOSTVoorbeeld van een supplementenplanVereist (Gratis)
/api/v1/dna-supplements/questionnaireGETDe 25 vragen en hun toegestane antwoordenNiet vereist
/api/v1/dna-supplements/settingsGET PUTLeest of wijzigt de productcatalogus en de adviseurinstellingen van uw kliniekVereist (Gratis)
/api/v1/dna-supplements/infoGETVerzoekvelden en limietenNiet vereist
POST /api/v1/dna-interpretation/analyze Uitgebracht 23.09.2026

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

ParameterTypeVereistBeschrijving
usernamestringJaUw API-gebruikersnaam (of gebruik HTTP Basic-authenticatie)
passwordstringJaUw API-wachtwoord
filefileJa*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_textstringJa*Geplakte genotyperegels (rsID, chromosoom, positie, genotype), tot 2.000.000 tekens
languagestringNeeTaalcode van het rapport, bijv. en, de, ar (standaard: en). Zie ondersteunde talen.
patientobjectNeeage, sex, diagnoses, comorbidities, medications, treatments, notes. Stuur het in een multipart-verzoek mee als JSON-string.
source_labelstringNeeUw 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

VeldTypeBeschrijving
sourceobjectWat 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.levelstringtypical, slightly_elevated, elevated of high
report.sections[]arrayEén item per gezondheidsgebied, met een risk_level en de bijbehorende findings
report.sections[].findings[]arraygene, rsid, genotype, phenotype, risk_level (protective, typical, informational, slightly_elevated, elevated, high), evidence (established, probable, preliminary), explanation, recommendation
report.pharmacogenomics[]arrayVoorspeld metabolisatorfenotype per gen en de geneesmiddelgroepen waarop dat van invloed kan zijn. Het rapport noemt nooit voorschrijfdoseringen.
report.carrier_status[]arraycarrier, not_detected, affected_pattern of inconclusive, altijd te bevestigen met klinisch genetisch onderzoek
report.disease_risks[], nutrigenomics[], traits[]arrayRisico's op aandoeningen, bevindingen over voedingsstoffen en kenmerken, met de onderliggende genen
report.recommended_tests[], red_flags[]arrayVervolgonderzoek met een reden, en bevindingen die snel aandacht vragen
POST /api/v1/dna-interpretation/validate Uitgebracht 23.09.2026

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

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

ParameterTypeVereistBeschrijving
dna_reportobjectJaHet rapport van /api/v1/dna-interpretation/analyze: data.report, het volledige data-object of de complete respons
blood_testobject|arrayJaEen 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
languagestringNeeTaalcode van het rapport (standaard: en)
patientobjectNeeDezelfde 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

VeldTypeBeschrijving
report.overall_status.levelstringgood, watch, attention of urgent
report.correlations[].concordancestringconfirms, contradicts, neutral of watch
report.risk_matrix[]arrayPer gebied: genetic_risk, lab_status (normal, borderline, abnormal, not_measured) en een gecombineerde beoordeling
report.priority_actions[]arraypriority (high, medium, low), de actie en de reden
report.monitoring_plan[]arrayWelke marker opnieuw getest moet worden, wanneer en waarom
POST /api/v1/dna-supplements/analyze Uitgebracht 23.09.2026

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

ParameterTypeVereistBeschrijving
dna_reportobjectJaHet rapport van /api/v1/dna-interpretation/analyze
answersobjectJaAntwoorden 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_testobject|arrayNeeHetzelfde formaat als bij het DNA + Bloedgezondheidsrapport
use_clinic_cataloguebooleanNeePast de productcatalogus en de instellingen van uw kliniek toe (standaard: true)
languagestringNeeTaalcode van het rapport (standaard: en)
patientobjectNeeDezelfde 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

VeldTypeBeschrijving
catalogueobjectDe toegepaste catalogusmodus (prefer, only, off) en hoeveel kliniekproducten er beschikbaar waren
report.recommendations[]arrayname, form, dose, timing, duration, priority, de rationale vanuit genetica, lab en vragenlijst, evidence, cautions, interactions en retest
report.recommendations[].sourcestringclinic_library voor een product uit uw catalogus (genoemd in product), anders evidence_based
report.uncovered_needs[]arrayIn de modus "alleen kliniekproducten": behoeften die uw catalogus niet dekt
report.clinician_review_required[]arrayAlles 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[]arrayWat te vermijden, voedingsbronnen per voedingsstof, en wanneer opnieuw te testen
GET PUT /api/v1/dna-supplements/settings Uitgebracht 23.09.2026

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.

VeldTypeBeschrijving
catalogue[]arrayMaximaal 200 producten: name, brand, form, dosage, category (vitamin, mineral, probiotic, omega, herbal, other), description
settings.modestringprefer (kliniekproducten waar ze passen, anders wetenschappelijk onderbouwde suggesties), only (alleen kliniekproducten) of off (catalogus negeren)
settings.instructionsstringUw eigen instructies voor de AI, maximaal 1.500 tekens. Veiligheidsregels hebben altijd voorrang.
settings.max_itemsintegerMaximaal 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.

FoutcodeHTTPBetekenis
AUTH_1001401Ontbrekende inloggegevens
AUTH_1002401Ongeldige gebruikersnaam of wachtwoord
QUOTA_1101403Onvoldoende API-quotum
VAL_2001400Er ontbreekt een verplicht veld: file of genotype_text, dna_report, blood_test, of een verplicht antwoord
VAL_2002400Onleesbare genotypegegevens, niet-ondersteund bestandstype, ongeldige JSON of een ongeldig dna_report
VAL_2003400Niet-ondersteunde rapporttaal
VAL_2006400Te groot: geplakte tekst, bloedparameters (500) of catalogus (200 producten)
VAL_2007400Ongeldig patient-object
VAL_2008400Geen bruikbare bloedtestparameter (naam en resultaat)
PROC_3003500Het AI-antwoord kon niet worden opgesteld of gevalideerd; probeer het opnieuw. Er wordt geen credit in rekening gebracht.
RES_4005503De DNA-modules zijn uitgeschakeld op deze deployment
Klinische beslissingsondersteuning

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

Uitgebracht: 14 februari 2026

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.

79%
Sneller dan OCR
99,7%
Nauwkeurigheid
100+
Talen

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.

ICR Belangrijkste Functies
  • 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

EndpointMethodeBeschrijvingKosten
/api/icr/v1/extractPOSTICR-tekstextractie0,5 credit
/api/icr/v1/sandboxPOSTICR sandbox-testGratis
/api/icr/v1/kanPOSTBloedtestdocument-analyse0,5 credit
/api/icr/v1/kan/sandboxPOSTBloedtest sandbox-testGratis
/api/icr/infoGETAPI-documentatie en functiesGratis
/api/icr/healthGETGezondheidscontrole-endpointGratis
/api/icr/v1/quotaPOSTControleer resterende ICR-creditsGratis
POST /api/icr/v1/extract Uitgebracht 14.02.2026

Extraheert alle tekstinhoud uit geüploade documenten met Kantesti ICR-technologie.

Verzoekparameters

ParameterTypeVereistBeschrijving
usernamestringJaUw API-gebruikersnaam
passwordstringJaUw API-wachtwoord
filefileJaDocumentbestand (PDF, JPG, JPEG, PNG)
languagestringNeeUitvoertaal (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.

APISandbox EndpointBeschrijving
ICR Extractie/api/icr/v1/sandboxRetourneert voorbeeldgegevens van ICR-extractie
ICR Kan/api/icr/v1/kan/sandboxRetourneert voorbeeldgegevens van bloedtestparameters

ICR vs OCR Prestaties

Benchmarkresultaten — Kantesti ICR vs Traditionele OCR
MetriekKantesti ICRTraditionele OCRVerbetering
Verwerkingssnelheid1,2s gemiddeld5,7s gemiddeld79% sneller
Tekstnauwkeurigheid99,7%92,1%+7,6%
Tabeldetectie98,9%71,2%+27,7%
Gestructureerde UitvoerJSON met secties, tabellen, metadataRuwe ongestructureerde tekstVolledige structuur
Meertalige Ondersteuning100+ talen30-50 talen2x+ dekking