Een openbare, alleen-lezen API voor koppelingen met bijvoorbeeld Curriculum Playground. Geen API-sleutel nodig. Gebruik HTTPS. Browsertoegang vanaf andere websites is toegestaan, zonder cookies of inloggegevens.
Het overzicht accepteert niveau (vmbo-bb, vmbo-kb, vmbo-gl/tl, vmbo-gl, vmbo-tl, havo, vwo) en status (de bronstatus, momenteel concept, definitief-concept, definitief of bronprogramma). Filters zijn combineerbaar. Een programma kan bij meerdere niveaus horen; gebruik niveaus. Zonder filters bevat het overzicht alle programma’s uit de gepubliceerde catalogus, ook programma’s met selecteerbaar: false en previewprogramma’s. Alle passende programma’s staan in één antwoord, zonder paginering. Onbekende filters of waarden geven HTTP 400.
Inhoudelijk identieke actuele GL- en TL-programma’s verschijnen één keer in het overzicht. Het gezamenlijke record heeft niveau: vmbo-gl/tl en niveaus: [vmbo-gl, vmbo-tl]. canonicalId is de bestaande GL-programma-ID; equivalentProgramIds bevat beide oorspronkelijke IDs. Gebruik de canonicalId om deze equivalente programma’s te ontdubbelen. Bestaande opgeslagen koppelingen hoeven niet te worden aangepast: beide oorspronkelijke detailadressen blijven HTTP 200 geven met hun eigen programma-ID en eindterm-IDs.
Ook detailantwoorden tonen de gezamenlijke niveaus. bronNiveau bewaart de oorspronkelijke leerweg. Broninhoud, herkomst, historische SLO-inhoud en codetabelbewijs blijven bij het aangevraagde oorspronkelijke record horen. Alleen de gepresenteerde niveauvelden worden gedeeld; IDs worden nooit op basis van titels gekoppeld.
Het filter niveau=vmbo-gl/tl geeft het gezamenlijke aanbod van GL en TL. De filters vmbo-gl en vmbo-tl omvatten ook gezamenlijke programma’s. GL-profielvakken worden niet aan TL toegevoegd. Verschillende inhoud, examenjaren of statussen worden niet samengevoegd. Algemene voorwaarden, waaronder TL-LOB, blijven afzonderlijk met hun eigen toepasselijkheid vermeld.
Elk antwoord bevat version, type, updatedAt, peildatum en sourceCommit. Bij meerdere datasets vermeldt sourceCommits de broncommits per dataset. In een detailantwoord is sourceCommit de broncommit van dat programma. Beroepsgerichte GL-programma’s staan onder vmbo-gl, niet onder TL; programmaSoort onderscheidt profielvak en keuzevak. Het overzicht bevat count en programs. De details staan onder program, inclusief domeinen en eindtermen. Het veld apiUrl is relatief aan dit domein. Bestaande IDs en brongegevens blijven behouden; de hierboven beschreven niveauvelden worden voor equivalente GL/TL-programma’s gezamenlijk weergegeven.
Gebruik de combinatie van programma-ID en eindterm-ID voor plaatsing in een curriculum: dezelfde eindterm kan in meerdere programma’s voorkomen. Baseer koppelingen niet op titels of doelnummers. De lege, onvolledige bronset wordt niet aangeboden. Er worden geen VSO-programma’s afgeleid zonder gecontroleerde doelgroepkoppeling.
Zowel het overzicht als het detail bevat herkomst: dataset, versie, commit, bronUrl en geraadpleegdOp. Onder verificatie staan de controlestatus, gecontroleerdOp en een toelichting op de reikwijdte. correcties bewaart eventuele afzonderlijk onderbouwde correcties. Dit maakt zichtbaar welke bronversie ieder programma gebruikt en wat aanvullend is gecontroleerd of gewijzigd.
In het detail bewaren eindtermen hun oorspronkelijke bronInhoud. Waar een correctie is toegepast, beschrijft bronCorrectie de onderbouwing. Gebruik de gepresenteerde eindtermvelden voor weergave en bewaar de herkomst bij overname. Een lege correctielijst bewijst niet dat het hele programma wettelijk is geverifieerd.
Het overzicht en ieder detail bevatten examenToepassing. Bij status: geldend noemt examenjaren de afzonderlijk gecontroleerde jaren. Bij status: verwacht is eersteExamenjaar een verwachting, geen vastgestelde ingangsdatum. niet-vastgesteld en controle-open geven geen geldig examenjaar aan. De onderbouwing staat in bronnen, gecontroleerdOp en toelichting. Toon ook cohortLabel en routeLabel als die aanwezig zijn: zij begrenzen de toepasselijkheid. Afzonderlijke jaarversies behouden eigen IDs. Leid nooit een examenjaar af uit de SLO-release, publicatiedatum of peildatum.
Een definitieve SLO-bronstatus is geen bewijs van wettelijke geldigheid voor een examenjaar. Lees ook wettelijkeStatus en selecteerbaar. Bestaande importvelden wettelijkeStatus en selecteerbaar zijn om compatibiliteitsredenen behouden en kunnen nog niet-geverifieerd en false bevatten. De afzonderlijke actuele jaarcontrole staat in examenToepassing en herkomst.verificatie; een jaarcontrole verleent geen automatische toestemming voor een school- of cohortspecifieke route. Peildatum is de datum van de dataset; updatedAt beschrijft de bestandswijziging, geen ingangsdatum. Broninhoud en onze gecontroleerde correcties kunnen verschillen; de getoonde titel en uitwerkingen zijn leidend voor de presentatie.
algemeneVoorwaarden bevat bijvoorbeeld de verplichte LOB voor vmbo-TL, zonder daarvan een zelfstandig examenvak te maken. bronbeperkingen vermeldt concrete onopgeloste bronhiaten. Rechtstreeks wettelijke aanvullingen hebben geen verzonnen SLO-commit; hun officiële bron en checksum blijven vastgelegd.
const base = 'https://alleeindtermen.nl';
const response = await fetch(`${base}/api/v1/vo/programs?niveau=havo`);
if (!response.ok) throw new Error(`API-fout: ${response.status}`);
const { programs } = await response.json();
const detailResponse = await fetch(new URL(programs[0].apiUrl, base));
if (!detailResponse.ok) throw new Error(`API-fout: ${detailResponse.status}`);
const { program } = await detailResponse.json();
console.log(program.herkomst, program.eindtermen);GET en HEAD worden ondersteund; OPTIONS verzorgt browsertoegang. Antwoorden mogen vijf minuten worden gecachet. Bewaar de ETag en stuur die bij een volgende aanvraag als If-None-Match; een ongewijzigd antwoord geeft HTTP 304 zonder inhoud. Lees ETag ook vanuit de browser via de vrijgegeven responseheaders.
Fouten zijn JSON: {"version":"1","error":{"code":"…","message":"…"}}. Statuscodes: 400 ongeldige filter, 404 onbekende route of programma, 405 ongeldige methode, 503 gegevens tijdelijk niet beschikbaar. Een geldige filtercombinatie zonder resultaten geeft HTTP 200 met een lege lijst.
/v1/ is de contractversie. Nieuwe optionele velden kunnen binnen v1 worden toegevoegd; clients moeten onbekende velden negeren. Wijzigingen die bestaande velden anders interpreteren vragen een nieuwe API-versie. sourceCommit verwijst naar de geïmporteerde SLO-versie, of is null bij een rechtstreeks wettelijke aanvulling; de ETag identificeert het daadwerkelijke antwoord inclusief lokale correcties. SLO-updates worden eerst gecontroleerd en vervolgens bewust gepubliceerd.