Naar inhoud
Identix.org Inloggen
v1 geen sleutel nodigCORS open

Documentatie

Eén envelop, één veldnamenstelsel, één foutformaat — voor elke bron-API, elke dataset en elke combi-API. Wie één endpoint kent, kent ze alle 20.311.

Kies een endpoint. Alles begint met https://Identix.org/v1/. Geen registratie, geen sleutel — CORS staat open, dus u kunt direct vanuit de browser ontwikkelen.

Doe de aanroep. Dezelfde aanroep staat klaar in curl, JavaScript en Python. Plak hem in uw terminal en u hebt binnen een seconde antwoord.

Lees de envelop. Uw data staat in data; waar het vandaan komt in bronnen[], met licentie, attributie en responstijd per instantie.

Of pak een SDK. Voor Python, .NET, PHP en Go zijn er officiële clients: envelop-parsing, paginering, batch en integriteitsverificatie als native code — zie SDK's.

Algemene conventies

Tien afspraken die overal gelden. Ze zijn er zodat u per bron niets nieuws hoeft te leren.

ConventieBetekenis
Alles is een APIDirecte bron-API's, élke dataset uit de landelijke catalogus (20.304 stuks) én combi-API's die bronnen combineren.
bron-apiAchter dit endpoint staat een onderliggende API van de instantie zelf (PDOK, CBS, RDW, …). Wij houden een adapter bij die de brontaal vertaalt naar de standaard.
datasetAchter dit endpoint staat een dataset uit de landelijke catalogus. Identix.org haalt hem live op bij de publicerende instantie.
combi-apiEen afgeleid product van Identix.org: meerdere bronnen worden parallel geraadpleegd en in één antwoord gecombineerd.
snake_caseAlle veldnamen zijn snake_case, in elke API.
ISO-8601 (UTC)Alle tijdstempels als 2026-08-20T19:00:00Z.
WGS84 + RDCoördinaten standaard in WGS84 (lon/lat), waar beschikbaar aangevuld met Rijksdriehoek.
nullBetekent "onbekend of afgeschermd bij de bron". Broncodes zoals '.' worden nooit doorgestuurd.
AuthenticatieGeen sleutel vereist. CORS staat open (*).
ActualiteitLive bij de bron opgevraagd, maximaal 24 uur gecached (luchtkwaliteit 30 minuten).

De envelop

geldt voor elk endpoint

Elk antwoord heeft dezelfde buitenkant. U schrijft uw parser één keer.

Bij CC BY-bronnen (zoals CBS) bevat bronnen[] een verplicht attributie-veld dat u bij hergebruik dient mee te geven.

Foutafhandeling

RFC 7807

Alle fouten — ook wanneer een bron onbereikbaar is — volgen RFC 7807. Uw foutafhandeling is dus ook maar één keer werk.

StatusBetekenis
400Ongeldige of ontbrekende parameter (zie title).
404Onbekend endpoint — zie GET /v1/bronnen.
429Limiet bereikt; Retry-After vertelt wanneer u weer mag.
502De broninstantie is onbereikbaar of gaf een fout; details in detail.
500Interne fout (zou niet moeten voorkomen).

Dataverificatie & integriteit

Elk antwoord is onafhankelijk verifieerbaar. Drie mechanismen, zodat u ons niet op ons woord hoeft te geloven.

1 · Hash over de genormaliseerde data

Elke response bevat integriteit.hash: een SHA-256 over de canonieke JSON van data. Herbereken hem en vergelijk.

2 · Exacte bron-URL per antwoord

Elke registratie in bronnen[] bevat bron_url: de exacte aanroep die wij bij de instantie deden, parameters incluis. Haal die zelf op en vergelijk de ruwe bron met onze weergave.

3 · Normalisatiebeleid

Wij veranderen nooit inhoud. Alleen formaat: coderingen naar snake_case, datums naar ISO-8601, CBS-"onbekend"-codes naar null, coördinaten naar WGS84 (+RD), getallen naar getallen.

StandaardToepassing
ISO 8601Alle datums en tijdstempels (UTC, Z-suffix).
RFC 7807Foutformaat voor alle endpoints.
SHA-256 (FIPS 180-4)Integriteits-hash per antwoord.
DCAT-AP NLCatalogus-ontsluiting sluit aan op de landelijke datasetmetadata.
W3C PROV-Obronnen[] is een PROV-achtige herkomstregistratie: entiteit, tijdstip, activiteit.
GeoJSON (RFC 7946)Geometrieën in geometrie_wgs84.

Op de roadmap: ondertekende responses (HMAC met klantsleutel), een publiek auditlog van bron-versies, en ISO/IEC 27001-certificering van de hosting.

Enterprise-functies

geldt voor élk endpoint

Filteren, sorteren, pagineren, conditionele requests en batch — op bron-API's én datasets, zonder uitzondering.

Filteren, sorteren en pagineren op alles

ParameterWerking
waar herhaalbaarkolom=waarde (exact), kolom~deel, kolom!=, kolom>=, kolom<=; meerdere = EN. Werkt op élke lijstrespons.
veldenKolomselectie, komma-gescheiden.
sorteer + richtingSortering, numeriek waar mogelijk.
rijen / startPaging (max 500); bij expliciete paging stuurt de server een Link-header.

De integriteits-hash wordt na filtering herberekend — verificatie blijft kloppen.

Conditionele requests (ETag / 304)

Elke succesvolle response draagt een ETag, gelijk aan de integriteits-hash. Stuur If-None-Match mee: ongewijzigd → 304 Not Modified zonder body. Met Accept-Encoding: gzip worden antwoorden groter dan 1 KB gecomprimeerd.

Batch-uitvoering

Maximaal 25 aanvragen per batch, elk met eigen parameters en filters. Eén roundtrip voor portfolio- en dashboardgebruik.

Limieten en gebruiksinzicht

Anoniem geldt een royale limiet: 600 aanroepen per uur per IP, met X-RateLimit-*-headers en Retry-After bij een 429. Voor productiegebruik vraagt u een eigen quotum aan; verbruik ziet u in GET /v1/gebruik.

BAG · Adressen

Livebron-api

Zoeken in de Basisregistratie Adressen en Gebouwen. Drie aanroepen: vrij zoeken, autocomplete en volledige details op id.

GET/v1/bag/adressenvrij zoeken
GET/v1/bag/suggesttype-ahead, lichte respons
GET/v1/bag/lookupvolledig adres op id

Parameters

ParameterVereistBeschrijving
qverplichtZoekterm, minimaal 2 tekens. Bijvoorbeeld Nieuwmarkt 1 Amsterdam.
rowsoptioneelResultaten per pagina, 1–50. Standaard 10.
startoptioneelStartpositie voor paginering.

Responsvelden

VeldTypeBeschrijving
adres_idstringStabiele BAG-identificatie van de nummeraanduiding.
straat, huisnummer, postcode, woonplaatsstring / intAdrescomponenten, los benaderbaar.
gemeente, wijk, buurtobjectBestuurlijke indeling met officiële codes.
coordinatenobjectlat, lon in WGS84 en rd_x, rd_y in Rijksdriehoek.
perceelobject · nullableGekoppeld kadastraal perceel, of null als de bron het niet levert.

Bron: PDOK Locatieserver (BAG), beheerd door het Kadaster. Licentie CC0 1.0 — geen attributieplicht.

CBS · Kerncijfers

Livebron-api

Buurt-, wijk- en gemeentecijfers: bevolking, huishoudens, woningvoorraad, WOZ-waarde en inkomen.

GET/v1/cbs/kerncijferscijfers op regiocode
GET/v1/cbs/regiosregio's binnen een gebied

Parameters

ParameterVereistBeschrijving
regioverplichtRegiocode, bijvoorbeeld WK0363AE (wijk) of GM0363 (gemeente).
jaaroptioneelPeiljaar; laat weg voor het meest recente. Meerdere jaren via /trend.
binnenverplicht bij /regiosBovenliggend gebied waarbinnen u zoekt.
niveauverplicht bij /regiosEén van buurt, wijk, gemeente.

Bron: CBS StatLine, tabel "Kerncijfers wijken en buurten". Licentie CC BY 4.0 — attributie "CBS, Den Haag" verplicht. Elk kerncijfer is { waarde, eenheid }; waarde is null waar het CBS afschermt.

Combi-API's

Livecombi-api

Meerdere bronnen, parallel geraadpleegd, in één antwoord. Alle veertien volgen hetzelfde patroon: één pad, geen sleutel, en bronnen[] vertelt precies welke instanties eraan hebben bijgedragen.

GET/v1/adres/{postcode}/{huisnummer}/contextBAG + CBS + Kadaster + RCE
GET/v1/pand/{postcode}/{huisnummer}/dossiergebouwdossier
GET/v1/regio/{code}/vergelijk?met={code}twee regio's naast elkaar
GET/v1/punt/{lon}/{lat}/contextreverse geocoding + context

Eén call, meerdere bronnen. Valt één bron uit, dan blijft het antwoord staan: die bron krijgt status: "fout" in bronnen[] en zijn velden worden null. Uw integratie breekt niet.

Datasets

Livedataset

Alle 20.304 datasets uit de landelijke catalogus zijn individueel bevraagbaar — met dezelfde filters, sortering en paginering als elke andere API.

GET/v1/catalogus/datasets?q=zoek in de catalogus
GET/v1/datasets/{id}/querybevraag de inhoud

Voor LLM's & agents

Live145 MCP-tools

Het Model Context Protocol stelt alle API's beschikbaar als aanroepbare tools. Twee transporten: JSON-RPC 2.0 over POST /mcp, of lokaal via stdio.

Toolantwoorden dragen dezelfde envelop als de HTTP-aanroepen, inclusief bronmetadata. Fouten komen terug als isError: true met een leesbare boodschap, zodat een agent zichzelf kan corrigeren.

Liever geen MCP? GET /llms.txt geeft een compact markdown-overzicht, en /openapi.yaml laat u tools genereren uit een machine-leesbaar contract.

Alle bron-API's hieronder volgen hetzelfde patroon: endpoints, parametertabel, responsvelden, broncallout en live voorbeeld. Machine-leesbaar register: GET /v1/bronnen.

Algemene conventies

ConventieBetekenis
Alles is een APIIdentix.org biedt alles als API aan: directe bron-API's, élke dataset uit de landelijke catalogus (20.304 stuks) én combi-API's die bronnen combineren. Het responsformaat is identiek; het label bron_type in de envelop vermeldt de herkomst.
bron-APIAchter dit endpoint staat een onderliggende API van de instantie zelf (PDOK, CBS, RDW, …). Wij houden een directe adapter bij die de brontaal vertaalt naar de standaard — volledige veldcuratie, paging, historie waar de bron die biedt.
datasetAchter dit endpoint staat een onderliggende dataset uit de landelijke catalogus (data.overheid.nl). Identix.org haalt de dataset live op bij de publicerende instantie en ontsluit de inhoud universeel: CSV als tabel, ArcGIS als features, JSON direct. Zie GET /v1/datasets/{id}/data.
combi-apiDit endpoint is een afgeleid product van Identix.org: meerdere bronnen worden parallel geraadpleegd en in één antwoord gecombineerd (adres-context, pand-dossier, regio-vergelijking, wet-artikel-relevantie). bronnen[] vermeldt álle geraadpleegde bronnen mét hun licentie — attributie geldt per bron.
snake_caseAlle veldnamen zijn snake_case, in elke API.
ISO-8601 (UTC)Alle tijdstempels als 2026-08-20T19:00:00Z.
WGS84 + RDCoördinaten standaard in WGS84 (lon/lat), waar beschikbaar aangevuld met Rijksdriehoek.
nullBetekent "onbekend of afgeschermd bij de bron". Broncodes zoals "." worden nooit doorgestuurd.
AuthenticatieGeen sleutel vereist. CORS staat open (*), zodat u direct uit een browser kunt ontwikkelen.
ActualiteitAntwoorden worden live bij de bron opgevraagd en maximaal 24 uur gecached (luchtkwaliteit 30 minuten).

De envelop

Elk succesvol antwoord heeft dezelfde buitenkant, ongeacht de API:

{
  "api": "api.identix.org",
  "versie": "v1",
  "onderdeel": "bag.adressen",          // welke API u aanriep
  "bron_type": "bron-api",              // 'bron-api', 'dataset' of 'combi-api'
  "gegenereerd_op": "2026-08-20T19:12:03Z",
  "duur_ms": 312,                        // totale responstijd
  "bronnen": [{                          // herkomst van dít antwoord
    "naam": "PDOK Locatieserver",
    "instantie": "Kadaster / PDOK",
    "licentie": "CC0 1.0",
    "duur_ms": 280,
    "uit_cache": false,
    "status": "ok"
  }],
  "data": { ... }                        // de genormaliseerde inhoud
}

Bij CC BY-bronnen (zoals CBS) bevat bronnen[] tevens een verplicht attributie-veld dat u bij hergebruik dient mee te geven.

Foutafhandeling

Alle fouten — ook wanneer een bron onbereikbaar is — volgen RFC 7807:

HTTP/1.1 400 Bad Request
{
  "type": "about:blank",
  "title": "Parameter 'q' is verplicht (minimaal 2 tekens)",
  "status": 400
}
StatusBetekenis
400Ongeldige of ontbrekende parameter (zie title).
404Onbekend endpoint — zie GET /v1/bronnen.
502De broninstantie is onbereikbaar of gaf een fout; details in detail.
500Interne fout (zou niet moeten voorkomen).

Dataverificatie & integriteit

Elk antwoord is onafhankelijk verifieerbaar. Drie mechanismen:

1. Hash over de genormaliseerde data

Elke response bevat integriteit.hash: een SHA-256 over de canonieke JSON van data. U herberekent die hash en vergelijkt — zo weet u dat het antwoord niet onderweg is gewijzigd:

import hashlib, json

canoniek = json.dumps(antwoord["data"], sort_keys=True,
                      separators=(",", ":"), ensure_ascii=False)
hash = hashlib.sha256(canoniek.encode("utf-8")).hexdigest()
assert hash == antwoord["integriteit"]["hash"]   # 1:1

2. Exacte bron-URL per antwoord

Elke bronnen[]-registratie bevat bron_url: de exacte aanroep die wij bij de instantie deden (parameters incluis). Haal die zelf op en vergelijk de ruwe bron met onze genormaliseerde weergave — er mag inhoudelijk niets anders verschillen dan formaatnormalisatie.

3. Normalisatiebeleid (wat wij wél en niét veranderen)

Wij veranderen nooit inhoud. Alleen formaat: coderingen naar snake_case, datums naar ISO-8601, CBS-'onbekend'-codes naar null, coördinaten naar WGS84 (+RD), getallen naar getallen. Ontbrekende of afgeschermde bronwaarden worden null — nooit ingevuld, geschat of gecorrigeerd.

Standaarden

StandaardToepassing
ISO 8601Alle datums en tijdstempels (UTC, Z-suffix).
RFC 7807Foutformaat voor alle endpoints.
SHA-256 (FIPS 180-4)Integriteits-hash per antwoord.
DCAT-AP NLCatalogus-ontsluiting sluit aan op de landelijke datasetmetadata (titel, instantie, licentie, resources).
W3C PROV-O (invulling)bronnen[] is een PROV-achtige herkomstregistratie: entiteit (bron), tijdstip (gegenereerd_op), activiteit (bron_url, duur_ms, cache-status).
GeoJSON (RFC 7946)Geometrieën in geometrie_wgs84.

Op de roadmap: ondertekende responses (HMAC met klantsleutel), een publiek auditlog van bron-versies, en ISO/IEC 27001-certificering van de hosting.

Enterprise-functies

Deze mogelijkheden gelden voor élk endpoint — bron-API's én datasets.

Filteren, sorteren en pagineren op alles

GET /v1/rdw/voertuigen?merk=TESLA&waar=catalogusprijs_eur>=50000&sorteer=catalogusprijs_eur&richting=desc&velden=kenteken,merk&rijen=5&start=5
ParameterWerking
waar (herhaalbaar)kolom=waarde (exact), kolom~deel, kolom!=, kolom>=, kolom<=; meerdere = EN. Werkt op élke lijstrespons.
veldenKolomselectie (komma-gescheiden).
sorteer + richtingSortering, numeriek waar mogelijk.
rijen / startPaging (max 500); bij expliciete paging stuurt de server een Link-header (rel="next"/prev).

De integriteits-hash wordt na filtering herberekend — verificatie blijft kloppen.

Conditionele requests (ETag / 304)

Elke succesvolle response draagt een ETag (gelijk aan de integriteits-hash). Stuur If-None-Match mee: ongewijzigd → 304 Not Modified zonder body. Met Accept-Encoding: gzip worden antwoorden > 1 KB gecomprimeerd.

Batch-uitvoering

POST /v1/batch
{ "aanvragen": [
    { "pad": "/v1/bag/adressen", "parameters": { "q": "Dam 1" } },
    { "pad": "/v1/cbs/kerncijfers", "parameters": { "regio": "WK0363AE" } } ] }

Maximaal 25 aanvragen per batch, elk met eigen parameters en enterprise-filters. Eén roundtrip voor portfolio- en dashboard-use-cases.

API-sleutels, rate limiting en gebruiksinzicht

Anoniem geldt een royale limiet (standaard 600/uur per IP; X-RateLimit-*-headers en Retry-After bij 429). Voor productiegebruik: een sleutel met eigen quotum via POST /v1/sleutels (vereist X-Admin-Token), meesturen als X-API-Key-header. Verbruiksinzicht via GET /v1/gebruik.

Roadmap enterprise

HMAC-ondertekende responses · webhooks/mutatie-notificaties · SLA's en prioriteitsqueu's · SSO/teamaccounts · auditlog-export · dedicated hosting (ISO 27001).

BAG · Adressen

live Kadaster / PDOK CC0

Zoekt adressen in de Basisregistratie Adressen en Gebouwen: straat, huisnummer, postcode, woonplaats, gemeente, wijk, buurt, kadastrale percelen en coördinaten.

Aanroepen

GET /v1/bag/adressen?q={zoekterm}&rows=8&start=0    // zoeken met paging
GET /v1/bag/suggest?q={fragment}&rows=6              // type-ahead
GET /v1/bag/lookup?id={object-id}                     // object per id
CallParameterVerplichtBeschrijvingVoorbeeld
/v1/bag/adressenqjaVrije zoekterm: adres, postcode + huisnummer, plaatsnaam.q=Dam 1, Amsterdam
rowsneeAantal resultaten per pagina (1–50, standaard 8).rows=10
startneePaging-offset (standaard 0). totaal_in_bron in de respons geeft de totaalomvang.start=10
/v1/bag/suggestqjaBegin van een zoekterm; levert {id, weergavenaam, type} — licht en snel, ideaal voor autocomplete.q=keizersgr
rowsneeAantal suggesties (1–25, standaard 6).rows=5
/v1/bag/lookupidjaLocatieserver-id (uit suggest of adressen); adres-objecten worden volledig genormaliseerd.id=adr-2a8dc1af…

Responsvelden (per resultaat)

VeldTypeBeschrijving
nummeraanduiding_idstringBAG-identificatie van de nummeraanduiding (koppelsleutel binnen de BAG).
straat / huisnummer / huisletter / huisnummertoevoegingstring / intGeadresseerde openbare ruimte en huisnummertoevoegingen.
postcode / woonplaatsstringPostcode (1234AB) en woonplaatsnaam.
gemeente / provincieobject{code, naam}; provincie ook afkorting.
wijk / buurtobjectCBS-gebiedscodes (WK0363AE, BU0363AE02) met naam — direct te gebruiken in de CBS-API.
percelen[]arrayGekoppelde kadastrale percelen (ASD04-F-6417) — direct bruikbaar als locatiehint voor de Kadaster-API.
geometrieobjectcentroide_wgs84 {lon, lat} en centroide_rd {lon, lat}.

Bron en brondocumentatie

Bron: PDOK Locatieserver (BAG). Licentie CC0 1.0 — vrij hergebruik, geen attributie verplicht.
Onderliggende documentatie: pdok.nl · Locatieserver · Kadaster BAG API