evcc (self-hosted) Auth API

The auth API from evcc (self-hosted) — 5 operation(s) for auth.

Operations 6

POST /auth/login Login #
POST /auth/logout Logout #
PUT /auth/password Change admin password #
GET /auth/status Authentication status #
GET /auth/apikey API key status #
POST /auth/apikey Generate or rotate the API key #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/evcc:evcc-auth-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

evcc-auth-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: evcc Auth API
  description: smart charging. open source energy management.
  version: 0.2.0
  contact:
    url: https://github.com/evcc-io/evcc
servers:
- url: https://demo.evcc.io/api
tags:
- name: Auth
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
components:
  schemas:
    Password:
      description: Admin password
      type: string
    ChangePassword:
      type: object
      properties:
        current:
          $ref: '#/components/schemas/Password'
        new:
          $ref: '#/components/schemas/Password'
  responses:
    Unauthorized:
      description: Unauthorized - Login and try again
      content:
        text/plain:
          schema:
            type: string
            enum:
            - Unauthorized
  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.

        '