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

# Add an asset

> Add a device, such as an inverter, a battery or a wallbox, to one of your households.



## OpenAPI

````yaml /openapi/openapi.gauss.json post /assets
openapi: 3.0.0
info:
  title: Nomos API
  version: 2026-09-08.gauss
servers:
  - url: https://api.nomos.energy
    description: production
security: []
tags:
  - name: Plans
  - name: Leads
  - name: Subscriptions
  - name: Customers
  - name: Households
  - name: Assets
  - name: Usage
  - name: Prices
  - name: Invoices
  - name: Smart Meter Orders
  - name: Grid Fee Reductions
  - name: Market Partners
  - name: Events
  - name: Authentication
paths:
  /assets:
    post:
      tags:
        - Assets
      summary: Add an asset
      description: >-
        Add a device, such as an inverter, a battery or a wallbox, to one of
        your households.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAsset'
      responses:
        '200':
          description: The added asset
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Asset'
        '400':
          description: >-
            The server cannot or will not process the request due to something
            that is perceived to be a client error (e.g., malformed request
            syntax, invalid request message framing, or deceptive request
            routing).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrBadRequest'
              examples:
                Missing required field:
                  summary: Missing required field
                  value:
                    code: BAD_REQUEST
                    message: 'Invalid input: expected string, received undefined'
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/BAD_REQUEST
                    errors:
                      - code: invalid_type
                        field: external_id
                        message: 'Invalid input: expected string, received undefined'
                Missing type data object:
                  summary: Missing type data object
                  value:
                    code: BAD_REQUEST
                    message: A battery asset needs its battery object.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/BAD_REQUEST
                    errors:
                      - code: invalid_type
                        field: battery
                        message: A battery asset needs its battery object.
                Unknown field in the type data object:
                  summary: Unknown field in the type data object
                  value:
                    code: BAD_REQUEST
                    message: 'Unrecognized key: "nominal_capacity_kwh"'
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/BAD_REQUEST
                    errors:
                      - code: unrecognized_keys
                        field: battery
                        message: 'Unrecognized key: "nominal_capacity_kwh"'
                Type data object for another type:
                  summary: Type data object for another type
                  value:
                    code: BAD_REQUEST
                    message: An asset of type battery takes no solar object.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/BAD_REQUEST
                    errors:
                      - code: unrecognized_keys
                        field: solar
                        message: An asset of type battery takes no solar object.
                Solar asset without inverter:
                  summary: Solar asset without inverter
                  value:
                    code: BAD_REQUEST
                    message: A solar asset needs the inverter it sits behind.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/BAD_REQUEST
                    errors:
                      - code: invalid_inverter
                        field: parent_inverter
                        message: A solar asset needs the inverter it sits behind.
                Inverter not active in the household:
                  summary: Inverter not active in the household
                  value:
                    code: BAD_REQUEST
                    message: >-
                      ha_i9k3l7w2e5r8t1y4u6o0p3as is not an active inverter in
                      household dom_k3v9x2m7n1b4v8c2x6z0q5wd.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/BAD_REQUEST
                    errors:
                      - code: invalid_inverter
                        field: parent_inverter
                        message: >-
                          ha_i9k3l7w2e5r8t1y4u6o0p3as is not an active inverter
                          in household dom_k3v9x2m7n1b4v8c2x6z0q5wd.
                Type maintained by Nomos:
                  summary: Type maintained by Nomos
                  value:
                    code: BAD_REQUEST
                    message: >-
                      Nomos creates and maintains the household_net asset, only
                      its metadata can change.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/BAD_REQUEST
                    errors:
                      - code: read_only_asset
                        field: type
                        message: >-
                          Nomos creates and maintains the household_net asset,
                          only its metadata can change.
                Metadata over 10KB:
                  summary: Metadata over 10KB
                  value:
                    code: BAD_REQUEST
                    message: Metadata must not exceed 10KB.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/BAD_REQUEST
                    errors:
                      - code: too_big
                        field: metadata
                        message: Metadata must not exceed 10KB.
                Unsupported version header:
                  summary: Unsupported version header
                  value:
                    code: BAD_REQUEST
                    message: Version header 2026-01-01.foo is invalid.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/BAD_REQUEST
        '401':
          description: The client must authenticate itself to get the requested response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrUnauthorized'
              examples:
                No token:
                  summary: No token
                  value:
                    code: UNAUTHORIZED
                    message: No authorization header provided.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/UNAUTHORIZED
                Expired token:
                  summary: Expired token
                  value:
                    code: UNAUTHORIZED
                    message: Token expired
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/UNAUTHORIZED
                Invalid token:
                  summary: Invalid token
                  value:
                    code: UNAUTHORIZED
                    message: Invalid or malformed token
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/UNAUTHORIZED
        '403':
          description: >-
            The client does not have the necessary permissions to access the
            resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrForbidden'
              examples:
                Token without scope:
                  summary: Token without scope
                  value:
                    code: FORBIDDEN
                    message: 'Insufficient scope: write:* required.'
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: https://docs.nomos.energy/api-references/errors/FORBIDDEN
                Role without access:
                  summary: Role without access
                  value:
                    code: FORBIDDEN
                    message: Forbidden to access this route.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: https://docs.nomos.energy/api-references/errors/FORBIDDEN
        '404':
          description: The server can't find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrNotFound'
              examples:
                Unknown household:
                  summary: Unknown household
                  value:
                    code: NOT_FOUND
                    message: Household not found
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: https://docs.nomos.energy/api-references/errors/NOT_FOUND
        '409':
          description: >-
            The request could not be completed due to a conflict mainly due to
            unique constraints.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrConflict'
              examples:
                external_id already taken:
                  summary: external_id already taken
                  value:
                    code: CONFLICT
                    message: >-
                      Asset ha_b7q2m1k8v4n0x3c9l5p2r7td already has external_id
                      partner-bat-1.
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: https://docs.nomos.energy/api-references/errors/CONFLICT
                    errors:
                      - code: duplicate_external_id
                        field: external_id
                        message: >-
                          Asset ha_b7q2m1k8v4n0x3c9l5p2r7td already has
                          external_id partner-bat-1.
        '500':
          description: >-
            The server has encountered a situation it doesn't know how to
            handle.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrInternalServerError'
              examples:
                Unexpected error:
                  summary: Unexpected error
                  value:
                    code: INTERNAL_SERVER_ERROR
                    message: Internal Server Error
                    requestId: 37a04f8f-e791-491c-81e1-86cd304649bb
                    docs: >-
                      https://docs.nomos.energy/api-references/errors/INTERNAL_SERVER_ERROR
      security:
        - Bearer: []
components:
  schemas:
    CreateAsset:
      type: object
      properties:
        household:
          type: string
          description: The Nomos ID of the household the asset belongs to.
          example: dom_k3v9x2m7n1b4v8c2x6z0q5wd
        parent_inverter:
          type: string
          nullable: true
          description: >-
            The Nomos ID of the active inverter in the same household that the
            asset sits behind. Required on solar, optional on battery (a battery
            without it is AC-coupled), not allowed on other types.
          example: ha_i9k3l7w2e5r8t1y4u6o0p3as
        external_id:
          type: string
          minLength: 1
          description: >-
            Your own ID for the device, unique among all assets of your
            organization and never reused. If an asset with this `external_id`
            exists, you get `409` with its ID, so a retry after a timeout is
            safe.
          example: partner-bat-1
        type:
          type: string
          enum:
            - household_net
            - household_residual
            - inverter
            - solar
            - battery
            - wallbox
            - heat_pump
          description: >-
            You add `inverter`, `solar`, `battery`, `wallbox` and `heat_pump`.
            Nomos creates `household_net` and `household_residual` with a
            household's first asset.
          example: battery
        is_steerable:
          type: boolean
          description: >-
            Nomos expects a schedule for this asset before each day of
            operation.
          example: true
        manufacturer:
          type: string
          nullable: true
          example: Fronius
        model:
          type: string
          nullable: true
          example: BYD Battery-Box Premium HVS 10.2
        installed_at:
          type: string
          nullable: true
          format: date-time
          example: '2025-04-02T00:00:00Z'
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
          description: >-
            Your own free-form data, at most 10KB, for example the serial
            number.
          example:
            serial_number: '34118573'
        inverter:
          $ref: '#/components/schemas/InverterData'
        solar:
          $ref: '#/components/schemas/SolarData'
        battery:
          $ref: '#/components/schemas/BatteryData'
        wallbox:
          $ref: '#/components/schemas/WallboxData'
        heat_pump:
          $ref: '#/components/schemas/HeatPumpData'
      required:
        - household
        - external_id
        - type
        - is_steerable
      description: >-
        Unknown fields inside the type data object are rejected, and so is a
        type data object for another type. Unknown top-level fields are ignored.
        `null` on an optional field means the same as leaving it out.
      example:
        household: dom_k3v9x2m7n1b4v8c2x6z0q5wd
        parent_inverter: ha_i9k3l7w2e5r8t1y4u6o0p3as
        external_id: partner-bat-1
        type: battery
        is_steerable: true
        manufacturer: BYD
        model: Battery-Box Premium HVS 10.2
        battery:
          capacity_kwh: 10.2
          max_in_kw: 5
          max_out_kw: 5
        metadata:
          serial_number: '34118573'
    Asset:
      oneOf:
        - $ref: '#/components/schemas/BatteryAsset'
        - $ref: '#/components/schemas/InverterAsset'
        - $ref: '#/components/schemas/SolarAsset'
        - $ref: '#/components/schemas/WallboxAsset'
        - $ref: '#/components/schemas/HeatPumpAsset'
        - $ref: '#/components/schemas/HouseholdNetAsset'
        - $ref: '#/components/schemas/HouseholdResidualAsset'
      discriminator:
        propertyName: type
        mapping:
          battery: '#/components/schemas/BatteryAsset'
          inverter: '#/components/schemas/InverterAsset'
          solar: '#/components/schemas/SolarAsset'
          wallbox: '#/components/schemas/WallboxAsset'
          heat_pump: '#/components/schemas/HeatPumpAsset'
          household_net: '#/components/schemas/HouseholdNetAsset'
          household_residual: '#/components/schemas/HouseholdResidualAsset'
      description: >-
        A device in a household, or one of the two assets Nomos creates per
        household. It carries the type data object named like its `type`, with
        every field present and `null` where unknown.
    ErrBadRequest:
      type: object
      properties:
        code:
          type: string
          enum:
            - BAD_REQUEST
          description: The error code related to the status code.
          example: BAD_REQUEST
        message:
          type: string
          description: A human readable message describing the issue.
          example: 'invalid_type in ''end'': Required'
        requestId:
          type: string
          description: The request id to be used for debugging and error reporting.
          example: 37a04f8f-e791-491c-81e1-86cd304649bb
        docs:
          type: string
          description: The docs related to the error code.
          example: https://docs.nomos.energy/api-references/errors/BAD_REQUEST
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - invalid_type
                  - too_big
                  - too_small
                  - invalid_format
                  - not_multiple_of
                  - unrecognized_keys
                  - invalid_union
                  - invalid_key
                  - invalid_element
                  - invalid_value
                  - custom
                  - unserviceable_zip
                  - ended_subscription
                  - duplicate_grid_reduction
                  - missing_smart_meter
                  - missing_module_1
                  - unsupported_product
                  - unsupported_meter_order
                  - duplicate_meter_order
                  - unsupported_meter
                  - out_of_period_meter_reading
                  - unsupported_meter_reading
                  - duplicate_meter_reading
                  - implausible_meter_reading
                  - duplicate_customer_email
                  - invalid_iban
                  - upgrade_api_version
                  - withdrawal_not_allowed
                  - invalid_termination_date
                  - subscription_not_started
                  - missing_household
                  - invalid_household_customer
                  - invalid_household_meter
                  - duplicate_consumption_subscription
                  - invalid_inverter
                  - read_only_asset
                  - duplicate_external_id
                  - asset_has_children
                  - asset_decommissioned
                example: invalid_type
              field:
                type: string
                example: favoriteNumbers.1
              message:
                type: string
                example: 'Invalid input: expected string, received number'
            required:
              - code
              - field
              - message
          description: >-
            Per-field breakdown of a validation or business-rule failure.
            Omitted for API versions before the structured-errors cutoff.
      required:
        - code
        - message
        - requestId
        - docs
    ErrUnauthorized:
      type: object
      properties:
        code:
          type: string
          enum:
            - UNAUTHORIZED
          description: The error code related to the status code.
          example: UNAUTHORIZED
        message:
          type: string
          description: A human readable message describing the issue.
          example: Invalid or malformed token
        requestId:
          type: string
          description: The request id to be used for debugging and error reporting.
          example: 37a04f8f-e791-491c-81e1-86cd304649bb
        docs:
          type: string
          description: The docs related to the error code.
          example: https://docs.nomos.energy/api-references/errors/UNAUTHORIZED
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - invalid_type
                  - too_big
                  - too_small
                  - invalid_format
                  - not_multiple_of
                  - unrecognized_keys
                  - invalid_union
                  - invalid_key
                  - invalid_element
                  - invalid_value
                  - custom
                  - unserviceable_zip
                  - ended_subscription
                  - duplicate_grid_reduction
                  - missing_smart_meter
                  - missing_module_1
                  - unsupported_product
                  - unsupported_meter_order
                  - duplicate_meter_order
                  - unsupported_meter
                  - out_of_period_meter_reading
                  - unsupported_meter_reading
                  - duplicate_meter_reading
                  - implausible_meter_reading
                  - duplicate_customer_email
                  - invalid_iban
                  - upgrade_api_version
                  - withdrawal_not_allowed
                  - invalid_termination_date
                  - subscription_not_started
                  - missing_household
                  - invalid_household_customer
                  - invalid_household_meter
                  - duplicate_consumption_subscription
                  - invalid_inverter
                  - read_only_asset
                  - duplicate_external_id
                  - asset_has_children
                  - asset_decommissioned
                example: invalid_type
              field:
                type: string
                example: favoriteNumbers.1
              message:
                type: string
                example: 'Invalid input: expected string, received number'
            required:
              - code
              - field
              - message
          description: >-
            Per-field breakdown of a validation or business-rule failure.
            Omitted for API versions before the structured-errors cutoff.
      required:
        - code
        - message
        - requestId
        - docs
    ErrForbidden:
      type: object
      properties:
        code:
          type: string
          enum:
            - FORBIDDEN
          description: The error code related to the status code.
          example: FORBIDDEN
        message:
          type: string
          description: A human readable message describing the issue.
          example: You are not allowed to access this resource
        requestId:
          type: string
          description: The request id to be used for debugging and error reporting.
          example: 37a04f8f-e791-491c-81e1-86cd304649bb
        docs:
          type: string
          description: The docs related to the error code.
          example: https://docs.nomos.energy/api-references/errors/FORBIDDEN
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - invalid_type
                  - too_big
                  - too_small
                  - invalid_format
                  - not_multiple_of
                  - unrecognized_keys
                  - invalid_union
                  - invalid_key
                  - invalid_element
                  - invalid_value
                  - custom
                  - unserviceable_zip
                  - ended_subscription
                  - duplicate_grid_reduction
                  - missing_smart_meter
                  - missing_module_1
                  - unsupported_product
                  - unsupported_meter_order
                  - duplicate_meter_order
                  - unsupported_meter
                  - out_of_period_meter_reading
                  - unsupported_meter_reading
                  - duplicate_meter_reading
                  - implausible_meter_reading
                  - duplicate_customer_email
                  - invalid_iban
                  - upgrade_api_version
                  - withdrawal_not_allowed
                  - invalid_termination_date
                  - subscription_not_started
                  - missing_household
                  - invalid_household_customer
                  - invalid_household_meter
                  - duplicate_consumption_subscription
                  - invalid_inverter
                  - read_only_asset
                  - duplicate_external_id
                  - asset_has_children
                  - asset_decommissioned
                example: invalid_type
              field:
                type: string
                example: favoriteNumbers.1
              message:
                type: string
                example: 'Invalid input: expected string, received number'
            required:
              - code
              - field
              - message
          description: >-
            Per-field breakdown of a validation or business-rule failure.
            Omitted for API versions before the structured-errors cutoff.
      required:
        - code
        - message
        - requestId
        - docs
    ErrNotFound:
      type: object
      properties:
        code:
          type: string
          enum:
            - NOT_FOUND
          description: The error code related to the status code.
          example: NOT_FOUND
        message:
          type: string
          description: A human readable message describing the issue.
          example: Resource not found
        requestId:
          type: string
          description: The request id to be used for debugging and error reporting.
          example: 37a04f8f-e791-491c-81e1-86cd304649bb
        docs:
          type: string
          description: The docs related to the error code.
          example: https://docs.nomos.energy/api-references/errors/NOT_FOUND
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - invalid_type
                  - too_big
                  - too_small
                  - invalid_format
                  - not_multiple_of
                  - unrecognized_keys
                  - invalid_union
                  - invalid_key
                  - invalid_element
                  - invalid_value
                  - custom
                  - unserviceable_zip
                  - ended_subscription
                  - duplicate_grid_reduction
                  - missing_smart_meter
                  - missing_module_1
                  - unsupported_product
                  - unsupported_meter_order
                  - duplicate_meter_order
                  - unsupported_meter
                  - out_of_period_meter_reading
                  - unsupported_meter_reading
                  - duplicate_meter_reading
                  - implausible_meter_reading
                  - duplicate_customer_email
                  - invalid_iban
                  - upgrade_api_version
                  - withdrawal_not_allowed
                  - invalid_termination_date
                  - subscription_not_started
                  - missing_household
                  - invalid_household_customer
                  - invalid_household_meter
                  - duplicate_consumption_subscription
                  - invalid_inverter
                  - read_only_asset
                  - duplicate_external_id
                  - asset_has_children
                  - asset_decommissioned
                example: invalid_type
              field:
                type: string
                example: favoriteNumbers.1
              message:
                type: string
                example: 'Invalid input: expected string, received number'
            required:
              - code
              - field
              - message
          description: >-
            Per-field breakdown of a validation or business-rule failure.
            Omitted for API versions before the structured-errors cutoff.
      required:
        - code
        - message
        - requestId
        - docs
    ErrConflict:
      type: object
      properties:
        code:
          type: string
          enum:
            - CONFLICT
          description: The error code related to the status code.
          example: CONFLICT
        message:
          type: string
          description: A human readable message describing the issue.
          example: Resource already exists
        requestId:
          type: string
          description: The request id to be used for debugging and error reporting.
          example: 37a04f8f-e791-491c-81e1-86cd304649bb
        docs:
          type: string
          description: The docs related to the error code.
          example: https://docs.nomos.energy/api-references/errors/CONFLICT
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - invalid_type
                  - too_big
                  - too_small
                  - invalid_format
                  - not_multiple_of
                  - unrecognized_keys
                  - invalid_union
                  - invalid_key
                  - invalid_element
                  - invalid_value
                  - custom
                  - unserviceable_zip
                  - ended_subscription
                  - duplicate_grid_reduction
                  - missing_smart_meter
                  - missing_module_1
                  - unsupported_product
                  - unsupported_meter_order
                  - duplicate_meter_order
                  - unsupported_meter
                  - out_of_period_meter_reading
                  - unsupported_meter_reading
                  - duplicate_meter_reading
                  - implausible_meter_reading
                  - duplicate_customer_email
                  - invalid_iban
                  - upgrade_api_version
                  - withdrawal_not_allowed
                  - invalid_termination_date
                  - subscription_not_started
                  - missing_household
                  - invalid_household_customer
                  - invalid_household_meter
                  - duplicate_consumption_subscription
                  - invalid_inverter
                  - read_only_asset
                  - duplicate_external_id
                  - asset_has_children
                  - asset_decommissioned
                example: invalid_type
              field:
                type: string
                example: favoriteNumbers.1
              message:
                type: string
                example: 'Invalid input: expected string, received number'
            required:
              - code
              - field
              - message
          description: >-
            Per-field breakdown of a validation or business-rule failure.
            Omitted for API versions before the structured-errors cutoff.
      required:
        - code
        - message
        - requestId
        - docs
    ErrInternalServerError:
      type: object
      properties:
        code:
          type: string
          enum:
            - INTERNAL_SERVER_ERROR
          description: The error code related to the status code.
          example: INTERNAL_SERVER_ERROR
        message:
          type: string
          description: A human readable message describing the issue.
          example: Internal Server Error
        requestId:
          type: string
          description: The request id to be used for debugging and error reporting.
          example: 37a04f8f-e791-491c-81e1-86cd304649bb
        docs:
          type: string
          description: The docs related to the error code.
          example: >-
            https://docs.nomos.energy/api-references/errors/INTERNAL_SERVER_ERROR
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - invalid_type
                  - too_big
                  - too_small
                  - invalid_format
                  - not_multiple_of
                  - unrecognized_keys
                  - invalid_union
                  - invalid_key
                  - invalid_element
                  - invalid_value
                  - custom
                  - unserviceable_zip
                  - ended_subscription
                  - duplicate_grid_reduction
                  - missing_smart_meter
                  - missing_module_1
                  - unsupported_product
                  - unsupported_meter_order
                  - duplicate_meter_order
                  - unsupported_meter
                  - out_of_period_meter_reading
                  - unsupported_meter_reading
                  - duplicate_meter_reading
                  - implausible_meter_reading
                  - duplicate_customer_email
                  - invalid_iban
                  - upgrade_api_version
                  - withdrawal_not_allowed
                  - invalid_termination_date
                  - subscription_not_started
                  - missing_household
                  - invalid_household_customer
                  - invalid_household_meter
                  - duplicate_consumption_subscription
                  - invalid_inverter
                  - read_only_asset
                  - duplicate_external_id
                  - asset_has_children
                  - asset_decommissioned
                example: invalid_type
              field:
                type: string
                example: favoriteNumbers.1
              message:
                type: string
                example: 'Invalid input: expected string, received number'
            required:
              - code
              - field
              - message
          description: >-
            Per-field breakdown of a validation or business-rule failure.
            Omitted for API versions before the structured-errors cutoff.
      required:
        - code
        - message
        - requestId
        - docs
    InverterData:
      type: object
      nullable: true
      properties:
        kind:
          type: string
          nullable: true
          enum:
            - hybrid
            - pv
            - battery
            - null
          description: 'Role of the inverter: hybrid, PV only or battery only.'
          example: hybrid
        max_out_kw:
          type: number
          minimum: 0
          description: Rated AC output in kW.
          example: 10
        max_in_kw:
          type: number
          nullable: true
          minimum: 0
          description: >-
            Max power drawn from the grid in kW, for hybrid inverters that
            charge the battery from the grid.
          example: 10
        phases:
          anyOf:
            - type: number
              enum:
                - 1
            - type: number
              enum:
                - 3
            - nullable: true
          example: 3
        mppt_count:
          type: integer
          nullable: true
          minimum: 1
          example: 2
      required:
        - max_out_kw
      additionalProperties: false
    SolarData:
      type: object
      nullable: true
      properties:
        peak_power_kwp:
          type: number
          minimum: 0
          exclusiveMinimum: true
          description: >-
            DC nameplate of the modules in kWp, not the AC limit of the
            inverter.
          example: 9.8
        azimuth_deg:
          type: number
          nullable: true
          minimum: 0
          maximum: 360
          exclusiveMaximum: true
          description: Orientation in degrees from north, 180 is south.
          example: 180
        tilt_deg:
          type: number
          nullable: true
          minimum: 0
          maximum: 90
          description: Tilt in degrees, 0 is flat.
          example: 35
        mastr_unit_id:
          type: string
          nullable: true
          description: Unit number in the Marktstammdatenregister.
          example: SEE912345678901
      required:
        - peak_power_kwp
      additionalProperties: false
    BatteryData:
      type: object
      nullable: true
      properties:
        capacity_kwh:
          type: number
          minimum: 0
          exclusiveMinimum: true
          description: Nominal capacity in kWh.
          example: 10.2
        max_in_kw:
          type: number
          minimum: 0
          description: Max charge power in kW.
          example: 5
        max_out_kw:
          type: number
          minimum: 0
          description: Max discharge power in kW.
          example: 5
        min_soc:
          type: number
          nullable: true
          minimum: 0
          maximum: 1
          description: Lowest state of charge as a share of capacity, 0 to 1.
          example: 0.1
        max_soc:
          type: number
          nullable: true
          minimum: 0
          maximum: 1
          description: Highest state of charge as a share of capacity, 0 to 1.
          example: 0.95
      required:
        - capacity_kwh
        - max_in_kw
        - max_out_kw
      additionalProperties: false
    WallboxData:
      type: object
      nullable: true
      properties:
        max_in_kw:
          type: number
          minimum: 0
          description: Max charge power in kW.
          example: 11
        min_in_kw:
          type: number
          nullable: true
          minimum: 0
          description: Min charge power in kW.
          example: 1.4
        phases:
          anyOf:
            - type: number
              enum:
                - 1
            - type: number
              enum:
                - 3
            - nullable: true
          example: 3
      required:
        - max_in_kw
      additionalProperties: false
    HeatPumpData:
      type: object
      nullable: true
      properties:
        control_interface:
          type: string
          nullable: true
          enum:
            - sg_ready
            - power
            - null
          example: sg_ready
        max_in_kw:
          type: number
          minimum: 0
          description: Rated electrical power in kW.
          example: 3.5
      required:
        - max_in_kw
      additionalProperties: false
    BatteryAsset:
      type: object
      properties:
        object:
          type: string
          enum:
            - asset
        id:
          type: string
          example: ha_b7q2m1k8v4n0x3c9l5p2r7td
        household:
          type: string
          example: dom_k3v9x2m7n1b4v8c2x6z0q5wd
        parent_inverter:
          type: string
          nullable: true
          description: >-
            The Nomos ID of the inverter the asset sits behind. Set on solar and
            on a battery behind a hybrid inverter.
          example: ha_i9k3l7w2e5r8t1y4u6o0p3as
        external_id:
          type: string
          nullable: true
          description: Your own ID. Null on `household_net` and `household_residual`.
          example: partner-bat-1
        status:
          type: string
          enum:
            - active
            - decommissioned
          description: A decommissioned asset stays readable, by its ID and in the list.
          example: active
        is_steerable:
          type: boolean
          example: true
        manufacturer:
          type: string
          nullable: true
          example: BYD
        model:
          type: string
          nullable: true
          example: Battery-Box Premium HVS 10.2
        installed_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
          example:
            serial_number: '34118573'
        decommissioned_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        created_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
          example: '2026-10-06T09:12:44Z'
        type:
          type: string
          enum:
            - battery
        battery:
          type: object
          properties:
            capacity_kwh:
              type: number
              nullable: true
              minimum: 0
              exclusiveMinimum: true
              description: Nominal capacity in kWh.
              example: 10.2
            max_in_kw:
              type: number
              nullable: true
              minimum: 0
              description: Max charge power in kW.
              example: 5
            max_out_kw:
              type: number
              nullable: true
              minimum: 0
              description: Max discharge power in kW.
              example: 5
            min_soc:
              type: number
              nullable: true
              minimum: 0
              maximum: 1
              description: Lowest state of charge as a share of capacity, 0 to 1.
              example: 0.1
            max_soc:
              type: number
              nullable: true
              minimum: 0
              maximum: 1
              description: Highest state of charge as a share of capacity, 0 to 1.
              example: 0.95
          required:
            - capacity_kwh
            - max_in_kw
            - max_out_kw
            - min_soc
            - max_soc
      required:
        - object
        - id
        - household
        - parent_inverter
        - external_id
        - status
        - is_steerable
        - manufacturer
        - model
        - installed_at
        - metadata
        - decommissioned_at
        - created_at
        - type
        - battery
      title: battery
    InverterAsset:
      type: object
      properties:
        object:
          type: string
          enum:
            - asset
        id:
          type: string
          example: ha_b7q2m1k8v4n0x3c9l5p2r7td
        household:
          type: string
          example: dom_k3v9x2m7n1b4v8c2x6z0q5wd
        parent_inverter:
          type: string
          nullable: true
          description: >-
            The Nomos ID of the inverter the asset sits behind. Set on solar and
            on a battery behind a hybrid inverter.
          example: null
        external_id:
          type: string
          nullable: true
          description: Your own ID. Null on `household_net` and `household_residual`.
          example: partner-wb-1
        status:
          type: string
          enum:
            - active
            - decommissioned
          description: A decommissioned asset stays readable, by its ID and in the list.
          example: active
        is_steerable:
          type: boolean
          example: false
        manufacturer:
          type: string
          nullable: true
          example: null
        model:
          type: string
          nullable: true
          example: null
        installed_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
          example: null
        decommissioned_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        created_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
          example: '2026-10-06T09:12:44Z'
        type:
          type: string
          enum:
            - inverter
        inverter:
          type: object
          properties:
            kind:
              type: string
              nullable: true
              enum:
                - hybrid
                - pv
                - battery
                - null
              description: 'Role of the inverter: hybrid, PV only or battery only.'
              example: hybrid
            max_out_kw:
              type: number
              nullable: true
              minimum: 0
              description: Rated AC output in kW.
              example: 10
            max_in_kw:
              type: number
              nullable: true
              minimum: 0
              description: >-
                Max power drawn from the grid in kW, for hybrid inverters that
                charge the battery from the grid.
              example: 10
            phases:
              anyOf:
                - type: number
                  enum:
                    - 1
                - type: number
                  enum:
                    - 3
                - nullable: true
              example: 3
            mppt_count:
              type: integer
              nullable: true
              minimum: 1
              example: 2
          required:
            - kind
            - max_out_kw
            - max_in_kw
            - phases
            - mppt_count
      required:
        - object
        - id
        - household
        - parent_inverter
        - external_id
        - status
        - is_steerable
        - manufacturer
        - model
        - installed_at
        - metadata
        - decommissioned_at
        - created_at
        - type
        - inverter
      title: inverter
    SolarAsset:
      type: object
      properties:
        object:
          type: string
          enum:
            - asset
        id:
          type: string
          example: ha_b7q2m1k8v4n0x3c9l5p2r7td
        household:
          type: string
          example: dom_k3v9x2m7n1b4v8c2x6z0q5wd
        parent_inverter:
          type: string
          nullable: true
          description: >-
            The Nomos ID of the inverter the asset sits behind. Set on solar and
            on a battery behind a hybrid inverter.
          example: null
        external_id:
          type: string
          nullable: true
          description: Your own ID. Null on `household_net` and `household_residual`.
          example: partner-wb-1
        status:
          type: string
          enum:
            - active
            - decommissioned
          description: A decommissioned asset stays readable, by its ID and in the list.
          example: active
        is_steerable:
          type: boolean
          example: false
        manufacturer:
          type: string
          nullable: true
          example: null
        model:
          type: string
          nullable: true
          example: null
        installed_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
          example: null
        decommissioned_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        created_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
          example: '2026-10-06T09:12:44Z'
        type:
          type: string
          enum:
            - solar
        solar:
          type: object
          properties:
            peak_power_kwp:
              type: number
              nullable: true
              minimum: 0
              exclusiveMinimum: true
              description: >-
                DC nameplate of the modules in kWp, not the AC limit of the
                inverter.
              example: 9.8
            azimuth_deg:
              type: number
              nullable: true
              minimum: 0
              maximum: 360
              exclusiveMaximum: true
              description: Orientation in degrees from north, 180 is south.
              example: 180
            tilt_deg:
              type: number
              nullable: true
              minimum: 0
              maximum: 90
              description: Tilt in degrees, 0 is flat.
              example: 35
            mastr_unit_id:
              type: string
              nullable: true
              description: Unit number in the Marktstammdatenregister.
              example: SEE912345678901
          required:
            - peak_power_kwp
            - azimuth_deg
            - tilt_deg
            - mastr_unit_id
      required:
        - object
        - id
        - household
        - parent_inverter
        - external_id
        - status
        - is_steerable
        - manufacturer
        - model
        - installed_at
        - metadata
        - decommissioned_at
        - created_at
        - type
        - solar
      title: solar
    WallboxAsset:
      type: object
      properties:
        object:
          type: string
          enum:
            - asset
        id:
          type: string
          example: ha_b7q2m1k8v4n0x3c9l5p2r7td
        household:
          type: string
          example: dom_k3v9x2m7n1b4v8c2x6z0q5wd
        parent_inverter:
          type: string
          nullable: true
          description: >-
            The Nomos ID of the inverter the asset sits behind. Set on solar and
            on a battery behind a hybrid inverter.
          example: null
        external_id:
          type: string
          nullable: true
          description: Your own ID. Null on `household_net` and `household_residual`.
          example: partner-wb-1
        status:
          type: string
          enum:
            - active
            - decommissioned
          description: A decommissioned asset stays readable, by its ID and in the list.
          example: active
        is_steerable:
          type: boolean
          example: false
        manufacturer:
          type: string
          nullable: true
          example: null
        model:
          type: string
          nullable: true
          example: null
        installed_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
          example: null
        decommissioned_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        created_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
          example: '2026-10-06T09:12:44Z'
        type:
          type: string
          enum:
            - wallbox
        wallbox:
          type: object
          properties:
            max_in_kw:
              type: number
              nullable: true
              minimum: 0
              description: Max charge power in kW.
              example: 11
            min_in_kw:
              type: number
              nullable: true
              minimum: 0
              description: Min charge power in kW.
              example: 1.4
            phases:
              anyOf:
                - type: number
                  enum:
                    - 1
                - type: number
                  enum:
                    - 3
                - nullable: true
              example: 3
          required:
            - max_in_kw
            - min_in_kw
            - phases
      required:
        - object
        - id
        - household
        - parent_inverter
        - external_id
        - status
        - is_steerable
        - manufacturer
        - model
        - installed_at
        - metadata
        - decommissioned_at
        - created_at
        - type
        - wallbox
      title: wallbox
    HeatPumpAsset:
      type: object
      properties:
        object:
          type: string
          enum:
            - asset
        id:
          type: string
          example: ha_b7q2m1k8v4n0x3c9l5p2r7td
        household:
          type: string
          example: dom_k3v9x2m7n1b4v8c2x6z0q5wd
        parent_inverter:
          type: string
          nullable: true
          description: >-
            The Nomos ID of the inverter the asset sits behind. Set on solar and
            on a battery behind a hybrid inverter.
          example: null
        external_id:
          type: string
          nullable: true
          description: Your own ID. Null on `household_net` and `household_residual`.
          example: partner-wb-1
        status:
          type: string
          enum:
            - active
            - decommissioned
          description: A decommissioned asset stays readable, by its ID and in the list.
          example: active
        is_steerable:
          type: boolean
          example: false
        manufacturer:
          type: string
          nullable: true
          example: null
        model:
          type: string
          nullable: true
          example: null
        installed_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
          example: null
        decommissioned_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        created_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
          example: '2026-10-06T09:12:44Z'
        type:
          type: string
          enum:
            - heat_pump
        heat_pump:
          type: object
          properties:
            control_interface:
              type: string
              nullable: true
              enum:
                - sg_ready
                - power
                - null
              example: sg_ready
            max_in_kw:
              type: number
              nullable: true
              minimum: 0
              description: Rated electrical power in kW.
              example: 3.5
          required:
            - control_interface
            - max_in_kw
      required:
        - object
        - id
        - household
        - parent_inverter
        - external_id
        - status
        - is_steerable
        - manufacturer
        - model
        - installed_at
        - metadata
        - decommissioned_at
        - created_at
        - type
        - heat_pump
      title: heat_pump
    HouseholdNetAsset:
      type: object
      properties:
        object:
          type: string
          enum:
            - asset
        id:
          type: string
          example: ha_b7q2m1k8v4n0x3c9l5p2r7td
        household:
          type: string
          example: dom_k3v9x2m7n1b4v8c2x6z0q5wd
        parent_inverter:
          nullable: true
        external_id:
          nullable: true
        status:
          type: string
          enum:
            - active
            - decommissioned
          description: A decommissioned asset stays readable, by its ID and in the list.
          example: active
        is_steerable:
          type: boolean
          example: false
        manufacturer:
          type: string
          nullable: true
          example: null
        model:
          type: string
          nullable: true
          example: null
        installed_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
          example: null
        decommissioned_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        created_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
          example: '2026-10-06T09:12:44Z'
        type:
          type: string
          enum:
            - household_net
      required:
        - object
        - id
        - household
        - parent_inverter
        - external_id
        - status
        - is_steerable
        - manufacturer
        - model
        - installed_at
        - metadata
        - decommissioned_at
        - created_at
        - type
      title: household_net
    HouseholdResidualAsset:
      type: object
      properties:
        object:
          type: string
          enum:
            - asset
        id:
          type: string
          example: ha_b7q2m1k8v4n0x3c9l5p2r7td
        household:
          type: string
          example: dom_k3v9x2m7n1b4v8c2x6z0q5wd
        parent_inverter:
          nullable: true
        external_id:
          nullable: true
        status:
          type: string
          enum:
            - active
            - decommissioned
          description: A decommissioned asset stays readable, by its ID and in the list.
          example: active
        is_steerable:
          type: boolean
          example: false
        manufacturer:
          type: string
          nullable: true
          example: null
        model:
          type: string
          nullable: true
          example: null
        installed_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
          example: null
        decommissioned_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - nullable: true
          example: null
        created_at:
          anyOf:
            - type: string
            - type: string
              format: date-time
          example: '2026-10-06T09:12:44Z'
        type:
          type: string
          enum:
            - household_residual
      required:
        - object
        - id
        - household
        - parent_inverter
        - external_id
        - status
        - is_steerable
        - manufacturer
        - model
        - installed_at
        - metadata
        - decommissioned_at
        - created_at
        - type
      title: household_residual
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

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