Franklin Whole Home System Settings API

Time-of-use profiles, aPower switch control and smart-circuit settings.

Operations 6

POST /api-common/setTouProfile Set TOU Profile #
GET /api-common/queryTouProfile Query TOU Profile #
POST /api-common/setSwitchParam Set aPower Switch #
GET /api-common/queryApowerSwitchStatus Query aPower Switch Status #
POST /api-common/setSmartCircuits Set Smart Circuits #
GET /api-common/querySmartCircuitParameters Query Smart Circuit Parameters #

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for apis

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

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/franklin-whole-home-system-settings-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

Free tier, no email required.

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

OpenAPI Specification

franklin-whole-home-system-settings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FranklinWH System Settings API
  version: '1.0'
  summary: Partner API for the FranklinWH (Franklin Whole Home) residential energy storage platform.
  description: 'Machine-readable rendering of the FranklinWH partner API as published by FranklinWH''s own API portal at https://api.franklinwh.com/ (portal title `FWH-API-Service`, author `FWH`, version 1.0). The portal ships its complete operation catalogue - paths, HTTP methods, parameter names, locations, types, requirement flags and value notes - as a static, publicly retrievable JavaScript module; this OpenAPI document is a faithful format conversion of that catalogue. Nothing has been added that the portal does not publish. Response payload schemas are NOT published by the portal, so only the observed response envelope is modelled here.


    The API covers site and device inventory, telemetry and energy data, warnings and backup events, time-of-use profiles, smart-circuit and grid-event control, aPower battery start/stop, device grouping and an operation audit log, plus a Sunrun-specific namespace (`/api-sunrun/`).


    Authentication: POST /api-common/tokenizer with a `cp` / `ck` credential pair returns a token that is sent on every other operation in the `Authorization` header.


    Base URL: the only base URL FranklinWH publishes publicly is the free test environment, https://test-api.franklinwh.com. The production base URL is issued to authorised partners during onboarding and is not published.'
  contact:
    name: FranklinWH Support
    email: service@franklinwh.com
    url: https://www.franklinwh.com/support/contact/
  x-provenance:
    method: derived
    source: https://api.franklinwh.com/js/apiList-eQeWKe2I.js
    source_portal: https://api.franklinwh.com/
    derived: '2026-08-16'
    note: Converted from the FranklinWH API portal's own published operation catalogue. Operations, parameters and request examples are verbatim from that catalogue; no operation, parameter or schema was invented.
servers:
- url: https://test-api.franklinwh.com
  description: Free test environment - the only base URL FranklinWH publishes publicly (portal `host` / `basePath`).
security:
- AuthorizationToken: []
tags:
- name: System Settings
  description: Time-of-use profiles, aPower switch control and smart-circuit settings.
paths:
  /api-common/setTouProfile:
    post:
      tags:
      - System Settings
      summary: Set TOU Profile
      operationId: setTouProfile
      description: Set energy TOU profile
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                deviceId:
                  type: string
                  description: Device id
                touId:
                  type: integer
                  description: TOU profile ID
                season:
                  type: array
                  items:
                    type: object
                  description: TOU profile season
              required:
              - deviceId
              - touId
              - season
            example:
              deviceId: 10080008B00A22150090
              touId: 10688
              season:
              - month: 5,6,7,8,9,10
                dayType: 1
                time:
                - startTime: 00:00
                  endTime: 08:00
                  waveType: 0
                  schedule: 8
                - startTime: 08:00
                  endTime: '21:00'
                  waveType: 1
                  schedule: 2
                - startTime: '21:00'
                  endTime: 08:00
                  waveType: 2
                  schedule: 1
              - month: 5,6,7,8,9,10
                dayType: 1
                time:
                - startTime: 00:00
                  endTime: 08:00
                  waveType: 0
                  schedule: 8
                - startTime: 08:00
                  endTime: '21:00'
                  waveType: 1
                  schedule: 2
                - startTime: '21:00'
                  endTime: 08:00
                  waveType: 2
                  schedule: 1
      responses:
        '200':
          description: Envelope response. Non-zero `code` values (401 wrong token, 403 missing token or token param) are returned inside the envelope with HTTP 200.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiEnvelope'
        '404':
          description: Unknown path.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api-common/queryTouProfile:
    get:
      tags:
      - System Settings
      summary: Query TOU Profile
      operationId: queryTouProfile
      description: Query energy TOU profile
      parameters:
      - name: deviceId
        in: query
        required: true
        schema:
          type: string
        description: Device id
      responses:
        '200':
          description: Envelope response. Non-zero `code` values (401 wrong token, 403 missing token or token param) are returned inside the envelope with HTTP 200.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiEnvelope'
        '404':
          description: Unknown path.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api-common/setSwitchParam:
    post:
      tags:
      - System Settings
      summary: Set aPower Switch
      operationId: setSwitchParam
      description: Set aPower Switch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                deviceId:
                  type: string
                  description: Device id
                cmd:
                  type: integer
                  description: 'Type. 1 : Start up, 2 : Shut down'
              required:
              - deviceId
              - cmd
      responses:
        '200':
          description: Envelope response. Non-zero `code` values (401 wrong token, 403 missing token or token param) are returned inside the envelope with HTTP 200.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiEnvelope'
        '404':
          description: Unknown path.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api-common/queryApowerSwitchStatus:
    get:
      tags:
      - System Settings
      summary: Query aPower Switch Status
      operationId: queryApowerSwitchStatus
      description: Query aPower Switch Status
      parameters:
      - name: deviceId
        in: query
        required: true
        schema:
          type: string
        description: Device id
      responses:
        '200':
          description: Envelope response. Non-zero `code` values (401 wrong token, 403 missing token or token param) are returned inside the envelope with HTTP 200.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiEnvelope'
        '404':
          description: Unknown path.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api-common/setSmartCircuits:
    post:
      tags:
      - System Settings
      summary: Set Smart Circuits
      operationId: setSmartCircuits
      description: Set smart circuits
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                deviceId:
                  type: string
                  description: Device id
                swMerge:
                  type: integer
                  description: 'Circuits Merge. 0: Separated 1 : Merged If set to 1, It represents the merging of circuit 1 and circuit 2, and all the value set by sw2 will be invalid'
                sw1Name:
                  type: string
                  description: Circuit 1 naming
                sw1MsgType:
                  type: integer
                  description: 'Operation type. 1 : Manual switch 2 : Parameter settings'
                sw1SocLowSet:
                  type: integer
                  description: 'SOC threshold to shed loads on circuit 1. 0~100;0 : No limit … 100 : Turn off immediately after disconnecting from the grid'
                sw1Mode:
                  type: integer
                  description: 'Circuit 1 operation. 0 : Manually turn off 1: Manually turn on, 2 :Timing plan'
                sw1ProLoad:
                  type: integer
                  description: 'Circuit 1 status. 0: Off  1:On'
                sw1Freq:
                  type: integer
                  description: 'Cycle period of Circuit 1. 0 : Single  1: Daily 2 : Weekly 3: Monthly'
                sw1TimeEn:
                  type: array
                  items:
                    type: integer
                  description: 'Circuit 1 timing plan. [0, 1]  0: Disabled 1: Enabled'
                sw1Time:
                  type: array
                  items:
                    type: string
                  description: Circuit 1 time period. ["2021-08-06 09:00/ 2021-08-06 12:00",  "2021-08-06 18:00/ 2021-08-06 20:00"] Up to 2 time periods
                sw2Name:
                  type: string
                  description: Circuit 2 naming. All parameter descriptions refer to sw1
                sw2MsgType:
                  type: integer
                  description: Operation type. All parameter descriptions refer to sw1
                sw2SocLowSet:
                  type: integer
                  description: SOC threshold to shed loads on circuit 2. All parameter descriptions refer to sw1
                sw2Mode:
                  type: integer
                  description: Circuit 2 operation. All parameter descriptions refer to sw1
                sw2ProLoad:
                  type: integer
                  description: Circuit 2 status. All parameter descriptions refer to sw1
                sw2Freq:
                  type: integer
                  description: Cycle period of Circuit 2. All parameter descriptions refer to sw1
                sw2TimeEn:
                  type: integer
                  description: Circuit 2 timing plan. All parameter descriptions refer to sw1
                sw2Time:
                  type: array
                  items:
                    type: integer
                  description: Circuit 2 time period. All parameter descriptions refer to sw1
                sw3Name:
                  type: string
                  description: Circuit 3 naming. All parameter descriptions refer to sw1
                sw3MsgType:
                  type: integer
                  description: Operation type. All parameter descriptions refer to sw1
                sw3SocLowSet:
                  type: integer
                  description: SOC threshold to shed loads on circuit 3. All parameter descriptions refer to sw1
                sw3Mode:
                  type: integer
                  description: Circuit 3 operation. All parameter descriptions refer to sw1
                sw3ProLoad:
                  type: integer
                  description: Circuit 3 status. All parameter descriptions refer to sw1
                sw3Freq:
                  type: integer
                  description: Cycle period of Circuit 3. All parameter descriptions refer to sw1
                sw3TimeEn:
                  type: integer
                  description: Circuit 3 timing plan. All parameter descriptions refer to sw1
                sw3Time:
                  type: array
                  items:
                    type: integer
                  description: Circuit 3 time period. All parameter descriptions refer to sw1
              required:
              - deviceId
      responses:
        '200':
          description: Envelope response. Non-zero `code` values (401 wrong token, 403 missing token or token param) are returned inside the envelope with HTTP 200.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiEnvelope'
        '404':
          description: Unknown path.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /api-common/querySmartCircuitParameters:
    get:
      tags:
      - System Settings
      summary: Query Smart Circuit Parameters
      operationId: querySmartCircuitParameters
      description: Query smart circuit parameters
      parameters:
      - name: deviceId
        in: query
        required: true
        schema:
          type: string
        description: Device ID
      responses:
        '200':
          description: Envelope response. Non-zero `code` values (401 wrong token, 403 missing token or token param) are returned inside the envelope with HTTP 200.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiEnvelope'
        '404':
          description: Unknown path.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
components:
  schemas:
    NotFoundError:
      type: object
      description: Framework 404 body returned for unknown paths.
      properties:
        timestamp:
          type: string
          format: date-time
        path:
          type: string
        status:
          type: integer
        error:
          type: string
        message:
          type:
          - string
          - 'null'
        requestId:
          type: string
      examples:
      - timestamp: '2026-08-16T17:23:07.914+00:00'
        path: /
        status: 404
        error: Not Found
        message: null
        requestId: 1748b892-1427296
    ApiEnvelope:
      type: object
      description: Response envelope used by every operation. Observed live on https://test-api.franklinwh.com.
      properties:
        code:
          type: integer
          description: Result code. 401 = wrong token, 403 = missing token or token param.
        msg:
          type: string
          description: Human-readable result message.
        data:
          description: Operation payload. FranklinWH does not publish payload schemas; shape varies per operation.
      examples:
      - code: 401
        msg: wrong token
  securitySchemes:
    AuthorizationToken:
      type: apiKey
      in: header
      name: Authorization
      description: Token returned by POST /api-common/tokenizer (exchange of a `cp` / `ck` credential pair).