HomeGuidesAPI ReferenceChangelog
Log In
API Reference

Storage-in-Switch Request Template

This page provides a pre-constructed savings analysis call for Storage-in-Switch (Switch + Arcadia's Storage Optimization add-on).

What is Storage-in-Switch?

Arcadia is proud to offer a Storage add-on service which allows you to use your existing usage and solar production profiles against a designated endpoint to model the potential savings with storage factored in. If you are an existing Switch customer and could benefit from storage optimization simulations please reach out to your account manager for more information!

What is the difference between Switch and Storage-in-Switch?

Switch does not natively provide modeling support for complex sites with both solar and storage apparatuses. The goal of the Switch product is to provide a comprehensive simulation of benefits as a result of installing solar and tariff optimization. Storage-in-Switch allows for the ingestion of your existing data profiles along with some additional battery flow parameters to simulate the battery storage system to create adjusted profiles for grid imports, solar exports, and battery interactions.

❗️

This is a paid add on to the Switch Product. If you are interested, please reach out to our support team at [email protected].


Storage-in-Switch Template

{
    "accountId": "4c6176b3-46c2-47d2-829f-5b8f842aa9ae",
    "fromDateTime": "2025-10-01T00:00:00-07:00",
    "propertyInputs": [
        {
            "scenarios": "before",
            "keyName": "masterTariffId",
            "dataValue": "522"
        },
        {
            "scenarios": "before",
            "keyName": "providerProfileId",
            "dataValue": "custom-usage-profile-ppid"
        },
        {
            "scenarios": "after,solar",
            "keyName": "storageProviderProfileId",
            "dataValue": "storage-optimization-example-sppid"
        },
        {
            "scenarios": "solar,after,before",
            "keyName": "projectDuration",
            "dataValue": 10
        }
    ],
    "batteryDegradation": {
        "percentPerYear": 2.5
    }
}

Supplemental Context:

As you can see above the request begins with our top level definitions such as the account identifier accountId (or providerAccountId if you choose), and a starting point (fromDateTime) for the analysis. Note that the toDateTime (deprecated as an input field) seen in the response is a result of the projectDuration property you supply via the propertyInputs list.

propertyInputs List

The next component will be our property inputs. These are objects supplied as key/value pairs that have implications for the underlying calculation. These could be designations to pull in "Profile" data (example "keyName": "profileId"), or they could be criteria that influence cost, tiering, credits, or other account specific behavior impacting the analysis (example "keyName": "projectDuration" simulating 10 years in this example). Our collection of properties are extensive, so we recommend a thorough read through of our Properties documentation to ensure you have a good grasp on how to identify, unpack, and facilitate their use in your savings analyses for optimal results.

Because this is Storage-in-Switch we are defining our pre-solar usage and the collection of 3 optimized storage profiles wrapped into the storageProviderProfileId property. This can be a little confusing if you are new to Arcadia's APIs, so we put some supplemental notes and code snippets from the request body to aid your understanding below:

// You can choose to supply the `accountId` (Arcadia UUID) or `providerAccountId` (Custom Identifier)

"accountId": "4c6176b3-46c2-47d2-829f-5b8f842aa9ae"

// It is important to be explicit with your time zone designations (ISO8601) both in the Savings Analysis request and when creating your initial usage and solar profiles!

"fromDateTime": "2025-10-01T00:00:00-07:00"

// Our post-solar MTID is stored in our optimized storage profiles so we only need to pass in our pre-solar MTID property object

{
    "scenarios": "before",
    "keyName": "masterTariffId",
    "dataValue": "522"
}

// The property object below illustrates a profile housing our base consumption data. Note that we are only passing in the "before" scenario designation in an SinS request structure. We are using our custom `providerProfileId`, but you can use the Arcadia generated UUID `profileId` if you wish.
{
    "scenarios": "before",
    "keyName": "providerProfileId",
    "dataValue": "custom-usage-profile-ppid"
}

// During your storage optimization call made against the `/rest/v1/profiles/storage` endpoint, you must supply a `providerProfileId` value. This value is what we attribute to the `storageProviderProfileId` keyName shown below. This property houses all 3 of the optimized profiles and allows a userly-friendly and error prone way of supplying these inputs in one singular property object.

{
    "scenarios": "after,solar",
    "keyName": "storageProviderProfileId",
    "dataValue": "storage-optimization-example-sppid"
}

// The goal is consistency, our APIs are flexible but you will want to make sure your chosen `keyName` aligns with the `dataValue` in your property objects otherwise errors are expected.

In addition to the notes above, we highly suggest reading through our step-by-step guide here. Creating the necessary storageProviderProfileId value takes place specifically in Step 5. Those with a keen eye may be questioning if you can supply the 3 child profiles individually. The answer is yes, however we recommend the method above due to its simplicity and cutting down on user error. Our logic ensures the appropriate operators are in play and reduces unnecessary complexity.

🚧

If you are a Storage add-on customer and are running into unexpected errors our results please capture your request and response JSON and submit a support ticket to our team via [email protected]