Franklin Whole Home Sites API
Site records — query, list, modify and delete.
Site records — query, list, modify and delete.
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-sites-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 Sites 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: Sites
description: Site records — query, list, modify and delete.
paths:
/api-common/querySiteInfo:
get:
tags:
- Sites
summary: Query Site Information
operationId: querySiteInfo
description: Query site information according to the site ID
parameters:
- name: siteId
in: query
required: true
schema:
type: integer
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/querySiteList:
get:
tags:
- Sites
summary: Query Site List
operationId: querySiteList
description: Get all site information, or the site information of its installers
parameters:
- name: installerId
in: query
required: false
schema:
type: integer
description: Installer ID
- name: siteName
in: query
required: false
schema:
type: string
description: Site name
- name: userAccount
in: query
required: false
schema:
type: string
description: User account
- name: deviceId
in: query
required: false
schema:
type: string
description: Device ID
- name: current
in: query
required: false
schema:
type: integer
description: Current page. Start the query from page 1 and upload the page number that need to be queried. Defaults to the first page if not posted
- name: pageSize
in: query
required: false
schema:
type: integer
description: Display quantity per page. Number of data returned by the current page when queried. The default number is 20 if not posted. Maximum is 50
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/modifySite:
post:
tags:
- Sites
summary: Modify or Delete a Site
operationId: modifySite
description: Modify or delete a site
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
opt:
type: integer
description: Operation type. 1:Modify, 2:Delete
siteId:
type: integer
description: Site ID
siteName:
type: string
description: Site name
longitude:
type: string
description: Longitude of the site
latitude:
type: string
description: Latitude of the site
address:
type: string
description: Site address
postCode:
type: string
description: Zip code
installerId:
type: integer
description: Installer ID
required:
- opt
- siteId
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).