How to Use Rate Plan IDs
- Fetch available rate plans with
/v1/utility/get. - Choose the plan that matches the home.
- Use that plan’s returned
ratePlans[].idvalue asratePlanIdwhen creating or updating a home. - Reuse that same
ratePlanIdin API calls that ask for it.
ratePlans[] response includes:
id: the rate plan ID to send asratePlanIdrateID: the semantic normalized tariff referenceratePlanNamesupportedType
ratePlans[].id: the WattShift plan identifier you pass asratePlanIdto home endpoints.ratePlans[].rateID: the semantic normalized rate identifier you can use as a human-readable tariff reference.
Typical Flow
- Call
/v1/utility/get. - Pick a plan from the returned
ratePlansarray. - Send that plan’s
ratePlans[].idvalue asratePlanIdto/v1/homes/createor/v1/homes/{homeId}/update. - Use the same home for price signals, impact calculations, and optimization workflows.
solarSystemSizeKw and isNonNetMetered on create or update. These fields create or update the home’s solar info using WattShift’s standard solar defaults.
Understanding the Semantic Rate ID
WattShift’s normalized rate data also includes a semantic rate ID that captures plan characteristics directly in the identifier. That format is useful when you want a deeper reference for plan structure, eligibility, climate region, or effective dates.POST /v1/utility/get returns that semantic identifier separately as ratePlans[].rateID, while ratePlans[].id remains the value to send as ratePlanId.
The semantic RateID schema uses sector-specific formats. Residential plans use a long-form 13-segment structure, and non-residential sectors use an extended format. Both include four separate time/version fields:
effective_startvintage_yearenrollment_closeeffective_end
rateID. Use it as a structured reference for the normalized tariff, while continuing to send ratePlans[].id as ratePlanId.
Example:
C / I / A formats.