Skip to main content Scroll Top

Software Company in California: Building on the CEC’s MIDAS Rate Database, Call by Call

Updated November 2026 · Written and maintained by the Progression Agency strategy team

California’s Load Management Standards make the state’s largest utilities and community choice aggregators publish time-varying rates in MIDAS, a machine-readable database the California Energy Commission has run since August 25, 2021. A thermostat, water heater or EV charger app can read those rates and move its run time to cheaper, cleaner hours, if the code behind it follows MIDAS step by step. A software company in California building that product starts with an account, a ten minute token and ten lookup tables. Progression’s engineers are based in New York, build for California product teams remotely and come on site when a team asks.

On this page · 11 sections
  1. Fetched at midnight, expired by ten past
  2. How a software company in California reads MIDAS
  3. The session, call by call
  4. Integration budgets, as published
  5. Twelve aggregators, five utilities and a 700 GWh line
  6. San Jose Clean Energy and Silicon Valley Clean Energy Authority in MIDAS
  7. An Irvine software company and Southern California Edison
  8. Upload rights stay with the utilities
  9. Greenhouse gas signals beside the price
  10. When a FlexAlert arrives
  11. Before the first scheduled run

No energy data?A California business that needs an internal tool, a client portal or an integration with no energy data in it gets little from the MIDAS steps below; our software development company page covers that work.

MIDAS and the Load Management Standards belong to the California Energy Commission and this page describes them as the CEC’s two pages give them; the CEC can change either, so confirm the current wording before building. Progression has no relationship with the CEC or any utility or community choice aggregator and makes no claim about any customer’s bill. Regulatory questions go to the CEC, and contract questions go to counsel.

Fetched at midnight, expired by ten past

A water heater scheduler asks MIDAS for a token at midnight. At 12:14 it tries to read rates and fails. Nothing is wrong with the rates. The token was good for ten minutes, and the scheduler waited fourteen.

A four step timeline: the app requests a token at midnight, the token expires at ten past, the app fails at 12:14 and the fix is a token request before every read.A four step timeline: the app requests a token at midnight, the token expires at ten past, the app fails at 12:14 and the fix is a token request before every read.
Illustrative example. A hypothetical scheduler; no product is named.

The CEC’s MIDAS page says the token expires after 10 minutes. A scheduler that stores the token and reuses it will work in testing and fail in production, at hours nobody is watching. The fix is a token request before every read, not a longer timer.

  • A token lasts 10 minutes and no longer.
  • A stored token is a bug waiting for a quiet hour.
  • Request a token before each read.
  • Log the token request and the read together.

How a software company in California reads MIDAS

The CEC’s MIDAS page says the Market Informed Demand Automation Server provides access to utilities’ time-varying rates, greenhouse gas emission signals and California Independent System Operator FlexAlerts. It has been available since August 25, 2021, and is the principal tool supporting the load management standards.

The Load Management Standards page says the standards encourage shifting electricity use from times when it is expensive and polluting to times when it is cheaper and cleaner. The revised standards require all large utilities and community choice aggregators to provide real-time electricity rates in a format that can be shared with smart devices or service providers.

There are four primary requirements. The CEC, large utilities and aggregators keep existing and future time-varying rates accurate in the machine-readable MIDAS database. Large utilities and aggregators develop a standard rate information access tool to support third-party services, develop and submit locational rates that change at least hourly to reflect marginal wholesale costs, and integrate information about new time-varying rates and automation technologies into customer education and outreach.

Who reads MIDAS?

Researchers and members of the public may register to query data. The CEC says users typically need programming skills and software.

Does the app need to know the standards?

It needs the signals the standards produce. The standards are why the rates are there.

The session, call by call

A product that reads MIDAS goes through a fixed sequence. The table gives each call, what MIDAS returns, what the product stores, what breaks if the call is skipped and who owns it on the team.

An eight step flow: register, verify, token, schema, lookup tables, RIN list, values and device.An eight step flow: register, verify, token, schema, lookup tables, RIN list, values and device.
Illustrative example. A sequence drawn for illustration; it carries no logo and no screenshot.
The MIDAS session, call by call
The callWhat MIDAS returnsWhat the product storesWhat breaks if it is skippedWho owns it
Register: a one-time call to the registration endpoint with the required parametersAn email to the address givenThe username and the account typeNo token can be requestedBackend engineer
Verify: answer the emailA verified User accountThe date of verificationThe token request is refusedBackend engineer
Token: call the token endpoint with username and passwordA token string that expires after 10 minutesNothing for long; it is replaced before each readReads fail after ten minutesBackend engineer
Schema: a GET to the ValueData endpoint with no parametersThe XML schema definitionA copy to validate againstData cannot be read with confidenceBackend engineer
Lookup tables: a ValueData call naming each tableUpload codes and descriptions for Country, Daytype, Distribution, Enduse, Energy, Location, Ratetype, Sector, State and TimeZoneA cache with a refresh dateCodes cannot be translated into labelsData engineer
RIN list: a ValueData call naming a signal typeThe active rate identification numbers for that signal typeThe list for each signal typeThe app cannot tell which rate belongs to which customerData engineer
Values: read each RIN, as the MIDAS documentation describesThe values for the rate or signalThe values and the time they were readThe scheduler has nothing to followData engineer
Device: schedule the runNot applicable.The schedule and a log of whyThe device runs at the wrong timeProduct lead
What an integration like this costsNot applicable.Not applicable.See the price section below.Not applicable.

Accounts and the ten minute token

There are two account types, LSE accounts and User accounts. A product team uses a User account, which can query data. Registration is one call to the registration endpoint, and the user must answer the email before asking for a token.

Lookup tables before rates

A call to ValueData with a lookup table parameter returns the upload codes stored in that table with a description of each. The ten tables are Country, Daytype, Distribution, Enduse, Energy, Location, Ratetype, Sector, State and TimeZone. Loading them first lets the app turn codes into words.

Three signals in one RIN list

A call with a signal type returns the active RIN lists. Type 0 returns all, 1 returns electricity rates, 2 returns greenhouse gas emissions and 3 returns California ISO FlexAlerts.

Signal types in a RIN list call
Signal typeWhat it returnsWhat the product does with it
0AllA full inventory, useful when the app is first set up
1Electricity ratesSchedules a device around cost
2Greenhouse gas emissionsSchedules a device around cleaner hours
3California ISO FlexAlertShows an alert and applies agreed actions
  • Register once and keep the account.
  • Request a token before every read.
  • Cache the schema and the lookup tables with a refresh date.
  • Keep one RIN list per signal type.

Integration budgets, as published

An integration like this is a back end, a small data layer, a customer-facing app and testing. The market figures below cover software work of that kind. Progression quotes software work after a written scope, and pricing depends on scope and is set in the written proposal.

published US price bands (market figures, not a Progression rate card).
Type of workTypical low to published high
Software integration or internal tool$30,000 to $100,000
SaaS MVP$30,000 to $150,000
Mid complexity app$60,000 to $150,000
US agency or contract bill rate$100 to $200 an hour
published US price bands (market figures, not a Progression rate card).published US price bands (market figures, not a Progression rate card).
Range bars for four software price bands from typical low to published high.

Our API development page covers integrations more broadly, and our energy software development page covers the sector.

Twelve aggregators, five utilities and a 700 GWh line

The Load Management Standards page lists who must provide rates. The large investor-owned utilities are Pacific Gas and Electric, San Diego Gas and Electric and Southern California Edison. The large publicly owned utilities are the Los Angeles Department of Water and Power and the Sacramento Municipal Utility District.

Who the CEC lists as large utilities and aggregators
KindNamed on the CEC’s page
Large investor-owned utilitiesPacific Gas and Electric, San Diego Gas and Electric, Southern California Edison
Large publicly owned utilitiesLos Angeles Department of Water and Power, Sacramento Municipal Utility District
Large community choice aggregatorsCentral Coast Community Energy, CleanPowerSF, Clean Power Alliance of Southern California, East Bay Community Energy, Marin Clean Energy, Peninsula Clean Energy Authority, Pioneer Community Energy, San Diego Community Power, San Jose Clean Energy, Silicon Valley Clean Energy Authority, Sonoma Clean Power Authority, Valley Clean Energy
Any other aggregatorAny community choice aggregator that provides more than 700 GWh of electricity to customers in a calendar year

A software development company in California building for these customers maps each customer to the utility or aggregator that serves them before it asks for a RIN. The mapping is a data question the customer answers, and the CEC’s list says only who is covered.

  • Ask the customer for their utility or aggregator.
  • Store the answer with the date it was given.
  • Match the answer to the CEC’s list before asking for a RIN.
  • Handle an aggregator that is not on the list as a separate case.

San Jose Clean Energy and Silicon Valley Clean Energy Authority in MIDAS

Both San Jose Clean Energy and the Silicon Valley Clean Energy Authority are on the CEC’s list. A software company in San Jose testing against those two finds their rates in the same database as Pacific Gas and Electric’s.

That means one integration, not two. The app reads a RIN list for each signal type and picks the entries for the supplier the customer names. This page makes no claim about which customers either aggregator serves.

  • Test against more than one supplier from the start.
  • Keep the supplier as a setting, not a constant.
  • Compare RIN lists across suppliers before launch.
  • Do not hard code any supplier’s identifiers.

Which devices does the product control?Tell us which devices your product controls and which customers it serves. You get a free proposal from a software company in California with the MIDAS session mapped call by call.

Get a free proposal

An Irvine software company and Southern California Edison

Southern California Edison and the Clean Power Alliance of Southern California are both named on the list. Plain advice for a software company in Irvine: test the customer-to-supplier mapping before any schedule logic.

A schedule that follows the wrong supplier’s rates is worse than none. The mapping screen belongs early in onboarding, with a plain question and an easy way to change the answer. The page claims no service area beyond what the CEC lists.

What if a customer does not know the supplier?

The app should explain where the name is found, and hold the schedule until it is set.

  • Put the supplier question early in onboarding.
  • Offer a way to change the answer later.
  • Hold the schedule until the supplier is set.
  • Log every change of supplier.

Upload rights stay with the utilities

Only CEC-verified utility and aggregator personnel can upload data, using an LSE account. User accounts can only query. Populating the RateInfo and Value tables requires the XML schema and is available to verified LSE accounts.

A California software company builds features around reading and never writes. A product team never builds a feature that depends on writing to MIDAS. A utility that wants access emails the MIDAS team with verification that it represents the utility it claims.

Can a product ever write to MIDAS?

Not with a User account. Writing is for verified utility and aggregator accounts, and a product team has no reason to ask for it.

  • Build for query access only.
  • Treat the schema as a read-only reference.
  • Leave upload work to the utilities.
  • Send access questions to the CEC.

Greenhouse gas signals beside the price

Signal type 2 returns greenhouse gas emissions. Plain advice: let the customer choose cheapest, cleanest or a blend, and show which one the device followed.

A four step timeline of a hypothetical day: idle overnight, running in the cheaper hours, applying agreed actions on an alert and a log in the evening.A four step timeline of a hypothetical day: idle overnight, running in the cheaper hours, applying agreed actions on an alert and a log in the evening.
Illustrative example. A hypothetical day with no rate figures.

A device that follows price alone and a device that follows emissions will schedule differently. The customer should see the choice, not discover it later. The opt-in screen carries the choice and the override.

  • Offer cheapest, cleanest or a blend.
  • Show which choice the device followed.
  • Keep an override for the customer.
  • Log the choice with each schedule.

When a FlexAlert arrives

Signal type 3 returns California ISO FlexAlerts. The app shows the alert, applies only the actions the customer agreed to, and logs what it did.

The page makes no claim about what a FlexAlert asks of customers beyond its name. The customer’s agreement is what the app follows. A device that acts without agreement is a support call waiting to happen.

What does the app log on an alert?

The alert, the time, the actions taken and the customer’s settings at that moment.

  • Show the alert in the app.
  • Apply only agreed actions.
  • Log the time and the actions.
  • Let the customer review the log.

Before the first scheduled run

Eight checks cover the session and the schedule. Run them on a test account before any customer’s device is touched.

A drawn card with eight rows: account, token, schema, lookup tables, customer, RIN list, opt-in and log. A closing line reads eight checks, then the first scheduled run.A drawn card with eight rows: account, token, schema, lookup tables, customer, RIN list, opt-in and log. A closing line reads eight checks, then the first scheduled run.
Illustrative example. A hypothetical eight line check before the first scheduled run.

Our energy software development page covers the wider sector. For a project in the south of the state, see software development company in Los Angeles.

Who runs the checks?

An engineer who did not write the scheduler, with the CEC’s MIDAS page open beside the code.

10 min: Token life. How long a MIDAS token lasts before it expires.
10: Lookup tables. Country, Daytype, Distribution, Enduse, Energy, Location, Ratetype, Sector, State and TimeZone.
4: Signal types. All, electricity rates, greenhouse gas emissions and FlexAlerts.
5: Utilities. Three investor-owned and two publicly owned, as the CEC lists them.
12: Aggregators. The community choice aggregators the CEC names.
700 GWh: A year. The line above which any other aggregator is also covered.

A team that builds on MIDAS should keep these six numbers on one page, so the whole team can see them without reading the CEC’s pages.

Frequently asked questions

What does a software company in California build on MIDAS?
Products that read time-varying rates, greenhouse gas signals and FlexAlerts and schedule a device around them.
What does the MIDAS database hold?
The CEC’s Market Informed Demand Automation Server, available since August 25, 2021, and the principal tool behind the Load Management Standards.
Which utilities have to load rates into MIDAS?
Pacific Gas and Electric, San Diego Gas and Electric, Southern California Edison, the Los Angeles Department of Water and Power, the Sacramento Municipal Utility District, the large aggregators the CEC lists, and any aggregator over 700 GWh a year.
Can our app write data to MIDAS?
No. Only CEC-verified utility and aggregator personnel upload with LSE accounts, and User accounts only query.
How many minutes does a MIDAS token stay valid?
Ten minutes, so request one before each read.
Which lookup tables does MIDAS publish?
Country, Daytype, Distribution, Enduse, Energy, Location, Ratetype, Sector, State and TimeZone.
Does a software company in San Jose need anything different for local customers?
No separate system. San Jose Clean Energy and Silicon Valley Clean Energy Authority are on the CEC’s list, so their rates sit in MIDAS too.
Can a software company in Irvine build for Southern California Edison customers?
The CEC lists Southern California Edison and Clean Power Alliance of Southern California, so their rates are in MIDAS. The app maps each customer to a supplier before it schedules anything.
What does a software development company in California need before writing MIDAS code?
A registered and verified account and programming skills, as the CEC’s page says. Then the schema and the lookup tables.
What would a MIDAS integration cost to build?
Published US price bands run from $30,000 to $100,000 for an integration to $30,000 to $150,000 for an MVP. Progression quotes software after a written scope, and pricing depends on scope.
Will Progression’s engineers meet our California team in person?
Yes, on request. The team is based in New York and builds for California product teams remotely.
How does an app obtain a MIDAS token?
Call the token endpoint with a username and password. The token it returns expires after 10 minutes.
How do I get the XML schema?
Call the ValueData endpoint with a GET and no parameters.
What do the signal types mean?
0 returns all, 1 electricity rates, 2 greenhouse gas emissions and 3 California ISO FlexAlerts.
What does RIN stand for in a MIDAS call?
A rate identification number. A call with a signal type returns the active RIN lists.
Who can register?
Researchers and members of the public may register to query data.
How does a utility get upload access?
It registers, answers the email, then emails the MIDAS team at the CEC with verification that it represents the utility.
Does the page quote any rates?
No. Rates come from MIDAS itself, and the page makes no claim about any customer’s bill.
Who answers questions about the Load Management Standards?
To the California Energy Commission.
Should the app let customers override a schedule?
Yes. The customer opts in, and an override keeps them in control.

Which devices does the product control?Tell us which devices your product controls and which customers it serves. You get a free proposal from a software company in California with the MIDAS session mapped call by call.

Get a free proposal

Get a free marketing proposal

Tell us what you are trying to grow and we will come back with a plan, not a pitch deck. Same-day reply on weekdays.

Privacy Preferences
When you visit our website, it may store information through your browser from specific services, usually in form of cookies. Here you can change your privacy preferences. Please note that blocking some types of cookies may impact your experience on our website and the services we offer.
Contact Us