Ga naar de inhoud

Documentatie

SIA Intelligence API

Eén endpoint. Je stuurt een casus, je krijgt dezelfde analyse terug die het portaal op het scherm zet — als JSON, met de bronnen en hun status erbij.

Authenticatie

Elke aanroep draagt een sleutel in de Authorization-header: Bearer sia_… . De sleutel bepaalt om welke werkruimte het gaat; er wordt geen sessiecookie geaccepteerd, ook niet als je in dezelfde browser bent ingelogd. Een onbekende of ingetrokken sleutel geeft 401 met code invalid_key.

Sleutels beheer je in Instellingen → API, op het Enterprise-pakket. Een sleutel wordt één keer getoond en daarna alleen nog als voorvoegsel; intrekken werkt direct. Pakketten bekijken

Endpoints

  • POST/api/v1/intelligence

    Analyseert een casus. Kost 5 credits en gebruikt dezelfde pipeline als het scherm Casusanalyse.

  • GET/api/v1/intelligence/{case_id}

    Geeft een eerder opgeslagen analyse terug, voor de werkruimte van de sleutel. Kost niets.

Beide antwoorden dragen Cache-Control: no-store. Bewaar ze aan jouw kant zoals je een personeelsdossier bewaart.

Wat je stuurt

Eén JSON-object. Alles wat je meegeeft wordt onderdeel van de casus; alles samen is maximaal 4.000 tekens.

VeldTypeVerplichtOmschrijving
case_datestring (YYYY-MM-DD)JaDe datum waarop de regels gelezen moeten worden. Niet in de toekomst, niet vóór 2000-01-01.
descriptionstringJaDe casus in gewone taal. Tussen 20 en 4.000 tekens.
language"nl" | "en"JaDe taal van het antwoord.
absence_dayintegerNeeDe hoeveelste verzuimdag het is, geteld vanaf de eerste ziektedag.
previous_interventionsstring[]NeeWat er al is geprobeerd. Maximaal tien regels van elk 300 tekens.
manager_contextstringNeeWat de leidinggevende zegt of wil. Maximaal 1.000 tekens.
occupational_health_statusstringNeeDe stand van zaken bij de bedrijfsarts. Maximaal 500 tekens.
referencestringNeeJe eigen kenmerk voor de casus. Wordt de referentie van het dossier; zonder kenmerk genereert SIA er een.

Wat je terugkrijgt

Dezelfde velden als elk antwoord en elke analyse in het portaal — de spine.

VeldTypeOmschrijving
case_iduuidHet dossier. Hiermee haal je de analyse later weer op.
categorystringanswer, insufficient_information, expert_judgement_required of refused.
assessmentstringWat hier volgens SIA werkelijk aan de hand is.
reasoningstringDe juridische en procedurele redenering, met verwijzingen [1] naar de bronnen hieronder.
actionstringDe volgende stap: wat, door wie, wanneer.
deadlineobject | null{ date, label, days_from_case_date }, of null als er geen volgende datum is. Het aantal dagen wordt door SIA berekend en is null als er geen datum staat.
riskstringWat er misgaat als de actie uitblijft.
sourcesarray{ title, version, article, status } per bron. Alleen bronnen die daadwerkelijk zijn gebruikt en gecontroleerd.
confidence"low" | "medium" | "high"Hoe zeker SIA van deze analyse is.
escalationobject{ required, reason, to }. to is expert_review of null. Bij required: true hoort deze casus ook bij een mens.
missing_informationstring[]De één tot drie vragen die SIA beantwoord wil zien voordat het verdergaat. Leeg als die er niet zijn.
creditsobject{ charged, balance }. Bij een GET is charged altijd 0.

Een voorbeeld

Vervang sia.example.com door het adres van je eigen werkruimte.

Aanroep

curl -X POST https://sia.example.com/api/v1/intelligence \
  -H "Authorization: Bearer sia_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
      "case_date": "2026-09-10",
      "absence_day": 62,
      "description": "Een medewerker is op 10 juli uitgevallen na een conflict met zijn leidinggevende over de roosterindeling. Er is nog geen plan van aanpak opgesteld.",
      "previous_interventions": [
          "Gesprek met HR op 24 juli"
      ],
      "manager_context": "De leidinggevende wil een vaststellingsovereenkomst bespreken.",
      "occupational_health_status": "Spreekuur op 5 augustus; geen medische beperkingen.",
      "language": "nl",
      "reference": "WT-0447"
  }'

Antwoord

{
  "case_id": "2d83f619-e968-489d-935a-362f6907de11",
  "category": "expert_judgement_required",
  "assessment": "Op verzuimdag 62 ontbreekt het plan van aanpak, terwijl het spreekuur van de bedrijfsarts op 5 augustus vermoedelijk aanleiding gaf om dit uiterlijk twee weken later op te stellen.",
  "reasoning": "De wettelijke termijn is twee weken na het oordeel van de bedrijfsarts wanneer er mogelijkheden zijn om terugkeer naar arbeid te bevorderen [3]. Omdat niet duidelijk is of op 5 augustus een formele probleemanalyse of schriftelijk oordeel is uitgebracht, is de precieze grondslag van de termijn nog te bevestigen.",
  "action": "Stel vandaag samen met de werknemer een schriftelijk plan van aanpak op en leg de afzonderlijke vraag over de vaststellingsovereenkomst ter beoordeling voor aan een SIA-expert (SIA Expert Review).",
  "deadline": {
    "date": "2026-09-10",
    "label": "Onverwijld herstellen van het ontbrekende plan van aanpak",
    "days_from_case_date": 0
  },
  "risk": "Zonder actie blijven concrete re-integratiedoelen, termijnen, evaluatieafspraken en verantwoordelijkheden ontbreken en blijft het re-integratiedossier onvolledig.",
  "sources": [
    {
      "title": "Regeling procesgang eerste en tweede ziektejaar",
      "version": "2025-07-01",
      "article": "Regeling procesgang eerste ziektejaar > Artikel 4. Het plan van aanpak",
      "status": "legal_requirement"
    },
    {
      "title": "Werkwijzer Poortwachter",
      "version": "2022-08-01",
      "article": "3.2 Onderdelen re-integratieverslag",
      "status": "official_guidance"
    }
  ],
  "confidence": "medium",
  "escalation": {
    "required": true,
    "reason": "Het bespreken en beoordelen van een vaststellingsovereenkomst vraagt om menselijke juridische beoordeling door een SIA-expert en moet gescheiden blijven van de verzuimbegeleiding.",
    "to": "expert_review"
  },
  "missing_information": [
    "Is op 5 augustus een formele probleemanalyse of een schriftelijk advies van de bedrijfsarts uitgebracht?",
    "Ligt er al een concreet voorstel voor een vaststellingsovereenkomst?"
  ],
  "credits": {
    "charged": 0,
    "balance": 1220
  }
}

Categorieën

Elk antwoord zegt zelf van welke soort het is, zodat je systeem er iets anders mee kan doen.

WaardeBetekenis
answerEen antwoord op de casus zoals die is voorgelegd.
insufficient_informationSIA raadt niet. De vragen die nodig zijn staan in missing_information; stuur ze beantwoord opnieuw in.
expert_judgement_requiredDe casus hoort bij een mens. escalation.to is expert_review en escalation.reason zegt waarom.
refusedBuiten de grens: medisch, privacygevoelig of formeel-juridisch. Het antwoord zegt in gewone taal waarom.

Bronstatus

Elke bron draagt haar eigen gezag. Wetgeving en officiële richtlijnen gaan vóór praktijk en oordeel als die elkaar tegenspreken, en het antwoord zegt dat dan ook.

WaardeBetekenis
legal_requirementWetgeving. Niet onderhandelbaar.
official_guidanceRichtlijnen van de overheid of UWV, zoals de Werkwijzer Poortwachter.
sia_best_practiceHet eigen materiaal van de praktijk: protocollen, sjablonen, brieven.
expert_judgementHet redeneerkader en de casusbibliotheek van de SIA-expert zelf.
licensed_sourceIngekocht of gelicentieerd materiaal.

Credits en limieten

Een analyse kost 5 credits en wordt pas afgeschreven als er ook echt een antwoord is: bij category insufficient_information of expert_judgement_required is charged 0 en blijft het saldo staan. Is het saldo op, dan antwoordt het endpoint 402 met code credits en het saldo erbij. Ophalen met GET kost niets.

Per sleutel gelden 30 analyses per tien minuten, met een eigen budget voor het ophalen. Over de limiet volgt 429 met een Retry-After-header.

Foutcodes

  • 401 missing_keyGeen Authorization-header, of geen Bearer-schema.
  • 401 invalid_keyDe sleutel is onbekend of ingetrokken.
  • 400 invalid_requestDe velden kloppen niet. errors zegt per veld wat eraan mankeert.
  • 402 creditsOnvoldoende saldo. credits geeft balance en required.
  • 429 rate_limitedTe veel aanroepen. Retry-After zegt hoe lang.
  • 404 case_not_foundGeen geanalyseerd dossier van jou met dat id.