Skip to main content
WattShift Impact Calculations turn interval energy data into customer-facing impact metrics. Send 15-minute import usage, optionally include solar export, and receive calculated bill cost plus available grid-services revenue and carbon impact. These endpoints are useful when you need to compare actual and counterfactual scenarios, validate a device-control strategy, estimate EV charging cost, or show the value of solar, storage, and load shifting under the customer’s actual tariff. The home-backed period route is available when the home is already onboarded. Use the direct calculate route when you want to calculate from inline home context without creating a persisted home first.

Endpoints

Use caseEndpointWhen to use it
Custom-period impact calculationPOST /v1/homes/{homeId}/calculate/impactYou have a billing period or scenario window that does not line up exactly with a calendar month.
Inline-context impact calculationPOST /v1/calculate/impactYou have rate plan and zipcode context, but do not want to create a home before calculating.
In the API reference, the home path parameter is named {id}. In the examples below, {homeId} means the same value: the ID of the home you are calculating impacts for.

Prerequisites

Home-backed impact calculations require the home to have a stored utilityId and ratePlanId.
  • Set these during API-based onboarding.
  • Use Update Home if you need to change them later.
  • When a request asks for ratePlanId, send the selected ratePlans[].id from POST /v1/utility/get. The companion ratePlans[].rateID is the semantic tariff reference, not the value to send as ratePlanId.
See Rate Plan IDs for the full rate-plan selection flow.

Usage Data

Both impact-calculation endpoints expect daily arrays of 15-minute interval values.
  • Each day must contain exactly 96 numeric values.
  • usage is import consumption in kWh.
  • export is optional solar or battery export in kWh, using the same daily shape as usage.
  • If export is provided, it must contain the same number of days as usage.

Period Bills

Use the period endpoint when the analysis window is a customer billing period or scenario window.
POST /v1/homes/{homeId}/calculate/impact
Send startDate and endDate as YYYY-MM-DD or ISO 8601 timestamps. The usage array must include one daily array for each date from startDate up to, but not including, endDate. For example, 2025-01-07 through 2025-02-08 requires 32 daily arrays.
{
  "usage": [
    [0.18, 0.16, 0.11 /* 93 more 15-minute values */],
    /* one daily array for each day in the period */
  ],
  "export": [
    [0, 0, 0 /* 93 more 15-minute values */],
    /* optional; same number of daily arrays as usage */
  ],
  "startDate": "2025-01-07",
  "endDate": "2025-02-08",
}

Inline Context

Use the direct calculate endpoint when you can provide the rate plan and zipcode in the request body instead of referencing an onboarded home.
POST /v1/calculate/impact
{
  "home": {
    "ratePlanId": "64f1...",
    "zipcode": "94612",
    "carbonSignalImportance": "MEDIUM",
    "solarCapacityKw": 6.4,
  },
  "usage": [
    [0.18, 0.16, 0.11 /* 93 more 15-minute values */],
    /* one daily array for each day in the period */
  ],
  "startDate": "2025-01-07",
  "endDate": "2025-02-08",
}
Set useDefaultUsage to true to generate usage from Palmetto baseline data using the supplied zipcode and optional solarCapacityKw.

Response

Home-backed period calculations return impact fields for the requested window:
{
  "billTotal": 132.56,
  "gridServicesRev": 25.34,
  "CO2e": 300,
  "startDate": "2025-01-07",
  "endDate": "2025-02-08"
}
  • billTotal: Total tariff bill cost in local currency.
  • gridServicesRev: Estimated grid-services revenue in local currency, when available from the home’s meter, zipcode, and price-signal context.
  • CO2e: Carbon dioxide equivalent emissions in pounds of marginal greenhouse gas, when available from the home’s zipcode and carbon-signal context.

Notes

Billing period matching: Queries that do not precisely match a customer’s billing period are still useful for relative bill and scenario calculations, but they will not exactly match the customer’s utility bill total. Scenario comparison: To show the value of a shift, run the same endpoint twice: once with the baseline usage profile and once with the shifted or optimized profile. Compare billTotal, gridServicesRev, and CO2e across the two responses. Solar export: Include export when the customer has solar or battery exports that should offset import usage under the selected tariff.