> ## Documentation Index
> Fetch the complete documentation index at: https://developer.plugchoice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List chargers

> Newest first, with what each can do (`capabilities`): for an integration every charger at a site its team
owns, whether Link added it or not; for a Plugchoice user the chargers at sites they have Sensitive
access to. Filter by user (integrations) or site.




## OpenAPI

````yaml api-reference/sdk/sdk-v1.openapi.yaml GET /chargers
openapi: 3.1.0
info:
  title: Plugchoice SDK API
  version: '2026-10-07'
  summary: Connect EV chargers to Plugchoice from your own app.
  description: >
    The API of the Plugchoice SDK. Your server creates client sessions, which
    say who Link (the SDK's

    onboarding feature) acts for and what it may reach; it reads the link
    sessions Link opened with them, and

    the chargers and what each can do. The `/session` endpoints are used only by
    Link's hosted flow at

    `connect.plugchoice.com`.


    Errors are RFC 9457 problem details; times are RFC 3339 UTC; ids are UUIDs.


    **Versions** are dates. Pin one with the `Plugchoice-Version` request
    header; without it you get the newest.

    Every response says which version answered in the same header. An unknown
    version is

    `400 unknown-version`. The only version is `2026-10-07`.
  contact:
    name: Plugchoice
    url: https://developer.plugchoice.com/sdk
    email: support@plugchoice.com
servers:
  - url: https://api.plugchoice.com/sdk/v1
    description: Production
security: []
tags:
  - name: Client sessions
    description: >-
      Say who Link acts for, and what it may reach, for an hour. Integrations
      and Plugchoice users.
  - name: Link sessions
    description: >-
      Read the outcome of a link session, one time through Link. Integrations
      and Plugchoice users.
  - name: Chargers
    description: >-
      Read chargers and what they can do (`capabilities`). Integrations and
      Plugchoice users.
  - name: Session
    description: Link's hosted flow only. Opens and runs one link session.
paths:
  /chargers:
    get:
      tags:
        - Chargers
      summary: List chargers
      description: >
        Newest first, with what each can do (`capabilities`): for an integration
        every charger at a site its team

        owns, whether Link added it or not; for a Plugchoice user the chargers
        at sites they have Sensitive

        access to. Filter by user (integrations) or site.
      operationId: listChargers
      parameters:
        - $ref: '#/components/parameters/PlugchoiceVersion'
        - name: external_user_id
          in: query
          required: false
          description: Integrations only.
          schema:
            $ref: '#/components/schemas/ExternalUserId'
        - name: site_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargerPage'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '422':
          $ref: '#/components/responses/ValidationFailed'
      security:
        - integrationToken: []
        - userToken: []
components:
  parameters:
    PlugchoiceVersion:
      name: Plugchoice-Version
      in: header
      required: false
      description: >-
        The API version to answer with (`400 unknown-version` for one this API
        does not know). Every response carries the version that answered in the
        same header.
      schema:
        type: string
        enum:
          - '2026-10-07'
    Limit:
      name: limit
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    Cursor:
      name: cursor
      in: query
      required: false
      description: '`next_cursor` from the previous page.'
      schema:
        type: string
  schemas:
    ExternalUserId:
      type: string
      description: Your own id for one of your users.
      minLength: 1
      maxLength: 200
      pattern: ^[A-Za-z0-9._:@-]+$
    ChargerPage:
      type: object
      required:
        - data
        - next_cursor
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Charger'
        next_cursor:
          type:
            - string
            - 'null'
    Charger:
      description: A charger as a caller sees it.
      allOf:
        - $ref: '#/components/schemas/ChargerDevice'
        - type: object
          required:
            - device_type
            - site_id
            - capabilities
            - created_at
          properties:
            device_type:
              $ref: '#/components/schemas/DeviceType'
            site_id:
              type: string
              format: uuid
            external_user_id:
              description: >-
                The user of yours whose site it is, if any. Always null for a
                Plugchoice user.
              oneOf:
                - $ref: '#/components/schemas/ExternalUserId'
                - type: 'null'
            reference:
              type:
                - string
                - 'null'
              description: >-
                Your label for it (`charger_reference` from the client session
                that added it; for a Plugchoice user, their current team's
                label).
            setup:
              oneOf:
                - $ref: '#/components/schemas/Setup'
                - type: 'null'
            capabilities:
              $ref: '#/components/schemas/ChargerCapabilities'
            link_session_id:
              type:
                - string
                - 'null'
              format: uuid
              description: >-
                The link session that added it; null for chargers added outside
                Link.
            created_at:
              type: string
              format: date-time
    Problem:
      type: object
      description: RFC 9457 problem details.
      required:
        - type
        - title
        - status
      properties:
        type:
          type: string
          format: uri
          description: >-
            Stable identifier,
            `https://developer.plugchoice.com/sdk/errors/{code}`.
          examples:
            - https://developer.plugchoice.com/sdk/errors/identity-taken
        title:
          type: string
          examples:
            - Identity already registered
        status:
          type: integer
        detail:
          type: string
        code:
          $ref: '#/components/schemas/ErrorCode'
        errors:
          type: object
          description: Only for `validation-failed`. Field path → messages.
          additionalProperties:
            type: array
            items:
              type: string
        site:
          $ref: '#/components/schemas/SiteSummary'
          description: Only for `charger-at-other-site`.
        claimable:
          type: boolean
          description: >-
            Only for `identity-taken`. Whether `POST /session/claims` can be
            tried.
        vendor_charger:
          type: object
          description: >-
            Only for problems connecting a Zaptec installation's chargers in the
            hosted flow. Which charger of the installation it is about.
          required:
            - id
            - serial
          properties:
            id:
              type: string
              description: The brand's id (`ZaptecCharger.id`).
            serial:
              type: string
    ChargerDevice:
      type: object
      description: A charger.
      required:
        - id
        - identity
        - connection_status
        - connectors
      properties:
        id:
          type: string
          format: uuid
        identity:
          type: string
          description: OCPP Chargepoint ID.
        vendor:
          type:
            - string
            - 'null'
          description: As reported in BootNotification.
        model:
          type:
            - string
            - 'null'
        serial_number:
          type:
            - string
            - 'null'
        firmware_version:
          type:
            - string
            - 'null'
        connection_status:
          $ref: '#/components/schemas/ConnectionStatus'
        last_connection_at:
          type:
            - string
            - 'null'
          format: date-time
        status:
          $ref: '#/components/schemas/ChargerStatus'
        connectors:
          type: array
          items:
            $ref: '#/components/schemas/Connector'
    DeviceType:
      type: string
      description: >-
        The kind of device. Only chargers for now; another type is `422
        unsupported-device-type`.
      enum:
        - charger
    Setup:
      type: object
      description: The charger's electrical setup.
      required:
        - phases
        - max_current
      properties:
        phases:
          type: integer
          enum:
            - 1
            - 3
        max_current:
          type: integer
          minimum: 6
          description: Ampere per phase.
        net_type:
          type:
            - string
            - 'null'
          enum:
            - IT
            - TT
            - TN
            - unknown
            - null
        phase_rotation:
          type:
            - string
            - 'null'
          description: >-
            Length must equal `phases` (`R`, `S`, `T` for 1 phase; `RST`, `RTS`,
            `SRT`, `STR`, `TRS`, `TSR` for 3).
          enum:
            - R
            - S
            - T
            - RST
            - RTS
            - SRT
            - STR
            - TRS
            - TSR
            - null
    ChargerCapabilities:
      type: object
      description: >
        What a host can offer for the charger, before it shows a button. More
        may be added (`start_charging`, …);

        ignore the ones you don't know.
      required:
        - network_setup
        - electrical_setup
        - reconnect
      properties:
        network_setup:
          $ref: '#/components/schemas/Capability'
          description: >-
            Link can set up the network of its brand and model (`action:
            network`).
        electrical_setup:
          $ref: '#/components/schemas/Capability'
          description: >-
            Plugchoice can apply an electrical setup to its model (`action:
            setup`).
        reconnect:
          $ref: '#/components/schemas/Capability'
          description: 'Bring it back to Plugchoice (`action: reconnect`). Always capable.'
    ErrorCode:
      type: string
      description: >-
        The last path segment of `type`, for switch statements. New codes may be
        added.
      enum:
        - unauthenticated
        - forbidden
        - not-found
        - validation-failed
        - rate-limited
        - unknown-version
        - unsupported-device-type
        - scope-required
        - client-session-expired
        - site-required
        - session-ended
        - consent-required
        - consent-not-needed
        - location-required
        - location-already-set
        - method-not-allowed
        - identity-taken
        - identity-busy
        - identity-not-taken
        - charger-at-other-site
        - pincode-invalid
        - claim-exists
        - claim-closed
        - charger-offline
        - plug-in-not-available
        - nothing-to-complete
        - vendor-sign-in-failed
        - vendor-sign-in-required
        - vendor-not-permitted
        - vendor-charger-offline
        - vendor-rate-limited
        - vendor-unavailable
        - vendor-error
        - bad-request
        - server-error
    SiteSummary:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
    ConnectionStatus:
      type: string
      enum:
        - never_seen
        - offline
        - online
    ChargerStatus:
      type:
        - string
        - 'null'
      description: OCPP 1.6 status of connector 0, null until reported.
      enum:
        - Available
        - Faulted
        - Unavailable
        - null
    Connector:
      type: object
      required:
        - connector_id
        - status
      properties:
        connector_id:
          type: integer
          minimum: 1
        status:
          $ref: '#/components/schemas/ConnectorStatus'
        max_amperage:
          type:
            - integer
            - 'null'
        current_limit:
          type:
            - number
            - 'null'
          description: Current limit in A, as set by Plugchoice.
        power_type:
          $ref: '#/components/schemas/PowerType'
    Capability:
      type: object
      required:
        - capable
        - needs
      properties:
        capable:
          type: boolean
        needs:
          type: array
          description: >-
            What the phone or browser must have for it; check with the SDK's
            `transports()` (a browser has none but `ble` in Chrome and Edge).
            Empty when not capable.
          items:
            $ref: '#/components/schemas/Transport'
    ConnectorStatus:
      type:
        - string
        - 'null'
      description: OCPP 1.6 connector status, null until reported.
      enum:
        - Available
        - Preparing
        - Charging
        - SuspendedEVSE
        - SuspendedEV
        - Finishing
        - Reserved
        - Unavailable
        - Faulted
        - null
    PowerType:
      type:
        - string
        - 'null'
      enum:
        - AC_1_PHASE
        - AC_2_PHASE
        - AC_2_PHASE_SPLIT
        - AC_3_PHASE
        - DC
        - null
    Transport:
      type: string
      description: >
        Something the phone or browser must be able to do for an onboarding
        method or a charger capability:

        `wifi` (join a charger's Wi-Fi), `http` and `socket` (talk to devices on
        the local network), `lan` (find

        devices on the home network), `ble` (Bluetooth). Your app checks them
        with the SDK's `transports()`,

        which depend on the device and on your app's configuration. A browser
        has none, except `ble` in Chrome

        and Edge (Web Bluetooth).
      enum:
        - wifi
        - http
        - socket
        - lan
        - ble
  responses:
    Unauthenticated:
      description: Missing, invalid or expired token (`unauthenticated`).
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    ValidationFailed:
      description: The body is invalid (`validation-failed`); `errors` lists the fields.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
  securitySchemes:
    integrationToken:
      type: oauth2
      description: >
        Your integration's client credentials (test or live). The token acts as
        your integration's team and

        lasts 1 hour; request a new one when it expires. Send `client_id`,
        `client_secret` and

        `grant_type=client_credentials`. No OAuth scopes are needed.
      flows:
        clientCredentials:
          tokenUrl: https://app.plugchoice.com/oauth/token
          scopes: {}
    userToken:
      type: http
      scheme: bearer
      description: >
        A Plugchoice user's OAuth access token or personal access token, acting
        for that user.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.