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

# List solar inverter devices

> Get a paginated list of solar inverter devices with their last pull state



## OpenAPI

````yaml /openapi.json get /solar-inverter
openapi: 3.1.0
info:
  title: Amps.ai API
  description: >-
    Energy device management API for batteries, EV chargers, solar inverters,
    and HVAC systems
  version: '1.0'
  contact: {}
servers:
  - url: https://api.amps.ai
    description: Amps API
security: []
tags: []
paths:
  /solar-inverter:
    get:
      tags:
        - Solar Inverter
      summary: List solar inverter devices
      description: >-
        Get a paginated list of solar inverter devices with their last pull
        state
      operationId: listSolarInverters
      parameters:
        - name: userId
          required: false
          in: query
          description: Filter devices by userId
          schema:
            example: user_abc123
            type: string
        - name: offset
          required: false
          in: query
          description: 'Number of devices to skip (default: 0)'
          schema:
            example: 0
            type: number
        - name: limit
          required: false
          in: query
          description: 'Maximum number of devices to return (1-50, default: 10)'
          schema:
            example: 10
            type: number
      responses:
        '200':
          description: Solar inverter devices retrieved successfully
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - data
                  - meta
                properties:
                  success:
                    type: boolean
                    const: true
                    description: Always `true` for success responses.
                  data:
                    $ref: '#/components/schemas/PaginatedSolarInverterResponseDto'
                  meta:
                    $ref: '#/components/schemas/ResponseMeta'
              examples:
                pageWithInverters:
                  summary: A page with two inverters in different production states
                  value:
                    success: true
                    data:
                      items:
                        - id: device_inverter_001
                          vendor: example_vendor_a
                          sync:
                            available: true
                            lastPulledAt: '2026-05-07T13:23:45.000Z'
                          metadata:
                            model: Hybrid 5kW
                            source: live
                          state:
                            status: producing
                            currentPower: 3.8
                            producing: true
                            energyTotal: 11540.6
                        - id: device_inverter_002
                          vendor: example_vendor_b
                          sync:
                            available: true
                            lastPulledAt: '2026-05-07T13:24:10.000Z'
                          metadata:
                            model: Hybrid 8kW
                            source: cache
                          state:
                            status: idle
                            currentPower: 0
                            producing: false
                            energyTotal: 25118.4
                      pagination:
                        limit: 10
                        offset: 0
                        total: 2
                        hasMore: false
                    meta:
                      requestId: req_8a2Bf3kP
                      environment: sandbox
                      timestamp: '2026-06-02T12:00:00.000Z'
                      latencyMs: 12
                emptyPage:
                  summary: No inverters match the filters
                  value:
                    success: true
                    data:
                      items: []
                      pagination:
                        limit: 10
                        offset: 0
                        total: 0
                        hasMore: false
                    meta:
                      requestId: req_8a2Bf3kP
                      environment: sandbox
                      timestamp: '2026-06-02T12:00:00.000Z'
                      latencyMs: 12
        '400':
          description: >-
            Invalid query parameters (e.g. `limit` outside 1-50, `offset`
            negative).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidLimit:
                  summary: '`limit` outside the supported range'
                  value:
                    success: false
                    error:
                      code: VALIDATION_ERROR
                      message: Request validation failed.
                      details:
                        fields:
                          limit:
                            - Number must be less than or equal to 50
                        description: Invalid query parameters
                    meta:
                      requestId: req_2fJ7kPqV
                      timestamp: '2026-04-29T12:00:00.000Z'
                      path: /solar-inverter?limit=200
                      latencyMs: 4
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                missingApiKey:
                  summary: No `x-api-key` header present
                  value:
                    success: false
                    error:
                      code: UNAUTHORIZED
                      message: Authentication is required.
                      details:
                        description: API key is required
                    meta:
                      requestId: req_8sW2dRtX
                      timestamp: '2026-04-29T12:00:00.000Z'
                      path: /solar-inverter
                      latencyMs: 2
      security:
        - api-key: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl --request GET \
              --url 'https://api.amps.ai/solar-inverter' \
              --header 'x-api-key: amps_sk_test_xxxxxxxxxxxxxxxxxxxxxxxx'
        - lang: javascript
          label: Node
          source: |-
            const response = await fetch('https://api.amps.ai/solar-inverter', {
              method: 'GET',
              headers: {
                'x-api-key': 'amps_sk_test_xxxxxxxxxxxxxxxxxxxxxxxx',
              },
            });

            const data = await response.json();
        - lang: python
          label: Python
          source: |-
            import requests

            url = 'https://api.amps.ai/solar-inverter'
            headers = {
                'x-api-key': 'amps_sk_test_xxxxxxxxxxxxxxxxxxxxxxxx',
            }

            response = requests.get(url, headers=headers)
            data = response.json()
components:
  schemas:
    PaginatedSolarInverterResponseDto:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique identifier for the solar inverter device.
              vendor:
                type: string
                description: OEM display name (e.g. `enphase`, `solaredge`).
              sync:
                type: object
                properties:
                  available:
                    type: boolean
                  lastPulledAt:
                    anyOf:
                      - type: string
                      - type: 'null'
                required:
                  - available
                  - lastPulledAt
              metadata:
                type: object
                properties:
                  model:
                    type: string
                  cacheType:
                    type: string
                    enum:
                      - expedite
                      - normal
                  source:
                    type: string
                    enum:
                      - cache
                      - live
                      - fallback
                      - projection
                    description: >-
                      How this device-state reading was obtained. `live`: read
                      from the device just now. `cache`: a recent reading served
                      from cache. `fallback`: the most recent stored reading,
                      returned when the device could not be reached.
                      `projection`: simulated sandbox state — sandbox devices
                      are not physical hardware, so their reported state
                      reflects the commands you have sent.
                  degraded:
                    description: >-
                      Present and `true` when this reading was served from
                      stored state because the platform is temporarily not
                      contacting this device’s manufacturer (a protective
                      circuit is open). The data is the most recent known
                      reading, not a live one. Absent on a normal reading.
                    type: boolean
                required:
                  - model
                  - source
              state:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - producing
                      - idle
                      - night_mode
                      - error
                      - offline
                    description: Current operational status of the solar inverter.
                  currentPower:
                    type: number
                    description: Current AC power output in kW.
                  producing:
                    type: boolean
                    description: >-
                      Whether the inverter is actively producing power right
                      now.
                  energyTotal:
                    type: number
                    description: Lifetime energy production in kWh.
                required:
                  - status
                  - currentPower
                  - producing
                  - energyTotal
            required:
              - id
              - vendor
              - sync
              - metadata
              - state
        pagination:
          type: object
          properties:
            limit:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
              description: Maximum number of items returned.
            offset:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
              description: Number of items skipped.
            total:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
              description: Total number of items matching the query.
            hasMore:
              type: boolean
              description: '`true` if more items exist beyond the current page.'
          required:
            - limit
            - offset
            - total
            - hasMore
      required:
        - items
        - pagination
      title: Paginated Solar Inverter
    ResponseMeta:
      type: object
      title: Response Meta
      description: >-
        Metadata attached to every response: the request identifier, the serving
        environment, the build timestamp, and the server-side latency.
      required:
        - environment
        - timestamp
        - latencyMs
      properties:
        requestId:
          description: >-
            Unique request identifier. Echoes the `x-request-id` header when
            present; otherwise generated server-side.
          type: string
        environment:
          type: string
          description: The environment that served the request (`sandbox` or `live`).
        timestamp:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the response was built.
        latencyMs:
          type: integer
          description: Server-side processing time in milliseconds.
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Always `false` for error responses.
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - INVALID_CREDENTIALS
                - INVALID_API_KEY
                - INVALID_MFA_CODE
                - MFA_REQUIRED
                - ACCOUNT_LOCKED
                - UNSUPPORTED_CREDENTIAL_TYPE
                - DEVICE_NOT_FOUND
                - DEVICE_OFFLINE
                - DEVICE_UNAUTHORIZED
                - NO_DEVICES_FOUND
                - COMMAND_FAILED
                - COMMAND_NOT_SUPPORTED
                - EXECUTION_NOT_SUPPORTED
                - MODE_OVERRIDDEN
                - VPP_LOCKED
                - INVALID_PARAMETERS
                - INVALID_OEM_PARAMETERS
                - INVALID_TIME_WINDOW
                - BIND_NOT_SUPPORTED
                - SCHEDULER_ACTIVE
                - SCHEDULER_FULL
                - UNSUPPORTED_AUTH_PATH
                - SETTING_OUT_OF_RANGE
                - NETWORK_ERROR
                - RATE_LIMITED
                - SERVICE_UNAVAILABLE
                - TIMEOUT
                - NOT_YET_AVAILABLE
                - SIMULATED_FAILURE
                - UNKNOWN_ERROR
                - VEHICLE_NOT_CONNECTED
                - SESSIONS_NOT_SUPPORTED
                - CREDENTIAL_NOT_FOUND
                - OEM_CIRCUIT_OPEN
                - INVALID_OEM_RESPONSE
                - COMMAND_NOT_APPLIED
                - STALE_ACTION
                - DEFERRED_SCHEDULE_FAILED
                - UNROUTABLE_ACTION_TYPE
                - UNAUTHORIZED
                - EXPIRED_TOKEN
                - FORBIDDEN
                - INSUFFICIENT_PERMISSIONS
                - LIVE_ACCESS_DISABLED
                - VALIDATION_ERROR
                - INVALID_INPUT
                - INVALID_REQUEST_BODY
                - EMPTY_SETTINGS
                - PAYLOAD_TOO_LARGE
                - UNSUPPORTED_MEDIA_TYPE
                - NOT_FOUND
                - METHOD_NOT_ALLOWED
                - CONFLICT
                - CONFLICT_IN_EXECUTION
                - GONE
                - RATE_LIMIT_EXCEEDED
                - INTERNAL_ERROR
                - NOT_IMPLEMENTED
                - BAD_GATEWAY
                - GATEWAY_TIMEOUT
                - DEVICE_TYPE_MISMATCH
                - CONSENT_REVOKED
                - DEVICE_OVERAGE
                - SETTINGS_STORE_UNAVAILABLE
                - ACTION_NOT_FOUND
                - DIRECT_ACTION_UNSUPPORTED
                - UNSUPPORTED_ACTION
                - UNSUPPORTED_MODE
                - UNSUPPORTED_PARAMETER
                - UNSUPPORTED_PARAMETER_COMBINATION
                - UNSUPPORTED_UNIT
                - PARAMETER_OUT_OF_RANGE
                - START_IN_PAST
                - START_OUT_OF_RANGE
                - START_OFFSET_NOT_ACCEPTED
                - START_INVALID_FORMAT
                - START_NONEXISTENT_WALL_CLOCK
                - TIMEZONE_UNRESOLVED
                - INVALID_TIMEZONE
                - ACTION_NOT_CANCELLABLE
                - STRATEGY_NOT_SUPPORTED
                - UNSUPPORTED_SETTING
                - UNSUPPORTED_SETTING_COMBINATION
                - READ_ONLY_SETTING
                - INVALID_SETTING_UNIT
                - INVALID_SETTING_VALUE
                - NO_OP
                - NO_OVERRIDE
                - AVAILABILITY_ENV_UNSUPPORTED
                - UNSUPPORTED_COMBINATION
              description: >-
                Machine-readable error code (e.g. `VALIDATION_ERROR`,
                `CONFLICT`, `UNSUPPORTED_MODE`). Stable across releases; safe to
                switch on.
            message:
              type: string
              description: Human-readable error message.
            details:
              description: >-
                Structured context for the error: which fields were invalid,
                which actions conflicted, which capabilities the device
                declares. Shape varies by error code.
              type: object
              properties: {}
              additionalProperties: {}
          required:
            - code
            - message
          description: Error envelope.
        meta:
          type: object
          properties:
            requestId:
              description: >-
                Unique request identifier. Echoes the `x-request-id` header when
                present; otherwise generated server-side.
              type: string
            timestamp:
              type: string
              description: ISO 8601 timestamp when the error response was built.
            path:
              type: string
              description: Request path that produced the error.
            latencyMs:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
              description: Server-side processing time in milliseconds.
          required:
            - timestamp
            - path
            - latencyMs
          description: Request metadata.
      required:
        - success
        - error
        - meta
      title: Error Response
      description: >-
        Uniform error response. The `error.code` identifies the failure,
        `error.message` carries a human-readable explanation, and
        `error.details` carries structured context (failed fields, conflicting
        action IDs, supported capabilities) where relevant.
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: x-api-key

````