API voor 112-meldingen
P2000 is openbaar. Bruikbaar is het niet: het is een stroom halve zinnen met codes en afkortingen. Wij leveren het resultaat van het uitzoekwerk — met coördinaten, een leesbare straat en een incident-nummer — binnen een seconde na de alarmering.
Wat je krijgt bovenop de ruwe stroom
- Coördinaten
- Wij zetten
Nemerlaerhof Helmondom naar een punt, met de precisie erbij: adres, straat, postcode of alleen de woonplaats. Je weet dus ook hóé nauwkeurig het is. - Echte straatnamen
- Elke gevonden naam wordt getoetst aan de lijst van alle 171.664 Nederlandse straatnamen. Geen achtervoegselgokwerk, dus ook "Balatonmeer" en "Het Zand" komen eruit.
- Dienst en urgentie
- Brandweer, ambulance, politie of KNRM, met de urgentiecode los daarvan. Spreekt de berichtkop de capcodes tegen, dan winnen de capcodes.
- Eenheden
- Roepnummers vertaald naar wat het is: tankautospuit, zorgambulance, mobiel medisch team — inclusief de kazerne waar hij vandaan komt.
- Incidenten
- Oproepen die bij elkaar horen zitten onder één
incident_id, zodat je niet zes keer dezelfde brand doorgeeft. - Gemeten vluchten
- Bij een traumahelikopter koppelen we de ADS-B-vlucht aan de alarmering: opgestegen om, boven de locatie om, op zoveel meter. Dat is een tweede bron, geen afleiding.
Wat wij niet leveren: de afloop van een inzet. P2000 meldt nooit dat iets klaar is, en wij verzinnen dat niet.
Meldingen ophalen
curl -H "X-API-Key: JOUW_SLEUTEL" \ "https://112hier.nl/api/v1/meldingen?dienst=brandweer&limiet=50"
Blijf bij: onthoud laatste_id uit het antwoord en vraag de volgende ronde op met ?sinds=. Dan krijg je alleen wat je nog niet had.
GET /api/v1/meldingen?sinds=1395
| Parameter | Betekenis |
|---|---|
sinds | alleen meldingen met een hoger id |
dienst | brandweer, ambulance, politie, knrm |
regio | VR01 t/m VR25 |
plaats | woonplaats, bijvoorbeeld haarlem |
urgentie | A0, A1, A2, P 1, PRIO 1 … |
met_locatie | 1 = alleen meldingen die op de kaart staan |
limiet | 1 – 200, standaard 50 |
Webhook: wij bellen jou
Pollen is prima, maar een webhook is sneller en scheelt verkeer. Zodra er een melding binnenkomt die aan je filter voldoet, sturen wij hem door.
curl -X POST -H "X-API-Key: JOUW_SLEUTEL" \
-H "Content-Type: application/json" \
-d '{
"url": "https://jouwsite.nl/hook",
"soort": "melding",
"filters": { "regio": "VR12", "dienst": "brandweer" }
}' \
https://112hier.nl/api/v1/webhooks
Filteren kan op dienst, regio, plaats, urgentie of op een straal: {"lat":52.38,"lon":4.64,"straal_km":15}.
Controleren dat wij het zijn
Elke levering krijgt twee headers mee. Bereken zelf de handtekening en vergelijk; wijkt hij af, gooi het bericht weg.
X-112hier-Timestamp: 1789926000 X-112hier-Signature: sha256=<hmac> hmac = HMAC_SHA256(geheim, "<timestamp>.<body>")
Wij proberen drie keer met oplopende pauze. Een 4xx zien we als "aan jouw kant fout" en herhalen we niet. Twintig mislukkingen achter elkaar zet de webhook uit; je ziet dat terug bij GET /api/v1/webhooks. Met POST /api/v1/webhooks/<id>/test stuur je jezelf een proefbericht, zodat je je ontvanger kunt bouwen zonder op een brand te wachten.
Alle ingangen
| Adres | Wat het doet |
|---|---|
GET /api/v1/meldingen | losse alarmeringen, nieuwste eerst (of vooruit met sinds) |
GET /api/v1/meldingen/<id> | één melding |
GET /api/v1/incidenten | samengevoegde gebeurtenissen |
GET /api/v1/incidenten/<id> | incident met alle oproepen én gemeten helikoptervluchten |
GET /api/v1/ontvangst | hoe onze antenne het doet — dezelfde cijfers als hier |
GET /api/v1/webhooks | je webhooks, met foutstatus |
POST /api/v1/webhooks | webhook aanmaken |
DELETE /api/v1/webhooks/<id> | webhook weghalen |
Limiet staat in de headers X-RateLimit-Limit en X-RateLimit-Remaining. Zit je eroverheen, dan krijg je 429 — gebruik dan een webhook in plaats van vaker te pollen.
Eerlijk over wat dit is
Wij ontvangen P2000 met één antenne op één plek. Wat die antenne niet haalt, staat ook niet in deze API. Op de ontvangstpagina staat live hoeveel dat is: aantal berichten per uur, aandeel schoon ontvangen en de langste stilte. Wij publiceren die cijfers ook als ze tegenvallen, zodat je zelf kunt beoordelen of dit goed genoeg is voor wat jij ermee wilt.
De duiding — dienst, straat, coördinaat, incidentindeling — is ons werk en dus ons oordeel. Elk veld zegt erbij hoe zeker het is: precisie bij de locatie, kwaliteit bij de melding, inschatting bij het incident. Wat wij niet weten, is null en niet weggelaten.
Gebruik het niet voor iets waar levens van afhangen. Dit is een hobbyontvanger, geen C2000-aansluiting.