Franklin Whole Home System Settings API
Time-of-use profiles, aPower switch control and smart-circuit settings.
Time-of-use profiles, aPower switch control and smart-circuit settings.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/franklin-whole-home-system-settings-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
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).
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
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
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).