Services

Address API – Distance & ETA

Straßendistanz und Fahrzeit. Nutzt GraphHopper (Profile: car, bike, foot) und fällt bei Bedarf auf Haversine + Durchschnittsgeschwindigkeit zurück.

Route

  • Methode: POST
  • URL: /api/address/distance
  • Auth: x-api-key (Header) oder intern

Request

  • from, to: string – Adresse/Ort (optional, alternativ zu Koordinaten)
  • fromLat/fromLng, toLat/toLng: number – Koordinaten (optional)
  • mode: walk | bike | car | train (train → Fallback)
  • startAt: ISO datetime (optional; für ETA)

Beispiel

/api/address/distance (POST)

{
  "from": "Berlin Hbf",
  "to": "München Hbf",
  "mode": "car"
}
curl -X POST "https://dev.nuvisphere.de/api/address/distance" \
  -H "Content-Type: application/json" \
  -H "x-api-key: API_KEY"
  -d '{
  "from": "Berlin Hbf",
  "to": "München Hbf",
  "mode": "car"
}'
// server-side (Node/Next.js)
const res = await fetch("https://dev.nuvisphere.de/api/address/distance", {
  method: "POST",
  headers: {
    "content-type": "application/json",
    "x-api-key": process.env.MAILER_API_KEY!,

  },
  body: JSON.stringify({
  "from": "Berlin Hbf",
  "to": "München Hbf",
  "mode": "car"
}),
});
if (!res.ok) throw new Error(`Request failed ${res.status}`);
const json = await res.json();
  • API Key niemals im Browser verwenden – nur serverseitig (z. B. process.env.MAILER_API_KEY).
  • Lässt du optionale Felder weg, nutzt die API ggf. Template-/Defaultwerte.
  • Unterstützte Modi: walk (foot), bike, car.
  • train ist nicht verfügbar – Fallback wird genutzt.
  • Optional: Koordinaten direkt über fromLat/fromLng & toLat/toLng angeben.

Antwort

  • method: " graphhopper " oder " haversine_fallback "
  • distance.meters, distance.kilometers
  • duration.seconds, duration.human, duration.eta

Next.js Beispiel

Next.js Route Handler

{
  "from": "Berlin Hbf",
  "to": "München Hbf",
  "mode": "car"
}
curl -X POST "https://dev.nuvisphere.de/api/address/distance" \
  -H "Content-Type: application/json" \
  -H "x-api-key: API_KEY"
  -d '{
  "from": "Berlin Hbf",
  "to": "München Hbf",
  "mode": "car"
}'
// server-side (Node/Next.js)
const res = await fetch("https://dev.nuvisphere.de/api/address/distance", {
  method: "POST",
  headers: {
    "content-type": "application/json",
    "x-api-key": process.env.MAILER_API_KEY!,

  },
  body: JSON.stringify({
  "from": "Berlin Hbf",
  "to": "München Hbf",
  "mode": "car"
}),
});
if (!res.ok) throw new Error(`Request failed ${res.status}`);
const json = await res.json();
  • API Key niemals im Browser verwenden – nur serverseitig (z. B. process.env.MAILER_API_KEY).
  • Lässt du optionale Felder weg, nutzt die API ggf. Template-/Defaultwerte.
  • Integriere serverseitig, um API-Keys zu schützen.

Screenshot

Distance UI Placeholder