Zum Inhalt springen
API-Referenz

Geräte

9 Endpunkte

Geräte auflisten

get/v1/devices

Ladepunkte mit aktuellem Zustand, Tarif, Abrechnungsmodell und QR-Code-URL.

Parameter

NameOrtTyp
location_idoptionalAbfragestring
kindoptionalAbfragestring

Antwort 200DeviceList

NameTypBeschreibung
objectPflicht"list"
dataPflichtDevice[]
has_morePflichtboolean

Mögliche Fehler

  • 400 Anfrage ungültig
  • 401 Nicht angemeldet
  • 403 Berechtigung fehlt
  • 404 Nicht gefunden
  • 409 Zustand passt nicht
  • 429 Zu viele Anfragen
Beispiel
curl -X GET https://api.ladehase.com/v1/devices \n  -H "Authorization: Bearer lh_test_…"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "dev_7d3a9c1b0e2f4a6b",
      "object": "device",
      "kind": "string",
      "livemode": true,
      "name": "Ladepunkt Scheune",
      "location_id": "string",
      "integration_id": "string",
      "manufacturer": "string",
      "model": "string",
      "serial_number": "string",
      "max_power_w": 0,
      "tariff_id": "string",
      "billing": {},
      "enabled": true,
      "locked": true,
      "prepared": true,
      "status": "string",
      "state": {
        "online": true,
        "status": "string",
        "cable_plugged": true,
        "power_w": 0,
        "meter_wh": 0,
        "authorization_required": true,
        "last_seen_at": "2026-10-25T08:30:00.000Z",
        "error": "string"
      },
      "active_session_id": "string",
      "connectors": [
        {
          "id": "string",
          "code": "string",
          "url": "string"
        }
      ],
      "created_at": "string"
    }
  ],
  "has_more": true
}

Gerät abrufen

get/v1/devices/{id}

Ein Gerät mit Zustand.

Parameter

NameOrtTyp
idPflichtPfadstring

Antwort 200Device

NameTypBeschreibung
idPflichtstringID mit Präfix «dev_»
objectPflicht"device"
kindPflichtstringGeräteart, vorerst «ev_charger»
livemodePflichtboolean
namePflichtstring
location_idPflichtstring
integration_idPflichtstring | null
manufacturerPflichtstring | null
modelPflichtstring | null
serial_numberPflichtstring | null
max_power_wPflichtinteger | null
tariff_idPflichtstring | null
billingPflichtobjectAbrechnungsmodell, Reservationsgrenzen, Pakete
enabledPflichtbooleanVon Ladehase verwaltet und für Fahrende freigegeben
lockedPflichtbooleanVorübergehend gesperrt (keine neuen Ladungen)
preparedPflichtboolean«Autorisierung erforderlich» beim Hersteller gesetzt
statusPflichtstringZusammengefasster Status für Anzeigen
statePflichtDeviceState
active_session_idPflichtstring | null
connectorsPflichtobject[]
created_atPflichtstring

Mögliche Fehler

  • 400 Anfrage ungültig
  • 401 Nicht angemeldet
  • 403 Berechtigung fehlt
  • 404 Nicht gefunden
  • 409 Zustand passt nicht
  • 429 Zu viele Anfragen
Beispiel
curl -X GET https://api.ladehase.com/v1/devices/{id} \n  -H "Authorization: Bearer lh_test_…"
Antwort 200
{
  "id": "dev_7d3a9c1b0e2f4a6b",
  "object": "device",
  "kind": "string",
  "livemode": true,
  "name": "Ladepunkt Scheune",
  "location_id": "string",
  "integration_id": "string",
  "manufacturer": "string",
  "model": "string",
  "serial_number": "string",
  "max_power_w": 0,
  "tariff_id": "string",
  "billing": {},
  "enabled": true,
  "locked": true,
  "prepared": true,
  "status": "string",
  "state": {
    "online": true,
    "status": "string",
    "cable_plugged": true,
    "power_w": 0,
    "meter_wh": 0,
    "authorization_required": true,
    "last_seen_at": "2026-10-25T08:30:00.000Z",
    "error": "string"
  },
  "active_session_id": "string",
  "connectors": [
    {
      "id": "string",
      "code": "string",
      "url": "string"
    }
  ],
  "created_at": "string"
}

Gerät ändern

patch/v1/devices/{id}

Name, Standort, Tarif, Abrechnungsmodell (reservation, prepaid, both), Reservationsgrenzen, Pakete. `enabled: true` aktiviert das Gerät und setzt beim Hersteller «Autorisierung erforderlich».

Parameter

NameOrtTyp
idPflichtPfadstring

Anfrage

NameTypBeschreibung
nameoptionalstring
location_idoptionalstring
tariff_idoptionalstring | null
billingoptionalobject
enabledoptionalboolean

Antwort 200Device

NameTypBeschreibung
idPflichtstringID mit Präfix «dev_»
objectPflicht"device"
kindPflichtstringGeräteart, vorerst «ev_charger»
livemodePflichtboolean
namePflichtstring
location_idPflichtstring
integration_idPflichtstring | null
manufacturerPflichtstring | null
modelPflichtstring | null
serial_numberPflichtstring | null
max_power_wPflichtinteger | null
tariff_idPflichtstring | null
billingPflichtobjectAbrechnungsmodell, Reservationsgrenzen, Pakete
enabledPflichtbooleanVon Ladehase verwaltet und für Fahrende freigegeben
lockedPflichtbooleanVorübergehend gesperrt (keine neuen Ladungen)
preparedPflichtboolean«Autorisierung erforderlich» beim Hersteller gesetzt
statusPflichtstringZusammengefasster Status für Anzeigen
statePflichtDeviceState
active_session_idPflichtstring | null
connectorsPflichtobject[]
created_atPflichtstring

Mögliche Fehler

  • 400 Anfrage ungültig
  • 401 Nicht angemeldet
  • 403 Berechtigung fehlt
  • 404 Nicht gefunden
  • 409 Zustand passt nicht
  • 429 Zu viele Anfragen
Beispiel
curl -X PATCH https://api.ladehase.com/v1/devices/{id} \n  -H "Authorization: Bearer lh_test_…" \n  -H "Content-Type: application/json" \n  -d '{"name":"string","location_id":"string","tariff_id":"string","billing":{"model":"reservation","reservationDefault":3000,"reservationMin":1000,"reservationMax":10000,"safetyMarginBps":300,"packages":[],"prepaidRemainder":"refund","plugTimeoutMinutes":10,"maxDurationMinutes":1440},"enabled":true}'
Antwort 200
{
  "id": "dev_7d3a9c1b0e2f4a6b",
  "object": "device",
  "kind": "string",
  "livemode": true,
  "name": "Ladepunkt Scheune",
  "location_id": "string",
  "integration_id": "string",
  "manufacturer": "string",
  "model": "string",
  "serial_number": "string",
  "max_power_w": 0,
  "tariff_id": "string",
  "billing": {},
  "enabled": true,
  "locked": true,
  "prepared": true,
  "status": "string",
  "state": {
    "online": true,
    "status": "string",
    "cable_plugged": true,
    "power_w": 0,
    "meter_wh": 0,
    "authorization_required": true,
    "last_seen_at": "2026-10-25T08:30:00.000Z",
    "error": "string"
  },
  "active_session_id": "string",
  "connectors": [
    {
      "id": "string",
      "code": "string",
      "url": "string"
    }
  ],
  "created_at": "string"
}

Zustand abfragen

get/v1/devices/{id}/state

Aktueller Zustand. Mit `refresh=true` wird beim Hersteller nachgefragt.

Parameter

NameOrtTyp
idPflichtPfadstring
refreshoptionalAbfrageboolean | null

Antwort 200DeviceState

NameTypBeschreibung
onlineoptionalboolean
statusoptionalstringoffline, available, vehicle_connected, awaiting_authorization, charging, suspended, finished, error
cable_pluggedoptionalboolean
power_woptionalintegerAktuelle Leistung in Watt
meter_whoptionalinteger | nullZählerstand in Wh
authorization_requiredoptionalboolean | null
last_seen_atoptionalstring | nullZeitpunkt (ISO 8601, UTC)
erroroptionalstring | null

Mögliche Fehler

  • 400 Anfrage ungültig
  • 401 Nicht angemeldet
  • 403 Berechtigung fehlt
  • 404 Nicht gefunden
  • 409 Zustand passt nicht
  • 429 Zu viele Anfragen
Beispiel
curl -X GET https://api.ladehase.com/v1/devices/{id}/state \n  -H "Authorization: Bearer lh_test_…"
Antwort 200
{
  "online": true,
  "status": "string",
  "cable_plugged": true,
  "power_w": 0,
  "meter_wh": 0,
  "authorization_required": true,
  "last_seen_at": "2026-10-25T08:30:00.000Z",
  "error": "string"
}

Ladung ohne Zahlung starten

post/v1/devices/{id}/start

Gibt den Ladepunkt ohne Zahlung frei (z. B. eigenes Auto). Ladehase legt dafür eine Gratis-Sitzung an, damit die Energie erfasst wird.

Parameter

NameOrtTyp
idPflichtPfadstring
idempotency-keyoptionalWiederholbare Anfragen ohne doppelte Wirkung (24 Stunden)Kopfzeilestring

Antwort 201Session

NameTypBeschreibung
idPflichtstringID mit Präfix «ses_»
objectPflicht"session"
livemodePflichtboolean
statePflichtstringZustand gemäss Zustandsautomat (created … settled)
modePflicht"reservation" | "prepaid" | "access"
channelPflicht"qr" | "terminal" | "api" | "rfid" | "access_link"
location_idPflichtstring
device_idPflichtstring
connector_idPflichtstring
currencyPflichtstring
authorized_amountPflichtintegerReservierter beziehungsweise bezahlter Betrag in Rappen
amountPflichtintegerHochgerechneter Betrag (laufend) oder Endbetrag in Rappen
captured_amountPflichtintegerBelasteter Betrag in Rappen
refunded_amountPflichtintegerZurückerstatteter Betrag in Rappen
vat_amountPflichtintegerMWST-Anteil in Rappen
energy_whPflichtintegerGeladene Energie in Wh
idle_minutesPflichtinteger
stop_reasonPflichtstring | null
receipt_numberPflichtstring | null
started_atPflichtstring | nullZeitpunkt (ISO 8601, UTC)
ended_atPflichtstring | nullZeitpunkt (ISO 8601, UTC)
settled_atPflichtstring | nullZeitpunkt (ISO 8601, UTC)
created_atPflichtstring

Mögliche Fehler

  • 400 Anfrage ungültig
  • 401 Nicht angemeldet
  • 403 Berechtigung fehlt
  • 404 Nicht gefunden
  • 409 Zustand passt nicht
  • 429 Zu viele Anfragen
Beispiel
curl -X POST https://api.ladehase.com/v1/devices/{id}/start \n  -H "Authorization: Bearer lh_test_…"
Antwort 201
{
  "id": "ses_1a2b3c4d5e6f7a8b9c0d",
  "object": "session",
  "livemode": true,
  "state": "string",
  "mode": "reservation",
  "channel": "qr",
  "location_id": "string",
  "device_id": "string",
  "connector_id": "string",
  "currency": "string",
  "authorized_amount": 1235,
  "amount": 1235,
  "captured_amount": 1235,
  "refunded_amount": 1235,
  "vat_amount": 1235,
  "energy_wh": 0,
  "idle_minutes": 0,
  "stop_reason": "string",
  "receipt_number": "string",
  "started_at": "2026-10-25T08:30:00.000Z",
  "ended_at": "2026-10-25T08:30:00.000Z",
  "settled_at": "2026-10-25T08:30:00.000Z",
  "created_at": "string"
}

Ladung am Gerät stoppen

post/v1/devices/{id}/stop

Stoppt die laufende Sitzung des Geräts und rechnet ab. Ohne Sitzung wird nur der Stoppbefehl gesendet.

Parameter

NameOrtTyp
idPflichtPfadstring
idempotency-keyoptionalWiederholbare Anfragen ohne doppelte Wirkung (24 Stunden)Kopfzeilestring

Antwort 200Object

Mögliche Fehler

  • 400 Anfrage ungültig
  • 401 Nicht angemeldet
  • 403 Berechtigung fehlt
  • 404 Nicht gefunden
  • 409 Zustand passt nicht
  • 429 Zu viele Anfragen
Beispiel
curl -X POST https://api.ladehase.com/v1/devices/{id}/stop \n  -H "Authorization: Bearer lh_test_…"
Antwort 200
{}

Gerät sperren

post/v1/devices/{id}/lock

Keine neuen Ladungen, laufende Ladung läuft weiter.

Parameter

NameOrtTyp
idPflichtPfadstring
idempotency-keyoptionalWiederholbare Anfragen ohne doppelte Wirkung (24 Stunden)Kopfzeilestring

Antwort 200Device

NameTypBeschreibung
idPflichtstringID mit Präfix «dev_»
objectPflicht"device"
kindPflichtstringGeräteart, vorerst «ev_charger»
livemodePflichtboolean
namePflichtstring
location_idPflichtstring
integration_idPflichtstring | null
manufacturerPflichtstring | null
modelPflichtstring | null
serial_numberPflichtstring | null
max_power_wPflichtinteger | null
tariff_idPflichtstring | null
billingPflichtobjectAbrechnungsmodell, Reservationsgrenzen, Pakete
enabledPflichtbooleanVon Ladehase verwaltet und für Fahrende freigegeben
lockedPflichtbooleanVorübergehend gesperrt (keine neuen Ladungen)
preparedPflichtboolean«Autorisierung erforderlich» beim Hersteller gesetzt
statusPflichtstringZusammengefasster Status für Anzeigen
statePflichtDeviceState
active_session_idPflichtstring | null
connectorsPflichtobject[]
created_atPflichtstring

Mögliche Fehler

  • 400 Anfrage ungültig
  • 401 Nicht angemeldet
  • 403 Berechtigung fehlt
  • 404 Nicht gefunden
  • 409 Zustand passt nicht
  • 429 Zu viele Anfragen
Beispiel
curl -X POST https://api.ladehase.com/v1/devices/{id}/lock \n  -H "Authorization: Bearer lh_test_…"
Antwort 200
{
  "id": "dev_7d3a9c1b0e2f4a6b",
  "object": "device",
  "kind": "string",
  "livemode": true,
  "name": "Ladepunkt Scheune",
  "location_id": "string",
  "integration_id": "string",
  "manufacturer": "string",
  "model": "string",
  "serial_number": "string",
  "max_power_w": 0,
  "tariff_id": "string",
  "billing": {},
  "enabled": true,
  "locked": true,
  "prepared": true,
  "status": "string",
  "state": {
    "online": true,
    "status": "string",
    "cable_plugged": true,
    "power_w": 0,
    "meter_wh": 0,
    "authorization_required": true,
    "last_seen_at": "2026-10-25T08:30:00.000Z",
    "error": "string"
  },
  "active_session_id": "string",
  "connectors": [
    {
      "id": "string",
      "code": "string",
      "url": "string"
    }
  ],
  "created_at": "string"
}

Gerät entsperren

post/v1/devices/{id}/unlock

Hebt die Sperre auf.

Parameter

NameOrtTyp
idPflichtPfadstring
idempotency-keyoptionalWiederholbare Anfragen ohne doppelte Wirkung (24 Stunden)Kopfzeilestring

Antwort 200Device

NameTypBeschreibung
idPflichtstringID mit Präfix «dev_»
objectPflicht"device"
kindPflichtstringGeräteart, vorerst «ev_charger»
livemodePflichtboolean
namePflichtstring
location_idPflichtstring
integration_idPflichtstring | null
manufacturerPflichtstring | null
modelPflichtstring | null
serial_numberPflichtstring | null
max_power_wPflichtinteger | null
tariff_idPflichtstring | null
billingPflichtobjectAbrechnungsmodell, Reservationsgrenzen, Pakete
enabledPflichtbooleanVon Ladehase verwaltet und für Fahrende freigegeben
lockedPflichtbooleanVorübergehend gesperrt (keine neuen Ladungen)
preparedPflichtboolean«Autorisierung erforderlich» beim Hersteller gesetzt
statusPflichtstringZusammengefasster Status für Anzeigen
statePflichtDeviceState
active_session_idPflichtstring | null
connectorsPflichtobject[]
created_atPflichtstring

Mögliche Fehler

  • 400 Anfrage ungültig
  • 401 Nicht angemeldet
  • 403 Berechtigung fehlt
  • 404 Nicht gefunden
  • 409 Zustand passt nicht
  • 429 Zu viele Anfragen
Beispiel
curl -X POST https://api.ladehase.com/v1/devices/{id}/unlock \n  -H "Authorization: Bearer lh_test_…"
Antwort 200
{
  "id": "dev_7d3a9c1b0e2f4a6b",
  "object": "device",
  "kind": "string",
  "livemode": true,
  "name": "Ladepunkt Scheune",
  "location_id": "string",
  "integration_id": "string",
  "manufacturer": "string",
  "model": "string",
  "serial_number": "string",
  "max_power_w": 0,
  "tariff_id": "string",
  "billing": {},
  "enabled": true,
  "locked": true,
  "prepared": true,
  "status": "string",
  "state": {
    "online": true,
    "status": "string",
    "cable_plugged": true,
    "power_w": 0,
    "meter_wh": 0,
    "authorization_required": true,
    "last_seen_at": "2026-10-25T08:30:00.000Z",
    "error": "string"
  },
  "active_session_id": "string",
  "connectors": [
    {
      "id": "string",
      "code": "string",
      "url": "string"
    }
  ],
  "created_at": "string"
}

Testgerät steuern

post/v1/devices/{id}/simulate

Nur Testmodus: simuliertes Auto anstecken (`plug`), abziehen (`unplug`), offline, Störung, Leistung ändern.

Parameter

NameOrtTyp
idPflichtPfadstring
idempotency-keyoptionalWiederholbare Anfragen ohne doppelte Wirkung (24 Stunden)Kopfzeilestring

Anfrage

NameTypBeschreibung
actionPflicht"plug" | "unplug" | "offline" | "online" | "error" | "clear_error" | "set_power"
vehicle_need_whoptionalinteger
power_woptionalinteger

Antwort 200DeviceState

NameTypBeschreibung
onlineoptionalboolean
statusoptionalstringoffline, available, vehicle_connected, awaiting_authorization, charging, suspended, finished, error
cable_pluggedoptionalboolean
power_woptionalintegerAktuelle Leistung in Watt
meter_whoptionalinteger | nullZählerstand in Wh
authorization_requiredoptionalboolean | null
last_seen_atoptionalstring | nullZeitpunkt (ISO 8601, UTC)
erroroptionalstring | null

Mögliche Fehler

  • 400 Anfrage ungültig
  • 401 Nicht angemeldet
  • 403 Berechtigung fehlt
  • 404 Nicht gefunden
  • 409 Zustand passt nicht
  • 429 Zu viele Anfragen
Beispiel
curl -X POST https://api.ladehase.com/v1/devices/{id}/simulate \n  -H "Authorization: Bearer lh_test_…" \n  -H "Content-Type: application/json" \n  -d '{"action":"plug","vehicle_need_wh":0,"power_w":0}'
Antwort 200
{
  "online": true,
  "status": "string",
  "cable_plugged": true,
  "power_w": 0,
  "meter_wh": 0,
  "authorization_required": true,
  "last_seen_at": "2026-10-25T08:30:00.000Z",
  "error": "string"
}