evcc-io/server/openapi.yaml

1896 lines
58 KiB
YAML

openapi: 3.1.0
info:
title: evcc
description: Solar charging. Super simple.
version: "0.2.0"
contact:
url: https://github.com/evcc-io/evcc
servers:
- url: https://demo.evcc.io/api
tags:
- name: state
- name: auth
- name: battery
- name: db
- name: experimental
- name: general
- name: loadpoints
- name: sessions
- name: system
- name: tariffs
- name: vehicles
paths:
/auth/login:
post:
operationId: login
summary: Login
description: "Administrator login. Returns authorization cookie required for all protected endpoints."
tags:
- auth
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
password:
$ref: "#/components/schemas/Password"
responses:
"200":
description: Success
headers:
Set-Cookie:
description: The authorization cookie
schema:
type: string
example: >-
auth=ey...qY; Path=/; Expires=Fri, 04 Apr 2025 14:35:37 GMT;
HttpOnly; SameSite=Strict
"401":
description: Invalid password provided
/auth/logout:
post:
operationId: logout
summary: Logout
description: Logout and delete authorization cookie
tags:
- auth
responses:
"200":
description: Success
headers:
Set-Cookie:
description: The authorization cookie
schema:
type: string
enum:
- auth=; Path=/; HttpOnly
/auth/password:
put:
operationId: changePassword
summary: Change admin password
description: "Changes the admin password."
tags:
- auth
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ChangePassword"
responses:
"202":
description: Success
"400":
description: Invalid password provided
/auth/status:
get:
operationId: getAuthStatus
summary: Authentication status
description: Whether the current user is logged in.
tags:
- auth
responses:
"200":
description: Success
content:
text/plain:
schema:
type: string
enum:
- "true"
- "false"
/auth/apikey:
get:
operationId: getApiKeyStatus
summary: API key status
description: |
Reports whether an API key has been generated. The key itself is
only returned once at creation time (POST), never on subsequent
reads.
tags:
- auth
security:
- cookieAuth: []
- bearerAuth: []
responses:
"200":
description: Success
content:
application/json:
schema:
type: object
properties:
configured:
type: boolean
"401":
$ref: "#/components/responses/Unauthorized"
post:
operationId: regenerateApiKey
summary: Generate or rotate the API key
description: |
Generates a fresh API key, replacing any existing one. The
returned key is shown only once; store it immediately.
Even when the request is authenticated via API key (Bearer), the
admin password must be supplied in the request body to prevent a
leaked key from rotating itself. The password check is skipped
when the server is started with `--disable-auth`.
tags:
- auth
security:
- cookieAuth: []
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
password:
$ref: "#/components/schemas/Password"
responses:
"200":
description: Success
content:
application/json:
schema:
type: object
properties:
key:
type: string
description: The new API key (cleartext, shown once).
example: evcc_aB3xYz7k0Pq2sN5mWtR4
"401":
description: Invalid admin password
"403":
description: Forbidden in demo mode
/batterydischargecontrol/{enable}:
post:
operationId: setBatteryDischargeControl
summary: Control battery-discharge
description: "Prevent home battery discharge during vehicle fast charging."
externalDocs:
url: https://docs.evcc.io/en/features/battery
tags:
- battery
parameters:
- $ref: "#/components/parameters/enable"
responses:
"200":
$ref: "#/components/responses/BooleanResult"
/batterygriddischarge/{enable}:
post:
operationId: setBatteryGridDischarge
summary: Control battery grid discharge
description: "Allow the home battery to discharge to the grid (experimental)."
externalDocs:
url: https://docs.evcc.io/en/features/battery
tags:
- battery
parameters:
- $ref: "#/components/parameters/enable"
responses:
"200":
$ref: "#/components/responses/BooleanResult"
/batterygridchargelimit:
delete:
operationId: removeBatteryGridChargeLimit
summary: Remove battery grid charge limit
description: "Remove battery grid charge limit."
externalDocs:
url: https://docs.evcc.io/en/features/battery
tags:
- battery
responses:
"200":
$ref: "#/components/responses/NullResult"
/batterygridchargelimit/{cost}:
post:
operationId: setBatteryGridChargeLimit
summary: Set battery grid charge limit
description: "Charge home battery from grid when price or emissions are below the threshold. Uses price if a dynamic tariff exists. Uses emissions if a CO₂-tariff is configured. Ignored otherwise."
externalDocs:
url: https://docs.evcc.io/en/features/battery
tags:
- battery
parameters:
- $ref: "#/components/parameters/costLimit"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/batterymode:
delete:
operationId: disableExternalBatteryControl
summary: Disable external battery control
description: Default evcc control behavior is restored
tags:
- battery
responses:
"200":
$ref: "#/components/responses/BatteryModeResult"
/batterymode/{batteryMode}:
post:
operationId: setExternalBatteryMode
summary: Set external battery mode
description: "Directly controls the mode of all controllable batteries. evcc behavior like 'price limit' or 'prevent discharge while fast charging' is overruled. External mode resets after 60s. The external system has to call this endpoint regularly."
tags:
- battery
parameters:
- $ref: "#/components/parameters/batteryMode"
responses:
"200":
$ref: "#/components/responses/BatteryModeResult"
/buffersoc/{soc}:
post:
operationId: setBufferSoc
summary: Set battery buffer SoC
description: "Set battery buffer SoC."
externalDocs:
url: https://docs.evcc.io/en/features/battery
tags:
- battery
parameters:
- $ref: "#/components/parameters/soc"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/bufferstartsoc/{soc}:
post:
operationId: setBufferStartSoc
summary: Set battery buffer start SoC
description: "Set battery buffer start SoC."
externalDocs:
url: https://docs.evcc.io/en/features/battery
tags:
- battery
parameters:
- $ref: "#/components/parameters/soc"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/batteryboost/{enable}:
post:
operationId: setLoadpointBatteryBoost
summary: Set battery boost
description: "Enable or disable battery boost. When active, the maximum available home battery power is added until the home battery is drained to configured SoC limit. Note: boost will not work while the battery is on hold (e.g. during fast charging or planned charging with discharge prevention enabled)."
externalDocs:
url: https://docs.evcc.io/en/features/battery#battery-boost
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/enable"
responses:
"200":
$ref: "#/components/responses/BooleanResult"
/loadpoints/{id}/batteryboostlimit/{soc}:
post:
operationId: setLoadpointBatteryBoostLimit
summary: Set battery boost SoC limit
description: "Set the SoC limit for battery boost. Home battery will be used to support charging up to this SoC level. A value of 100 (default) disabled the boost feature in UI and API."
externalDocs:
url: https://docs.evcc.io/en/features/battery#battery-boost
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/soc"
responses:
"200":
$ref: "#/components/responses/IntegerResult"
/loadpoints/{id}/disable/delay/{delay}:
post:
operationId: setLoadpointDisableDelay
summary: Disable threshold-delay
description: "Delay before charging stops in solar mode."
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/loadpoints
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/delay"
responses:
"200":
$ref: "#/components/responses/NanoSecondsResult"
/loadpoints/{id}/disable/threshold/{threshold}:
post:
operationId: setLoadpointDisableThreshold
summary: Disable threshold
description: "Specifies the grid draw power to stop charging in solar mode."
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/loadpoints#threshold-1
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/threshold"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/enable/delay/{delay}:
post:
operationId: setLoadpointEnableDelay
summary: Enable threshold-delay
description: "Delay before charging starts in solar mode."
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/loadpoints#delay
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/delay"
responses:
"200":
$ref: "#/components/responses/NanoSecondsResult"
/loadpoints/{id}/enable/threshold/{threshold}:
post:
operationId: setLoadpointEnableThreshold
summary: Enable threshold
description: "Specifies the available surplus power to start charging in solar mode."
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/loadpoints#threshold
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/threshold"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/limitenergy/{energy}:
post:
operationId: setLoadpointEnergyLimit
summary: Update energy limit
description: "Updates the energy limit of the loadpoint. Only available for guest vehicles and vehicles with unknown SoC. Limit is removed on vehicle disconnect."
externalDocs:
url: https://docs.evcc.io/en/features/limits
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/energy"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/limitsoc/{soc}:
post:
operationId: setLoadpointSocLimit
summary: Update session SoC limit
description: "Sets the session SoC limit. Cleared on disconnect. Takes precedence over the vehicle's configured limit while set; once cleared (set to 0), the vehicle limit applies again."
externalDocs:
url: https://docs.evcc.io/en/features/limits
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/soc"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/maxcurrent/{current}:
post:
operationId: setLoadpointMaxCurrent
summary: Update maximum current
description: "Updates the maximum current of the loadpoint."
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/current"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/mincurrent/{current}:
post:
operationId: setLoadpointMinCurrent
summary: Update minimum current
description: "Updates the minimum current of the loadpoint."
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/current"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/mintemp/{temp}:
post:
operationId: setLoadpointMinTemp
summary: Update minimum temperature
description: "Sets the minimum temperature for heating devices. The device is heated as fast as possible while below this value. Set to 0 to disable."
externalDocs:
url: https://docs.evcc.io/en/features/limits
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/temp"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/mode/{mode}:
post:
operationId: setLoadpointMode
summary: Update charge mode
description: "Changes the charging behavior of the loadpoint."
externalDocs:
url: https://docs.evcc.io/en/features/solar-charging
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/mode"
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "./openapi.state.yaml#/components/schemas/ChargeMode"
/loadpoints/{id}/phases/{phases}:
post:
operationId: setLoadpointPhases
summary: Update allowed phases
description: "Updates the allowed phases of the loadpoint. Selects the desired phase mode for chargers with automatic phase switching. For manual phase switching chargers (via cable or Lasttrennschalter) this value tells evcc the actual phases."
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/loadpoints#phases
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/phases"
responses:
"200":
$ref: "#/components/responses/NumberResult"
"400":
description: "Invalid phases-value. You have most likely entered the value 0 for a wallbox that cannot switch phases automatically."
/loadpoints/{id}/plan:
get:
operationId: getLoadpointPlan
summary: Get charging plan
description: "Returns the current charging plan for this loadpoint."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
responses:
"200":
description: Success
content:
application/json:
schema:
allOf:
- type: object
properties:
planId:
$ref: "#/components/schemas/Id"
- $ref: "#/components/schemas/PlanRates"
/loadpoints/{id}/plan/energy:
delete:
operationId: deleteLoadpointEnergyPlan
summary: Delete energy-based charging plan
description: "Delete charging plan. Only available when a vehicle without SoC is connected."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
responses:
"200":
$ref: "#/components/responses/EmptyResult"
/loadpoints/{id}/plan/energy/{energy}/{timestamp}:
post:
operationId: setLoadpointEnergyPlan
summary: Set energy-based charging plan
description: "Create charging plan with fixed time and energy target. Only available when a vehicle without SoC is connected."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/energy"
- $ref: "#/components/parameters/timestamp"
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "./openapi.state.yaml#/components/schemas/StaticEnergyPlan"
/loadpoints/{id}/plan/repeating/preview/{soc}/{weekdays}/{hourMinuteTime}/{timezone}:
get:
operationId: previewLoadpointRepeatingPlan
summary: Repeating plan preview
description: "Simulate repeating charging plan and return the result. Does not alter the actual charging plan."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/soc"
- $ref: "#/components/parameters/weekdays"
- $ref: "#/components/parameters/hourMinuteTime"
- $ref: "#/components/parameters/timezone"
responses:
"200":
$ref: "#/components/responses/PlanRatesResult"
/loadpoints/{id}/plan/static/preview/soc/{soc}/{timestamp}:
get:
operationId: previewLoadpointSocPlan
summary: Simulate soc-based charging plan
description: "Simulate charging plan based on SoC goal. Does not alter the actual charging plan."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/soc"
- $ref: "#/components/parameters/timestamp"
responses:
"200":
$ref: "#/components/responses/PlanRatesResult"
/loadpoints/{id}/plan/static/preview/energy/{energy}/{timestamp}:
get:
operationId: previewLoadpointEnergyPlan
summary: Simulate energy-based charging plan
description: "Simulate charging plan based on energy goal. Does not alter the actual charging plan."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/energy"
- $ref: "#/components/parameters/timestamp"
responses:
"200":
$ref: "#/components/responses/PlanRatesResult"
/loadpoints/{id}/plan/strategy:
post:
operationId: setLoadpointPlanStrategy
summary: Set plan strategy
description: "Updates the charging plan strategy for the loadpoint."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
requestBody:
required: true
content:
application/json:
schema:
$ref: "./openapi.state.yaml#/components/schemas/PlanStrategy"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "./openapi.state.yaml#/components/schemas/PlanStrategy"
/loadpoints/{id}/priority/{priority}:
post:
operationId: setLoadpointPriority
summary: Set priority
description: "Set loadpoint priority."
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/loadpoints#priority
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- name: priority
in: path
description: Higher number means higher priority.
required: true
example: 2
schema:
type: integer
minimum: 0
responses:
"200":
$ref: "#/components/responses/IntegerResult"
/loadpoints/{id}/smartcostlimit:
delete:
operationId: deleteLoadpointSmartCostLimit
summary: Delete smart charging cost limit
description: "Delete cost or emission limit for fast-charging with grid energy."
externalDocs:
url: https://docs.evcc.io/en/features/dynamic-prices
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
responses:
"200":
$ref: "#/components/responses/NullResult"
/loadpoints/{id}/smartcostlimit/{cost}:
post:
operationId: setLoadpointSmartCostLimit
summary: Set smart charging cost limit
description: "Set cost or emission limit for fast-charging with grid energy."
externalDocs:
url: https://docs.evcc.io/en/features/dynamic-prices
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/costLimit"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/smartfeedinprioritylimit:
delete:
operationId: deleteLoadpointSmartFeedInPriorityLimit
summary: Delete smart feed-in priority limit
description: "Delete limit for feed-in priority optimization."
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
responses:
"200":
$ref: "#/components/responses/NullResult"
/loadpoints/{id}/smartfeedinprioritylimit/{cost}:
post:
operationId: setLoadpointSmartFeedInPriorityLimit
summary: Set smart feed-in priority limit
description: "Set limit for feed-in priority optimization."
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/costLimit"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/loadpoints/{id}/vehicle:
delete:
operationId: removeLoadpointVehicle
summary: Remove vehicle
description: "Remove vehicle from loadpoint. Connected vehicle is treated as guest vehicle."
externalDocs:
url: https://docs.evcc.io/en/features/vehicle
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
responses:
"200":
$ref: "#/components/responses/EmptyResult"
patch:
operationId: startLoadpointVehicleDetection
summary: Start vehicle detection
description: "Starts the automatic vehicle detection process."
externalDocs:
url: https://docs.evcc.io/en/features/vehicle
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
responses:
"200":
$ref: "#/components/responses/EmptyResult"
/loadpoints/{id}/vehicle/{name}:
post:
operationId: assignLoadpointVehicle
summary: Assign vehicle
description: "Assigns vehicle to loadpoint."
externalDocs:
url: https://docs.evcc.io/en/features/vehicle
tags:
- loadpoints
parameters:
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/vehicleName"
responses:
"200":
description: Success
content:
application/json:
schema:
type: object
properties:
vehicle:
$ref: "#/components/schemas/VehicleTitle"
/prioritysoc/{soc}:
post:
operationId: setPrioritySoc
summary: Set battery priority SoC
description: "Set battery priority SoC."
externalDocs:
url: https://docs.evcc.io/en/features/battery
tags:
- battery
parameters:
- $ref: "#/components/parameters/soc"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/residualpower/{power}:
post:
operationId: setResidualPower
summary: Set grid residual power
description: "Set grid connection operating point."
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/site#residualpower
tags:
- battery
parameters:
- $ref: "#/components/parameters/power"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/solaradjusted/{enable}:
post:
operationId: setSolarAdjusted
summary: Adjust solar forecast
description: "Adjust the solar forecast to real production data of the current day."
tags:
- experimental
parameters:
- $ref: "#/components/parameters/enable"
responses:
"200":
$ref: "#/components/responses/BooleanResult"
/smartfeedinprioritylimit:
delete:
operationId: removeGlobalSmartFeedInPriorityLimit
summary: Remove smart feed-in priority limit for all loadpoints.
description: "Convenience method to remove limit for all loadpoints at once. Value is applied to each individual loadpoint."
tags:
- general
responses:
"200":
$ref: "#/components/responses/NullResult"
/smartfeedinprioritylimit/{cost}:
post:
operationId: setGlobalSmartFeedInPriorityLimit
summary: Set smart feed-in priority limit for all loadpoints
description: "Convenience method to set smart feed-in priority limit for all loadpoints at once. Value is applied to each individual loadpoint."
tags:
- general
parameters:
- $ref: "#/components/parameters/costLimit"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/session/{id}:
parameters:
- $ref: "#/components/parameters/id"
put:
operationId: updateSession
summary: Update charging session
description: "Update vehicle, loadpoint or odometer of a charging session. Only provided fields are changed; a null odometer clears the stored value."
externalDocs:
url: https://docs.evcc.io/en/features/sessions
tags:
- sessions
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
vehicle:
$ref: "#/components/schemas/VehicleName"
loadpoint:
$ref: "#/components/schemas/LoadpointName"
odometer:
$ref: "#/components/schemas/Odometer"
responses:
"200":
description: Success
delete:
operationId: deleteSession
summary: Delete charging session
description: "Delete charging session."
externalDocs:
url: https://docs.evcc.io/en/features/sessions
tags:
- sessions
responses:
"200":
$ref: "#/components/responses/NullResult"
/gridsessions:
get:
operationId: getGridSessions
summary: Grid limitation sessions
description: "Returns a list of HEMS grid limitation events."
tags:
- sessions
parameters:
- name: format
in: query
description: Response format (default json)
schema:
type: string
enum:
- csv
- name: lang
in: query
description: Language (defaults to accept header)
schema:
type: string
example: de
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/GridSessions"
text/csv:
schema:
description: Download csv-file
type: string
format: binary
/sessions:
get:
operationId: getSessions
summary: Charging sessions
description: "Returns a list of charging sessions."
externalDocs:
url: https://docs.evcc.io/en/features/sessions
tags:
- sessions
parameters:
- name: format
in: query
description: Response format (default json)
schema:
type: string
enum:
- csv
- name: lang
in: query
description: Language (defaults to accept header)
schema:
type: string
example: de
- name: month
in: query
description: Month filter
schema:
type: integer
example: 2
minimum: 1
maximum: 12
- name: year
in: query
description: Year filter
schema:
type: integer
example: 2025
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ChargingSessions"
text/csv:
schema:
description: Download csv-file
type: string
format: binary
/settings/telemetry/{enable}:
post:
operationId: setTelemetryStatus
summary: Enable/disable telemetry
description: "Enable or disable telemetry. Note: Telemetry requires sponsorship."
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/telemetry
tags:
- system
parameters:
- $ref: "#/components/parameters/enable"
responses:
"200":
$ref: "#/components/responses/BooleanResult"
"400":
description: Sponsorship required
/smartcostlimit:
delete:
operationId: removeGlobalSmartCostLimit
summary: Remove smart charging cost limit for all loadpoints.
description: "Convenience method to remove limit for all loadpoints at once. Value is applied to each individual loadpoint."
tags:
- general
responses:
"200":
$ref: "#/components/responses/NullResult"
/smartcostlimit/{cost}:
post:
operationId: setGlobalSmartCostLimit
summary: Set smart charging cost limit for all loadpoints
description: "Convenience method to set smart charging cost limit for all loadpoints at once. Value is applied to each individual loadpoint."
tags:
- general
parameters:
- $ref: "#/components/parameters/costLimit"
responses:
"200":
$ref: "#/components/responses/NumberResult"
/state:
get:
operationId: state
summary: System state
description: "Returns the complete state of the system. This structure is used by the UI and also published via websocket and MQTT. It can be filtered by JQ to only return a subset of the data. Note: the response mirrors the internal UI state and carries no compatibility promise. Fields may change or disappear between releases."
externalDocs:
url: https://docs.evcc.io/integrations/rest-api
tags:
- state
parameters:
- name: jq
in: query
description: Filter the state with JQ
schema:
type: string
examples:
all:
value: .
summary: complete state
firstLoadpoint:
value: .loadpoints[0]
summary: only first loadpoint
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "./openapi.state.yaml#/components/schemas/State"
/system/log:
get:
operationId: getSystemLogs
summary: Logs
description: "Returns the latest log lines."
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/log
security:
- cookieAuth: []
- bearerAuth: []
tags:
- system
parameters:
- $ref: "#/components/parameters/logAreas"
- $ref: "#/components/parameters/logLevel"
- name: count
in: query
description: Number of log lines to return
example: 100
schema:
type: integer
- name: format
in: query
description: File type
schema:
type: string
enum:
- txt
responses:
"200":
description: Success
content:
application/json:
schema:
type: array
items:
type: string
text/plain:
schema:
description: Download txt-file
type: string
format: binary
"401":
$ref: "#/components/responses/Unauthorized"
/system/log/areas:
get:
operationId: getLogAreas
summary: List of all log areas
description: "Returns a list of all log areas (e.g. `lp-1`, `site`, `db`)."
security:
- cookieAuth: []
- bearerAuth: []
tags:
- system
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/LogAreas"
"401":
$ref: "#/components/responses/Unauthorized"
/system/cache:
delete:
operationId: clearCache
summary: Clear cache
description: "Clears all cached data. This resets all cached values from tariffs, vehicle APIs, and other components that use caching."
security:
- cookieAuth: []
- bearerAuth: []
tags:
- system
responses:
"200":
$ref: "#/components/responses/SuccessResult"
"401":
$ref: "#/components/responses/Unauthorized"
/system/shutdown:
post:
operationId: shutdownSystem
summary: Shutdown evcc
description: "Shut down instance. There is no reboot command. We expect the underlying system (docker, systemd, etc.) to restart the evcc instance once it's terminated."
security:
- cookieAuth: []
- bearerAuth: []
tags:
- system
responses:
"204":
$ref: "#/components/responses/BlankResponse"
"401":
$ref: "#/components/responses/Unauthorized"
/tariff/{type}:
get:
operationId: getTariffInfo
summary: Tariff information
description: "Returns the prices or emission values for the upcoming hours"
externalDocs:
url: https://docs.evcc.io/en/tariffs
tags:
- tariffs
parameters:
- name: type
in: path
description: Tariff type
required: true
schema:
type: string
enum:
- grid
- feedin
- co2
- planner
- solar
responses:
"200":
description: Success
content:
application/json:
schema:
type: object
properties:
rates:
$ref: "#/components/schemas/Rates"
"404":
description: Tariff not defined
/vehicles/{name}/limitsoc/{soc}:
post:
operationId: setVehicleSocLimit
summary: Set SoC limit
description: "Charging will stop when this SoC is reached."
externalDocs:
url: https://docs.evcc.io/en/features/limits
tags:
- vehicles
parameters:
- $ref: "#/components/parameters/vehicleName"
- $ref: "#/components/parameters/soc"
responses:
"200":
$ref: "#/components/responses/SocResult"
/vehicles/{name}/minsoc/{soc}:
post:
operationId: setVehicleMinSoc
summary: Set minimum SoC
description: "Vehicle will be fast-charged until this SoC is reached."
externalDocs:
url: https://docs.evcc.io/en/features/limits
tags:
- vehicles
parameters:
- $ref: "#/components/parameters/vehicleName"
- $ref: "#/components/parameters/soc"
responses:
"200":
$ref: "#/components/responses/SocResult"
/vehicles/{name}/mode:
delete:
operationId: deleteVehicleMode
summary: Reset charge mode
description: "Resets the vehicle charge mode to keep the last selected mode."
externalDocs:
url: https://docs.evcc.io/en/features/solar-charging
tags:
- vehicles
parameters:
- $ref: "#/components/parameters/vehicleName"
responses:
"200":
$ref: "#/components/responses/NullResult"
/vehicles/{name}/mode/{mode}:
post:
operationId: setVehicleMode
summary: Set charge mode
description: "Sets the charge mode applied when this vehicle becomes active on a loadpoint."
externalDocs:
url: https://docs.evcc.io/en/features/solar-charging
tags:
- vehicles
parameters:
- $ref: "#/components/parameters/vehicleName"
- $ref: "#/components/parameters/mode"
responses:
"200":
description: Success
content:
application/json:
schema:
type: object
properties:
mode:
$ref: "./openapi.state.yaml#/components/schemas/ChargeMode"
/vehicles/{name}/plan/repeating:
post:
operationId: updateVehicleRepeatingPlans
summary: Update repeating plans
description: "Updates the repeating charging plan."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- vehicles
parameters:
- $ref: "#/components/parameters/vehicleName"
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: "./openapi.state.yaml#/components/schemas/RepeatingPlan"
responses:
"200":
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "./openapi.state.yaml#/components/schemas/RepeatingPlan"
/vehicles/{name}/plan/soc:
delete:
operationId: deleteVehicleSocPlan
summary: Delete a SoC-based charging plan
description: "Delete the charging plan"
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- vehicles
parameters:
- $ref: "#/components/parameters/vehicleName"
responses:
"200":
$ref: "#/components/responses/EmptyResult"
/vehicles/{name}/plan/soc/{soc}/{timestamp}:
post:
operationId: setVehicleSocPlan
summary: Set a SoC-based charging plan
description: "Create charging plan with fixed time and SoC target."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- vehicles
parameters:
- $ref: "#/components/parameters/vehicleName"
- $ref: "#/components/parameters/soc"
- $ref: "#/components/parameters/timestamp"
responses:
"200":
description: Success
content:
application/json:
schema:
type: object
properties:
soc:
$ref: "#/components/schemas/Soc"
time:
$ref: "#/components/schemas/Timestamp"
/vehicles/{name}/plan/strategy:
post:
operationId: setVehiclePlanStrategy
summary: Set plan strategy
description: "Updates the charging plan strategy for the vehicle."
externalDocs:
url: https://docs.evcc.io/en/features/plans
tags:
- vehicles
parameters:
- $ref: "#/components/parameters/vehicleName"
requestBody:
required: true
content:
application/json:
schema:
$ref: "./openapi.state.yaml#/components/schemas/PlanStrategy"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "./openapi.state.yaml#/components/schemas/PlanStrategy"
/db/backup:
get:
operationId: downloadBackup
summary: Download database backup
description: "Downloads the SQLite database as a backup file. Session users must supply the admin password in the X-Admin-Password header. API key holders via Bearer token are exempt."
tags:
- db
security:
- cookieAuth: []
- bearerAuth: []
parameters:
- $ref: "#/components/parameters/adminPassword"
responses:
"200":
description: SQLite database file
content:
application/octet-stream:
schema:
type: string
format: binary
"401":
$ref: "#/components/responses/Unauthorized"
/db/restore:
post:
operationId: restoreBackup
summary: Restore database backup
description: "Restores the database from a previously downloaded backup file. Session users must supply the admin password in the X-Admin-Password header. API key holders via Bearer token are exempt. The instance restarts after a successful restore."
tags:
- db
security:
- cookieAuth: []
- bearerAuth: []
parameters:
- $ref: "#/components/parameters/adminPassword"
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- file
properties:
file:
type: string
format: binary
description: SQLite database backup file
responses:
"204":
description: Restore successful, instance is restarting
"400":
description: Invalid file or missing fields
"401":
$ref: "#/components/responses/Unauthorized"
/db/reset:
post:
operationId: resetDatabase
summary: Reset database
description: "Selectively deletes sessions and/or settings from the database. Session users must supply the admin password in the X-Admin-Password header. API key holders via Bearer token are exempt. The instance restarts after a successful reset."
tags:
- db
security:
- cookieAuth: []
- bearerAuth: []
parameters:
- $ref: "#/components/parameters/adminPassword"
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sessions:
type: boolean
description: Delete all charging sessions
settings:
type: boolean
description: Delete all settings, configs, and meters
responses:
"204":
description: Reset successful, instance is restarting
"401":
$ref: "#/components/responses/Unauthorized"
/history/energy:
get:
operationId: getEnergyHistory
summary: Energy history
description: "Returns aggregated energy history data. Aggregate granularity defaults to 15 minutes. Supports CSV export."
tags:
- experimental
parameters:
- name: from
in: query
description: Start time (RFC3339)
schema:
type: string
format: date-time
example: "2026-07-01T00:00:00Z"
- name: to
in: query
description: End time (RFC3339)
schema:
type: string
format: date-time
example: "2026-07-02T00:00:00Z"
- name: aggregate
in: query
description: "Aggregation interval. Examples: 15m, 1h, day, month"
schema:
type: string
default: 15m
example: 1h
- name: grouped
in: query
description: Group results by loadpoint
schema:
type: boolean
default: false
example: false
- name: group
in: query
description: Filter by entity group
schema:
type: string
example: battery
enum:
- forecast
- battery
- grid
- pv
- home
- loadpoint
- meter
- consumer
- name: name
in: query
description: Filter by entity name
schema:
type: string
example: db:8
- name: title
in: query
description: Filter by entity title
schema:
type: string
example: Battery
- name: format
in: query
description: Response format
schema:
type: string
enum:
- json
- csv
default: json
example: json
- name: lang
in: query
description: Language for CSV column headers (BCP 47, e.g. de, en). Defaults to Accept-Language header.
schema:
type: string
example: de
responses:
"200":
description: Energy history data
content:
application/json:
schema:
type: object
text/csv:
schema:
type: string
"400":
description: Invalid parameters or database offline
components:
schemas:
ChangePassword:
type: object
properties:
current:
$ref: "#/components/schemas/Password"
new:
$ref: "#/components/schemas/Password"
ChargingSessions:
description: Charging sessions
type: array
items:
type: object
properties:
id:
$ref: "#/components/schemas/Id"
created:
$ref: "#/components/schemas/Timestamp"
finished:
$ref: "#/components/schemas/Timestamp"
loadpoint:
$ref: "#/components/schemas/LoadpointName"
vehicle:
$ref: "#/components/schemas/VehicleName"
odometer:
$ref: "#/components/schemas/Odometer"
meterStart:
nullable: true
type: "number"
description: Meter reading at start of charging session
meterStop:
nullable: true
type: "number"
description: Meter reading at end of charging session
chargedEnergy:
type: number
description: Charged energy in kWh
GridSessions:
description: Grid limitation sessions
type: array
items:
type: object
properties:
id:
$ref: "#/components/schemas/Id"
created:
$ref: "#/components/schemas/Timestamp"
finished:
$ref: "#/components/schemas/Timestamp"
type:
type: string
enum:
- consumption
- feedin
description: Type of grid limitation event
gridPower:
type: number
description: Grid power in watts
limitPower:
type: number
description: Limitation power in watts
chargeDuration:
type: number
description: Duration of active charging
solarPercentage:
type: number
description: Solar percentage of the session
price:
type: number
description: Total price of the session
pricePerKWh:
type: number
description: Average price per kWh
co2PerKWh:
type: number
description: Average CO₂ emissions per kWh
Current:
description: Electric current in A
type: number
example: 16
minimum: 0
Energy:
description: Energy in kWh
type: number
example: 25.5
minimum: 0
Delay:
description: "Duration in seconds."
type: integer
example: 60
HourMinuteTime:
description: Time in `HH:MM` format
type: string
pattern: "[0-1][0-9]:[0-5][0-9]"
format: HH:MM
example: 12:30
IANATimeZone:
description: Timezone in IANA format
externalDocs:
url: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
type: string
example: Europe/Berlin
Id:
description: Loadpoint index starting at 1.
type: integer
example: 1
minimum: 1
LoadpointName:
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/loadpoints#title
type: string
example: Garage
LogArea:
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/log#levels
type: string
LogAreas:
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/log#levels
type: array
example:
- lp-1
- site
- db
items:
$ref: "#/components/schemas/LogArea"
LogLevel:
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/log#log
type: string
example: DEBUG
enum:
- FATAL
- ERROR
- WARN
- INFO
- DEBUG
- TRACE
Odometer:
nullable: true
type: "number"
description: Vehicle odometer reading in kilometers
Password:
description: Admin password
type: string
Phases:
description: "Number of phases. (0: auto, 1: 1-phase, 3: 3-phase)"
type: string
example: "3"
enum:
- "0"
- "1"
- "3"
PlanRates:
type: object
properties:
duration:
description: Duration in s
type: integer
minimum: 0
plan:
$ref: "#/components/schemas/Rates"
planTime:
$ref: "#/components/schemas/Timestamp"
power:
$ref: "#/components/schemas/Power"
Power:
description: Power in W
type: number
minimum: 0
example: 2500
Precondition:
description: "Late charging duration in seconds."
type: integer
example: 3600
minimum: 0
Rates:
type: array
items:
$ref: "./openapi.state.yaml#/components/schemas/Rate"
Soc:
description: SOC in %
type: number
example: 60
minimum: 0
maximum: 100
Temp:
description: Temperature in °C
type: number
example: 50
minimum: 0
Timestamp:
description: Timestamp in RFC3339 format
type: string
format: date-time
VehicleName:
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/vehicles#name
type: string
minLength: 1
pattern: "[a-zA-Z0-9_.:-]+"
example: vehicle_1
VehicleTitle:
externalDocs:
url: https://docs.evcc.io/en/reference/configuration/vehicles#title
type: string
example: blauer e-Golf
Weekdays:
description: "The Weekdays"
type: array
uniqueItems: true
example:
- 1
- 3
- 4
items:
description: "0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday"
type: integer
minimum: 0
maximum: 6
parameters:
adminPassword:
name: X-Admin-Password
in: header
description: Admin password (required for session auth, not needed for API key)
schema:
$ref: "#/components/schemas/Password"
id:
name: id
description: Loadpoint index starting at 1
in: path
required: true
schema:
$ref: "#/components/schemas/Id"
phases:
name: phases
description: "Number of phases. (0: auto, 1: 1-phase, 3: 3-phase)"
in: path
required: true
schema:
$ref: "#/components/schemas/Phases"
weekdays:
name: weekdays
description: "The Weekdays"
in: path
required: true
schema:
$ref: "#/components/schemas/Weekdays"
hourMinuteTime:
name: hourMinuteTime
description: Time in `HOURS:MINUTES` format
in: path
required: true
schema:
$ref: "#/components/schemas/HourMinuteTime"
timezone:
name: timezone
in: path
required: true
schema:
$ref: "#/components/schemas/IANATimeZone"
logAreas:
name: areas
description: "Comma-separated list of log areas"
in: query
explode: true
schema:
$ref: "#/components/schemas/LogAreas"
logLevel:
name: level
description: Log level
in: query
required: true
schema:
$ref: "#/components/schemas/LogLevel"
delay:
name: delay
description: "Duration in seconds."
in: path
required: true
schema:
$ref: "#/components/schemas/Delay"
mode:
name: mode
in: path
required: true
schema:
$ref: "./openapi.state.yaml#/components/schemas/ChargeMode"
soc:
name: soc
description: SOC in %
in: path
required: true
schema:
$ref: "#/components/schemas/Soc"
temp:
name: temp
description: Temperature in °C
in: path
required: true
schema:
$ref: "#/components/schemas/Temp"
timestamp:
name: timestamp
description: Timestamp in RFC3339 format
in: path
required: true
schema:
$ref: "#/components/schemas/Timestamp"
vehicleName:
name: name
description: Vehicle name
in: path
required: true
schema:
$ref: "#/components/schemas/VehicleName"
current:
name: current
description: Electric current in A
in: path
required: true
schema:
$ref: "#/components/schemas/Current"
power:
name: power
description: Power in W
in: path
required: true
schema:
$ref: "#/components/schemas/Power"
energy:
name: energy
description: Energy in kWh
in: path
required: true
schema:
$ref: "#/components/schemas/Energy"
threshold:
name: threshold
description: Power in W
in: path
required: true
schema:
$ref: "#/components/schemas/Power"
batteryMode:
name: batteryMode
in: path
required: true
schema:
$ref: "./openapi.state.yaml#/components/schemas/BatteryMode"
costLimit:
name: cost
description: Cost limit in configured currency (default EUR) or CO2 limit in g/kWh
example: 0.25
in: path
required: true
schema:
type: number
enable:
name: enable
description: "Charging mode."
in: path
required: true
schema:
type: string
enum:
- "true"
- "false"
- "1"
- "0"
responses:
NanoSecondsResult:
description: Success - Number result - Unit is **nanoseconds**
content:
application/json:
schema:
type: integer
NumberResult:
description: Success - Number result
content:
application/json:
schema:
type: number
IntegerResult:
description: Success - Integer result
content:
application/json:
schema:
type: integer
SocResult:
description: Success - Soc result
content:
application/json:
schema:
type: object
properties:
soc:
$ref: "#/components/schemas/Soc"
PlanRatesResult:
description: Success - PlanRates result
content:
application/json:
schema:
$ref: "#/components/schemas/PlanRates"
BooleanResult:
description: Success - Boolean result
content:
application/json:
schema:
type: boolean
NullResult:
description: Success - Null result
content:
application/json:
schema:
description: Value is always null
nullable: true
type: "object"
BlankResponse:
description: Success - Blank response
SuccessResult:
description: Success
content:
application/json:
schema:
type: string
example: "OK"
EmptyResult:
description: Success - Empty result
content:
application/json:
schema:
type: object
Unauthorized:
description: Unauthorized - Login and try again
content:
text/plain:
schema:
type: string
enum:
- Unauthorized
BatteryModeResult:
description: Battery mode
content:
application/json:
schema:
type: integer
description: "Battery mode. 0: unknown, 1: normal, 2: hold, 3: charge, 4: holdcharge"
minimum: 0
maximum: 4
securitySchemes:
cookieAuth:
type: apiKey
in: cookie
name: auth
bearerAuth:
type: http
scheme: bearer
description: |
Long-lived API key (prefixed `evcc_`, managed via /auth/apikey).
Grants access to /api/db/* without requiring the X-Admin-Password header.