Each (vehicle, stop) pair receives one of these verdicts in the response. blocked stops include the citation, the suggested re-assignment, and an exemption-portal URL where one applies.
POST /v1/precheck · auth: bearer token in Authorization header.
{
"fleet_id": "amsterdam-primary",
"date": "2026-05-08",
"vehicles": [
{ "kenteken": "VPK-43-X", "internal_id": "VAN-07" },
{ "kenteken": "GH-321-K", "internal_id": "VAN-11" },
{ "kenteken": "EV-882-N", "internal_id": "EV-03" }
],
"stops": [
{ "stop_id": "S-01", "address": "Prinsengracht 263, 1016 GV Amsterdam", "vehicle_id": "VAN-11", "window": "08:00-09:30" },
{ "stop_id": "S-02", "address": "Damrak 9, 1012 LG Amsterdam", "vehicle_id": "VAN-11", "window": "09:30-10:30" },
{ "stop_id": "S-03", "address": "Amstelveenseweg 491, 1081 KP Amsterdam","vehicle_id": "VAN-11", "window": "10:30-11:30" },
{ "stop_id": "S-04", "address": "Burgerweeshuispad 201, 1076 GR Amsterdam","vehicle_id": "EV-03", "window": "08:00-09:00" }
]
}
Strict JSON. verdict values are always one of allowed, allowed_with_exemption, or blocked. fine_band_source always cites the originating ordinance so an ops team can audit our reading.
{
"fleet_id": "amsterdam-primary",
"date": "2026-05-08",
"summary": {
"stops_checked": 4,
"allowed": 2,
"allowed_with_exemption": 0,
"blocked": 2,
"estimated_fine_exposure_eur": 260
},
"vehicles": [
{
"internal_id": "VAN-07", "kenteken": "VPK-43-X",
"rdw": { "category": "N1", "fuel": "diesel", "euro_class": "EURO_6", "first_registration": "2018-04-12", "verified_utc": "2026-05-08T03:11:18Z" },
"verdict": "allowed",
"verdict_note": "Cleared for Amsterdam Centrum LEZ until 2027-01-01."
},
{
"internal_id": "VAN-11", "kenteken": "GH-321-K",
"rdw": { "category": "N1", "fuel": "diesel", "euro_class": "EURO_5", "first_registration": "2014-09-02", "verified_utc": "2026-05-08T03:11:19Z" },
"verdict": "blocked",
"verdict_note": "Blocked from Amsterdam Centrum LEZ. Euro-5 diesel N1 vans without an active exemption are excluded since 2026-04-01."
},
{
"internal_id": "EV-03", "kenteken": "EV-882-N",
"rdw": { "category": "N1", "fuel": "electric", "euro_class": null, "first_registration": "2024-11-30", "verified_utc": "2026-05-08T03:11:19Z" },
"verdict": "allowed",
"verdict_note": "Cleared for Amsterdam Centrum LEZ and the post-2027 ZE-zone."
}
],
"stops": [
{
"stop_id": "S-01", "vehicle_id": "VAN-11", "verdict": "blocked",
"reason": "Stop falls inside Amsterdam Centrum LEZ; assigned vehicle VAN-11 is Euro-5 diesel N1; exclusion in effect since 2026-04-01.",
"fine_eur_if_assigned": 130,
"fine_band_source": "Gemeente Amsterdam — Milieuzone Centrum, fines schedule 2026 (vans/cars/coaches: 130; lorries: 320).",
"suggested_action": "Re-assign to VAN-07 or EV-03; or apply for time-bound exemption via Centraal Loket Milieuzones (24h response).",
"exemption_portal_url": "https://centraallokaalmilieuzonebeleid.nl/aanvraag/"
},
{
"stop_id": "S-02", "vehicle_id": "VAN-11", "verdict": "blocked",
"reason": "Damrak is inside Amsterdam Centrum LEZ; same Euro-5 diesel exclusion applies.",
"fine_eur_if_assigned": 130,
"suggested_action": "Re-assign to VAN-07 (already on outer ring; can pick up this stop without ring-breaking)."
},
{
"stop_id": "S-03", "vehicle_id": "VAN-11", "verdict": "allowed",
"reason": "Amstelveenseweg 491 is outside Amsterdam Centrum LEZ; only LEZ Ring A10 ban applies, which Euro-5 N1 still passes."
},
{
"stop_id": "S-04", "vehicle_id": "EV-03", "verdict": "allowed",
"reason": "Electric N1 cleared for Centrum LEZ + ZE-zone; no restriction at this address through 2027."
}
],
"verified_against": [
{ "source": "Gemeente Amsterdam — Milieuzone Centrum", "url": "https://www.amsterdam.nl/parkeren-verkeer/milieuzone/", "last_pulled_utc": "2026-05-07T04:00:00Z" },
{ "source": "RDW Open Data SODA (m9d7-ebf2)", "url": "https://opendata.rdw.nl/Voertuigen/Open-Data-RDW-Gekentekende_voertuigen/m9d7-ebf2", "last_pulled_utc": "2026-05-08T03:11:19Z" },
{ "source": "Centraal Loket Milieuzones (CLM)", "url": "https://centraallokaalmilieuzonebeleid.nl/", "last_pulled_utc": "2026-05-07T04:00:00Z" }
],
"report_id": "FK-PRE-20260508-amsterdam-primary-001",
"generated_utc": "2026-05-08T03:11:21Z"
}
{
"error": "rdw_lookup_failed",
"kenteken": "GH-321-K",
"message": "RDW returned 503; will retry the precheck on next call. Fall back to last-known snapshot from 2026-05-06T03:11:19Z (5 days old).",
"fallback_used": true,
"fallback_age_seconds": 432000
}
RDW fallback snapshots are clearly flagged in the response so you can choose to defer high-stakes dispatches when the data is older than your tolerance window.
The pilot endpoint is issued after we accept your application. Apply for a free 14-day Amsterdam pilot at fleetkeur.com/#waitlist.