Zum Inhalt springen

REST-API

Die kostenlose API — für Home Assistant, eigene Skripte oder jede Wallbox.

Kilonaut hat eine schlanke REST-API, mit der du Ladevorgänge und Kilometerstände programmatisch sendest. Sie ist dauerhaft kostenlos und braucht nur einen persönlichen Token, den du in den Einstellungen unter „API & Home Assistant" erzeugst.

Basis-URL & Authentifizierung

Alle Endpunkte liegen unter der Basis-URL und erwarten den Token als Bearer-Header. Requests und Responses sind JSON.

Base URL:  https://kilonaut.de/api/v1

Authorization: Bearer <dein-token>
Content-Type:  application/json

Endpunkte

GET /api/v1/ping

Testet den Token und gibt den zugehörigen Account zurück. Ideal zum Prüfen der Verbindung.

Response
{
  "ok": true,
  "user": { "email": "you@example.com", "plan": "free" },
  "active_vehicle": "ID.4",
  "server_time": "2026-07-21T12:00:00+00:00"
}
GET /api/v1/sessions

Gibt die letzten 50 Ladevorgänge des Accounts zurück.

Response
{
  "data": [
    {
      "id": 42, "started_at": "2026-07-20T18:00:00+00:00",
      "ended_at": "2026-07-20T20:30:00+00:00", "energy_kwh": 28,
      "cost_cents": 840, "currency": "EUR", "location_type": "home",
      "charge_type": "ac", "status": "confirmed", "source": "api"
    }
  ]
}
POST /api/v1/sessions

Legt einen Ladevorgang an. Heimladungen ohne Kosten werden automatisch mit deinem Tarif bepreist. Der Response ist created, merged oder duplicate.

Response
{
  "status": "created",
  "session": { "id": 161, "energy_kwh": 28, "cost_cents": 840, "status": "unconfirmed", "source": "api" }
}
POST /api/v1/odometer

Legt einen Kilometerstand an. Idempotent je Fahrzeug + Stand + Tag.

Response
{
  "status": "created",
  "reading": { "id": 12, "reading_km": 42500, "recorded_at": "2026-07-21T10:00:00+00:00" }
}
POST /api/v1/charging/status

Live-„lädt gerade"-Heartbeat für die Dashboard-Kachel. Der eigentliche Ladevorgang kommt weiterhin über /sessions am Ladeende.

Response
{
  "ok": true,
  "charging": true,
  "state": { "energy_kwh": 12, "power_kw": 11, "location_type": "home" }
}
Beispiel (POST /sessions)
curl -X POST https://kilonaut.de/api/v1/sessions \
  -H "Authorization: Bearer <dein-token>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: my-charge-2026-07-20-1800" \
  -d '{
    "started_at": "2026-07-20T18:00:00+02:00",
    "ended_at":   "2026-07-20T20:30:00+02:00",
    "energy_kwh": 28.0,
    "location_type": "home",
    "charge_type": "ac"
  }'

Idempotenz & Rate-Limit

Sende bei POST /sessions einen Header „Idempotency-Key" (oder ein externes „external_id"), damit ein Retry dieselbe Ladung zusammenführt statt zu duplizieren. Das Limit liegt großzügig bei 60 Requests pro Minute je Token.

Für Home Assistant musst du nichts davon selbst schreiben — es gibt ein fertiges Paket. Siehe das Kapitel Home Assistant.

Noch Fragen?

Schau in die häufigen Fragen oder melde dich über das Impressum.