HomeGuidesAPI ReferenceChangelog
Log In
API Reference

Add Storage Profile

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Create post-storage usage, solar, and storage profiles by submitting account, profile, tariff, and battery inputs to the Storage Profile endpoint.

Use this endpoint after you have created the base consumption profile and, when applicable, one or more solar production profiles. The response generates three profiles that can be used in a Storage-in-Switch Savings Analysis.

triangle-exclamation

Storage profiles cannot be created with private tariffs. Use a public tariff and confirm the tariff status with the privacy field on the Tariff object.

Resource URI

POST /rest/v1/profiles/storage

PUT requests are not allowed.

Required setup

  1. Create or identify an account with accountId or providerAccountId.
  2. Create or identify an ELECTRICITY consumption profile.
  3. Create or identify any solar production profiles needed for the storage model.
  4. Choose the post-solar tariff to pass as storage.mainTariffId.
  5. Pass fromDateTime with an explicit timezone that matches the usage and solar profiles.

Key request fields

FieldTypeDescription
providerAccountIdStringYour account identifier. Use this or accountId to identify the account.
providerProfileIdStringPrefix for the three generated post-storage profiles. Switch appends -usage, -solar, and -storage.
fromDateTimeStringStart date and time for the generated profiles. Include the timezone.
consumptionObjectConsumption profile to use in storage profile creation.
solarObject or ArraySolar profile or profiles to use in storage profile creation. Supports dataFactor scaling.
storage.mainTariffIdIntegerPost-solar tariff used by the storage model.
storage.dispatchStrategyObjectControls battery charging and discharging behavior. Defaults to optimized dispatch when omitted.
storage.batteryNameplatePowerNumberMaximum battery power output in kW DC. Use this when charge and discharge rate limits are the same. Optional.
storage.batteryNameplateCapacityNumberTotal battery energy storage capacity in kWh DC. Optional.
storage.batteryNameplateChargePowerKwDcNumberMaximum battery charge power in kW DC. Use with batteryNameplateDischargePowerKwDc when charge and discharge limits differ. Optional.
storage.batteryNameplateDischargePowerKwDcNumberMaximum battery discharge power in kW DC. Use with batteryNameplateChargePowerKwDc when charge and discharge limits differ. Optional.
storage.batteryMinSocNumberMinimum state of charge as a fraction of total capacity. Optional.
storage.batteryMaxSocNumberMaximum state of charge as a fraction of total capacity. Optional.
storage.batteryInitialSocNumberInitial state of charge as a fraction of total capacity. Optional.
storage.batteryDcCoupledBooleanWhether the battery is directly connected to the solar DC output. Optional.
storage.allowBatteryToGridBooleanWhether the battery can export energy to the grid. Optional.
storage.allowGridToBatteryBooleanWhether the battery can charge from the grid. Optional.
storage.allowSolarToGridBooleanWhether solar energy can export directly to the grid. Optional.
storage.allowSolarToBatteryBooleanWhether solar energy can charge the battery. Optional.
storage.tariffPropertyInputsArrayTariff property inputs required by the selected tariff, such as eligibility or applicability values. Optional.

For the full request model, storage profile workflow, dispatch strategy details, generated-profile behavior, and response notes, see Storage Profiles API.

Generated profiles

A successful request creates three post-storage profiles in the account:

SuffixProfileDescription
-usagePost-storage grid imports to siteGrid-to-site kWh after battery operation, excluding imports used only to charge the battery.
-solarPost-storage grid exports from solarSolar-to-grid export kWh after self-consumption and battery charging.
-storageGrid imports and exports to and from the batteryNet grid imports and exports attributable to battery grid charging and battery exports.

Example

{
  "providerAccountId": "sins-example-jun23",
  "providerProfileId": "sins-example-jun23-poststorage",
  "fromDateTime": "2023-05-01T00:00:00-07:00",
  "consumption": {
    "providerProfileId": "sins-example-jun23-bills"
  },
  "solar": [
    {
      "providerProfileId": "sins-example-jun23-solar",
      "dataFactor": 1.5
    }
  ],
  "storage": {
    "mainTariffId": 3424821,
    "dispatchStrategy": {
      "optimize": true
    },
    "batteryNameplatePower": "3.0",
    "batteryNameplateCapacity": "6.0",
    "batteryMinSoc": "0.1",
    "batteryMaxSoc": "1.0",
    "batteryInitialSoc": "0.5",
    "batteryDcCoupled": true,
    "allowBatteryToGrid": true,
    "allowGridToBattery": true,
    "allowSolarToGrid": true,
    "allowSolarToBattery": true
  }
}

Use the generated providerProfileId prefix, such as sins-example-jun23-poststorage, as the storageProviderProfileId value in a Storage-in-Switch Request Template.

A successful response creates three profiles that share the same providerProfileId prefix and use -usage, -solar, and -storage suffixes. Retrieve a generated profile with Get Storage Profile with profileId or Get Storage Profile with providerProfileId.

Body Params
string

Unique identifier that you can generate in order to keep track of the accounts that you create within the API.

string

Unique identifier that you can generate in order to keep track of the accounts that you create within the API.

string

The start date time of the profile. The timezone needs to be passed in and match the timezone passed into the consumption and solar profiles.

consumption
object

The usage profile you wish to use in the storage profile creation.

solar
object

The usage profile you wish to use in the storage profile creation.

storage
object

This object holds all of the battery specifications and other important information needed to create the optimized profiles.

Responses

Language
Credentials
Basic
base64
:
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json