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

# Get Devices Pv

> Get information about all NOX connected pv devices associated with your external account. If you want to know the response structure or possible enum values, you can find it in the response model `schema`.



## OpenAPI

````yaml /api-docs/pv/openapi-pv.json get /v1/devices/pv
openapi: 3.1.0
info:
  title: NOX Energy API - PV
  description: >
    # PV API Documentation


    This documentation shows only the endpoints available to pv users.


    ## Authentication


    1. Get your API key from [NOX Energy](mailto:support@nox.energy).

    2. Include the API key in your API calls with the header: `x-api-key:
    YOUR_API_KEY`.


    ## Access Level


    This documentation is specifically for **pv users** who have access to these
    endpoints.


    Base URL: [https://api.nox.energy](https://api.nox.energy)
  version: 1.0.0
servers:
  - url: https://api.nox.energy
    description: Production Server
security:
  - ApiKeyAuth: []
tags:
  - name: Asset Info
    description: API to get basic information about your assets.
  - name: User Management
    description: API endpoints to manage users and their data.
paths:
  /v1/devices/pv:
    get:
      tags:
        - Asset Info
      summary: Get Devices Pv
      description: >-
        Get information about all NOX connected pv devices associated with your
        external account. If you want to know the response structure or possible
        enum values, you can find it in the response model `schema`.
      operationId: get_devices_pv_v1_devices_pv_get
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 4000
            minimum: 1
            description: >

              The maximum number of items to return per page of results.


              This should be used together with the `next_token` parameter to
              paginate through results.


              Read the pagination parameter documentation for more details.
            default: 1000
            title: Limit
          description: >

            The maximum number of items to return per page of results.


            This should be used together with the `next_token` parameter to
            paginate through results.


            Read the pagination parameter documentation for more details.
        - name: next_token
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >

              The `next_token` is a token used to retrieve the next page of
              results when there are more results

              than can fit in a single page(=API response).


              By default, the API will return a `next_token` of the first page
              if no token was given as a parameter.


              If the token is `null` you have reached the end of the results.


              This should be used together with the `limit` parameter to
              paginate through results.




              To get all results of your call, you can keep calling the same API
              call with the previously returned `next_token` until it returns
              `null`.
            title: Next Token
          description: >

            The `next_token` is a token used to retrieve the next page of
            results when there are more results

            than can fit in a single page(=API response).


            By default, the API will return a `next_token` of the first page if
            no token was given as a parameter.


            If the token is `null` you have reached the end of the results.


            This should be used together with the `limit` parameter to paginate
            through results.




            To get all results of your call, you can keep calling the same API
            call with the previously returned `next_token` until it returns
            `null`.
        - name: device_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >

              The ID of the device to filter on. If not provided, all devices
              are returned.
            title: Device Id
          description: >

            The ID of the device to filter on. If not provided, all devices are
            returned.
        - name: user_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >

              The ID of the user to filter on. If not provided, all users are
              returned.
            title: User Id
          description: >

            The ID of the user to filter on. If not provided, all users are
            returned.
        - name: needs_reauthentication
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: |

              If `True`, filter devices that need reauthentication.
            default: false
            title: Needs Reauthentication
          description: |

            If `True`, filter devices that need reauthentication.
        - name: learning_period_ended
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: >+

              If `True`, filter devices for which the learning period of
              gathering data has ended. 


              If `False`, filter devices for which the learning period of
              gathering data has not ended. 


              If `None`, do not filter based on learning period status. 

            title: Learning Period Ended
          description: >+

            If `True`, filter devices for which the learning period of gathering
            data has ended. 


            If `False`, filter devices for which the learning period of
            gathering data has not ended. 


            If `None`, do not filter based on learning period status. 

        - name: brand
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: |

              Filter on device brand. If `None`, do not filter on brand.
            title: Brand
          description: |

            Filter on device brand. If `None`, do not filter on brand.
        - name: steering_enabled
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: >

              If `true`, return only data related to the device's which has
              `steering_enabled` = `true`.


              If `false`, return only data related to the device's which has
              `steering_enabled` = `false`.


              If not given, do not filter on `steering_enabled` field.
            title: Steering Enabled
          description: >

            If `true`, return only data related to the device's which has
            `steering_enabled` = `true`.


            If `false`, return only data related to the device's which has
            `steering_enabled` = `false`.


            If not given, do not filter on `steering_enabled` field.
        - name: steerable
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: >

              If `true`, return only data related to the device's which has
              `steerable` = `true`.


              If `false`, return only data related to the device's which has
              `steerable` = `false`.


              If not given, do not filter on `steerable` field.
            title: Steerable
          description: >

            If `true`, return only data related to the device's which has
            `steerable` = `true`.


            If `false`, return only data related to the device's which has
            `steerable` = `false`.


            If not given, do not filter on `steerable` field.
        - name: has_production_curtailment
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: >

              If `true`, return only data related to the device's which has
              `has_production_curtailment` = `true`.


              If `false` return only data related to the device's which has
              `has_production_curtailment` = `false`.


              If not given, do not filter on `has_production_curtailment` field.
            title: Has Production Curtailment
          description: >

            If `true`, return only data related to the device's which has
            `has_production_curtailment` = `true`.


            If `false` return only data related to the device's which has
            `has_production_curtailment` = `false`.


            If not given, do not filter on `has_production_curtailment` field.
      responses:
        '200':
          description: Successful response for devices API with PV data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevicesPVResponse'
              example:
                data:
                  - model: model_g
                    brand: SMA
                    country: BE
                    device_id: 01a5c222-5b76-4531-b587-5deeb81a3db3
                    user_id: user_4
                    steerable_status:
                      steering_enabled: true
                      steerable: true
                      learning_period_ended: true
                      general_reason: >-
                        PV connected recently, still collecting data to improve
                        models.
                    needs_reauthentication: false
                    has_grid_export_curtailment: true
                    has_production_curtailment: true
                    capacity_kw: 5
                    response_latency_seconds: 30
                    current_production_kw: 3.2
                    last_updated_at: '2025-04-30T23:15:00.000Z'
                  - model: model_b
                    brand: SolarEdge
                    device_id: 01bbbaab-159a-4898-bcba-d81acdb2353c
                    user_id: user_5
                    steerable_status:
                      steering_enabled: true
                      steerable: true
                      learning_period_ended: true
                      general_reason: >-
                        PV connected recently, still collecting data to improve
                        models.
                    needs_reauthentication: false
                    has_grid_export_curtailment: true
                    has_production_curtailment: true
                    capacity_kw: 3.5
                    response_latency_seconds: 45
                    current_production_kw: 2.1
                    last_updated_at: '2025-04-30T23:15:00.000Z'
                meta:
                  energy_supplier: Energy Supplier A
                  next_token: >-
                    eyJkZXZpY2VfaWQiOiAiMDFiYmJhYWItMTU5YS00ODk4LWJjYmEtZDgxYWNkYjIzNTNjIiwgImVuZXJneV9zdXBwbGllciI6ICJFbmVyZ3kgU3VwcGxpZXIgQSJ9
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    DevicesPVResponse:
      properties:
        data:
          anyOf:
            - items:
                $ref: '#/components/schemas/DevicePV'
              type: array
            - type: 'null'
          title: Data
          description: List of devices
        meta:
          anyOf:
            - $ref: '#/components/schemas/DevicesPVMeta'
            - type: 'null'
          description: Response metadata
      type: object
      title: DevicesPVResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    DevicePV:
      properties:
        model:
          anyOf:
            - type: string
            - type: 'null'
          title: Model
          description: Device model
        brand:
          anyOf:
            - type: string
            - type: 'null'
          title: Brand
          description: Device brand
        country:
          anyOf:
            - type: string
            - type: 'null'
          title: Country
          description: Country code
        device_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Device Id
          description: Unique device identifier
        user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: User Id
          description: User identifier
        needs_reauthentication:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Needs Reauthentication
          description: Whether the device needs reauthentication
        steerable_status:
          anyOf:
            - $ref: >-
                #/components/schemas/app__models__pv__pv_device_model__SteerableStatus
            - type: 'null'
          description: Device steering status
        has_grid_export_curtailment:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Has Grid Export Curtailment
          description: Whether the device has grid export curtailment capabilities
        has_production_curtailment:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Has Production Curtailment
          description: Whether the device has production curtailment capabilities
        capacity_kw:
          anyOf:
            - type: number
            - type: 'null'
          title: Capacity Kw
          description: PV capacity in kW
        response_latency_seconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Response Latency Seconds
          description: >-
            Expected latency in seconds before the device responds to a steering
            command
        current_production_kw:
          anyOf:
            - type: number
            - type: 'null'
          title: Current Production Kw
          description: Current PV production in kW
        last_updated_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Last Updated At
          description: >-
            ISO 8601 UTC timestamp of when current_production_kw was last
            measured/ingested. Treat current_production_kw as current only if
            this is recent (e.g. less than 5 minutes in the past).
        current_curtailment_state:
          anyOf:
            - type: string
            - type: 'null'
          title: Current Curtailment State
          description: >-
            Current curtailment state of the device, e.g. 'default',
            'production_curtailment', 'export_curtailment'
      type: object
      title: DevicePV
    DevicesPVMeta:
      properties:
        energy_supplier:
          anyOf:
            - type: string
            - type: 'null'
          title: Energy Supplier
          description: Energy supplier name
        next_token:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Token
          description: Token for pagination
      type: object
      title: DevicesPVMeta
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    app__models__pv__pv_device_model__SteerableStatus:
      properties:
        steering_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Steering Enabled
          description: Whether steering is enabled
        steerable:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Steerable
          description: Whether device is steerable
        learning_period_ended:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Learning Period Ended
          description: Whether the learning period has ended
        general_reason:
          anyOf:
            - $ref: >-
                #/components/schemas/app__models__pv__pv_device_model__GeneralReason
            - type: 'null'
          description: General reason for steerable status
      type: object
      title: SteerableStatus
    app__models__pv__pv_device_model__GeneralReason:
      type: string
      enum:
        - PV connected recently, still collecting data to improve models.
        - Processing error, please contact support.
        - >-
          Device disconnected, it might reconnect later or be permanently be
          disconnected.
        - Device in error state. Might recover automatically later.
        - User settings prevent steering.
        - Holiday mode active, steering disabled or blocked by device.
        - Device is turned off, steering disabled or blocked by device.
        - >-
          Device is unsupported brand/model, will be supported in future
          updates.
        - Device is unsupported model, will not be supported in future updates.
        - Important data missing, this might improve with future updates.
        - Important data missing, will not be supported in future updates.
        - Unauthorized country, steering not allowed in this country.
        - Reauthentication required.
        - Unknown reason, please contact support.
        - Device does not support curtailment, steering not possible.
      title: GeneralReason
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: 'API Key authentication. Enter your API key in the format: YOUR_API_KEY'

````