Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
November 21, 2023 17:13
February 9, 2020 21:36
February 12, 2021 08:59
September 26, 2023 15:53
December 4, 2023 22:11
February 5, 2020 17:57
September 16, 2021 08:18
February 26, 2021 21:30
July 12, 2022 15:07
February 5, 2020 17:57
November 7, 2023 12:20
May 18, 2021 18:18

REopt® API

The REopt® model in this repository is a free, open-source, development version of the REopt API. A production version of the REopt API lies behind the REopt Web Tool.

The REopt API provides concurrent, multiple technology integration and optimization capabilities to help organizations meet their cost savings, energy performance, resilience, and emissions reduction goals. Formulated as a mixed integer linear program, the REopt model recommends an optimally sized mix of renewable energy, conventional generation, and energy storage technologies; estimates the net present value of implementing those technologies; and provides a dispatch strategy for operating the technology mix at maximum economic efficiency. A list of the REopt model capabilities is provided here. Example projects using REopt can be viewed here.

Should I be using or modifying the REopt API or the REopt Julia Package?

The REopt Julia package will soon become the backend of the REopt API. That means that the optimization model will be contained in REopt.jl, and that a user could supply the same inputs to the API and Julia package and get the same results. So which should you use?

1. When and how to use the REopt Julia package:

  • You want to be able to use the REopt model without incorporating an API call (and associated rate limits).
  • You want slightly more flexibility in how you interact with model inputs, optimization parameters, and run types.
  • You can install an optimization solver for use with REopt.
  • You do not need your results saved in an external database.
  • How do I use the REopt Julia package?: see instructions here.

2. When and how to modify the REopt Julia package:

  • You want to make changes to the REopt model beyond modifying input values (e.g., add a new technology).
  • You want to suggest a bug fix in the REopt model.
  • How do I modify the REopt Julia package?: get the (free, open-source) model here and see additional instructions here.

3. When and how to use the REopt_API:

  • You do not want to modify the code or host the API on your own server.
  • You do not want to install or use your own optimization solver (simply POSTing to the REopt API does not require a solver, whereas using the Julia package does).
  • You want to be able to access or share results saved in a database using a runuuid.
  • How do I use the REopt API?: you can access our production version of the API via the NREL Developer Network. You can view examples of using the API in the REopt-Analysis-Scripts Repo.

4. When and how to modify the REopt_API:

  • You have made changes to the REopt Julia package that include modified inputs or outputs, and want to reflect those in the REopt API.
  • You want to suggest a bug fix in the REopt API or add or modify validation or API endpoints.
  • You want to host the API on your own servers.
  • How do I modify the REopt API?: See this repo's Wiki for detailed instructions on installing and developing the API. Also, our contributing guidelines provide guidelines for suggesting improvements, creating pull requests, and more.