News submission and NakBus fleet are now in the partner dashboard
Use the same login (email and password) as your developer account to sign in to the Nakordoni Partners panel, and manage news and your bus fleet (NakDriver / NakManager) there, with team roles. Your API keys, endpoints and apps are unchanged, and the pages here keep working. Open Nakordoni Partners

← All endpoints

Fleet Compliance — Plan Check API Online

Check planned shifts or trip days before dispatch. Send the shifts and the countries they run in as a JSON POST body; each shift comes back with the truck driving bans it hits (weekend, Sunday, holiday and other bans from our truck-ban calendar, filtered by vehicle weight), the public holidays and weekend days it touches, the EU 561 / AETR and 2002/15 breaches the plan would cause, and the earliest legal start: after the required daily or weekly rest and outside every blocking ban.

POST https://nakordoni.eu/api/v2/data/fleet/compliance/plan-check — quota class: heavy

ParameterDescription
shifts(JSON body, required, max 60, span max 62 days) [{start, end, countries?, drive_min?, other_work_min?, activities?}]. Without activities the shift is laid out as other work, then driving in 4 h 30 blocks with 45 min breaks. Each activity: {type: drive | other_work | availability | break | rest, start, end} — ISO-8601 (a datetime without offset is read in tz) or unix seconds. Optional on rests: ferry (true on a ferry or train), sleeper_cabin, scheduled_journey_h, in_vehicle, location (residence | operational_centre | elsewhere — EU 561 Art. 8(8a) 4-week return check). Optional on drives: art12_exceed (true = driving past the limit under EU 561 Art. 12 to reach the operational centre or home for a weekly rest). Gaps between activities count as rest (reported in warnings); overlaps are rejected.
countries(JSON body) ISO country codes used for shifts that do not list their own, e.g. ["DE","AT"].
tz(JSON body) IANA time zone of the plan (datetimes without offset), default UTC. Ban windows use each country's own time zone.
weight_t(JSON body) Vehicle weight in tonnes; bans with a weight threshold at or above it are skipped. Omitted = every ban is included.
history(JSON body) Recent activities before the plan (format as in validate) so rests and budgets carry over.
last_weekly_rest_end(JSON body) End of the last weekly rest before the plan.
ruleset(JSON body) eu561 (default) or aetr. crew single | double. international_goods, include_wtd, wtd as in validate.
allow_reduced_daily_rest(JSON body) true = suggestions may use a 9 h reduced daily rest (default: 11 h).
allow_reduced_weekly_rest(JSON body) true = suggestions may use a 24 h reduced weekly rest (default: 45 h).
blocking_types(JSON body) Ban types that move a suggested start (default Sunday, Saturday, Holiday, Holiday Eve, General; nationwide bans only). Others are still flagged.

Response fields — inside the data object of the envelope. [] marks a list, so data.items[].name is the name field of each element. A field is null, absent or an empty list when we hold no value for it — never a placeholder.

FieldDescription
data.shifts[]Per shift: index, start, end, countries, duration_min, flags[], violations[], suggested_start, suggested_end, delay_min, delay_reasons[] (daily_rest, weekly_rest, truck_ban:<CC>:<type>).
data.shifts[].flags[]type truck_ban (country, date, restriction_type, from, until, scope, details, min_weight_t, blocking, overlap_min), public_holiday (country, date, names, truck_ban_recorded) or weekend (country, date, day).
data.violations[]Every EU 561 / AETR / 2002/15 breach of the plan, in the validate format.
data.remaining_after_planDriving budgets and next rests after the last planned shift (validate remaining.driving).
data.summaryshift_count, shifts_flagged, shifts_moved, violation_count, ban_windows_considered, countries, ruleset, crew.
data.warnings[]e.g. shift_layout_overflows, holidays_unavailable; data.assumptions[] says how missing input was read.
curl -X POST "https://nakordoni.eu/api/v2/data/fleet/compliance/plan-check" \
  -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "countries": [
        "DE"
    ],
    "tz": "Europe/Berlin",
    "weight_t": 40,
    "shifts": [
        {
            "start": "2026-11-07T06:00:00",
            "end": "2026-11-07T16:45:00"
        },
        {
            "start": "2026-11-08T06:00:00",
            "end": "2026-11-08T15:00:00"
        }
    ]
}'
🔑 Log in as a developer to try this endpoint live in the sandbox — 10 free test calls per product a day. Log in

Updated