News submission and NakBus fleet are now in the partner dashboard
Connect your developer account to a Nakordoni Partners account with the same email 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

Checkpoints Directory API Online

Directory of all monitored border checkpoints: IDs, names, countries, coordinates and status. Use it to discover ppid values for the other APIs.

GET https://nakordoni.eu/api/v1/data/checkpoints — quota class: cheap

ParameterDescription
countryFilter by numeric country code (1=UA, 2=PL, 3=SK, 4=HU, 5=RO, 6=MD, 7=BY, 8=LT, 9=LV, …)
langLanguage for checkpoint names (default en)

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.checkpoints[].ppidCheckpoint ID — the value every other product's ppid parameter takes.
data.checkpoints[].nameCheckpoint name in the requested language.
data.checkpoints[].originNumeric country code of the side the crossing is operated from.
data.checkpoints[].destinationNumeric country code of the country across the border.
data.checkpoints[].crossing_typeVehicle type this row is monitored for: 4=car, 5=taxfree car, 6=bus, 7=pedestrian, 8=truck (Freight Transport), 9=truck up to 7.5 t.
data.checkpoints[].timezoneIANA timezone of the crossing — every timestamp for it is in this zone.
data.checkpoints[].status1=open, 3=closed, 0=inactive.
data.checkpoints[].redirect_toPresent only on a checkpoint that was RETIRED as a duplicate of another one at the same physical crossing: the ppid that superseded it. Such a row always carries status 0 — point your integration at the id named here. The retired id still answers the other products for now, but it is not the canonical one and is not guaranteed to keep updating.
data.checkpoints[].has_day_statsfalse means the Best Time to Cross product has no matrix for this checkpoint and would answer 404 — skip it rather than poll it.
data.checkpoints[].has_live_dataWhether a live queue value currently exists for this checkpoint, i.e. whether the queue and border products will return a number for it rather than nothing. It says nothing about how recent that number is — read last_observation for that. About 65 of the monitored checkpoints have no live source at all. Absent from every row if the live-value store could not be read at all, so treat "key missing" as unknown, not as false.
data.checkpoints[].last_observationISO 8601 timestamp of the live value behind has_live_data, or null when there is none. Some checkpoints keep answering with a value that stopped moving long ago — a few of them years ago — so check this age before presenting the queue as current.
data.checkpoints[].data_qualityHow the current live value was arrived at: high = counted from a real observation source at the crossing, low = a modelled estimate where no counting source exists. Same vocabulary as the Best Time to Cross and live queue products. Present only when has_live_data is true; omitted otherwise. Both are real answers — low is not an error — but a low value is an estimate and should be labelled as one if you show it to drivers.
data.countNumber of checkpoints returned.
curl "https://nakordoni.eu/api/v1/data/checkpoints" \
  -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"
🔑 Log in as a developer to try this endpoint live in the sandbox — 50 free test calls a day. Log in

Updated