# Aurora API Documentation > Documentation for Aurora API ## Guides - [Create a project and a deeplink to it](https://docs.aurorasolar.com/docs/create-a-project-and-a-deeplink-to-it.md) - [Retrieve AHJ name](https://docs.aurorasolar.com/docs/retrieve-ahj-name.md) - [Be notified when projects are sold](https://docs.aurorasolar.com/docs/be-notified-when-projects-are-sold.md) - [Request a roof model built](https://docs.aurorasolar.com/docs/request-a-roof-model-built.md) - [Create a 3D roof model for testing](https://docs.aurorasolar.com/docs/create-a-3d-roof-model-for-testing.md) - [Retrieve roof measurements](https://docs.aurorasolar.com/docs/retrieve-roof-measurements.md) - [Retrieve design summary](https://docs.aurorasolar.com/docs/retrieve-design-summary.md) - [Retrieve auto-saved design screenshot](https://docs.aurorasolar.com/docs/retrieve-auto-saved-design-screenshot.md) - [Retrieve manually saved design screenshot or DXF](https://docs.aurorasolar.com/docs/retrieve-design-screenshot-or-dxf.md) - [Retrieve Web Proposal URL](https://docs.aurorasolar.com/docs/retrieve-web-proposal-url.md) - [Retrieve racking bill of materials](https://docs.aurorasolar.com/docs/retrieve-racking-bill-of-materials.md) - [Synchronize design pricing](https://docs.aurorasolar.com/docs/synchronize-design-pricing.md) - [Track plan set requests](https://docs.aurorasolar.com/docs/track-plan-set-requests.md) - [Move to bearer token authentication](https://docs.aurorasolar.com/docs/move-to-bearer-token-authentication.md) - [Configure single sign-on](https://docs.aurorasolar.com/docs/configure-single-sign-on.md) ## API Reference - [Aurora Solar API](https://docs.aurorasolar.com/reference/aurora-solar-api.md) - [Authentication](https://docs.aurorasolar.com/reference/authentication.md) - [HTTP Response Codes](https://docs.aurorasolar.com/reference/http-response-codes.md) - [Rate Limits](https://docs.aurorasolar.com/reference/rate-limits.md) - [Credits](https://docs.aurorasolar.com/reference/credits.md) - [Versioning](https://docs.aurorasolar.com/reference/versioning.md) - [Trying the API](https://docs.aurorasolar.com/reference/trying-the-api.md) - [Key Terms](https://docs.aurorasolar.com/reference/key-terms.md) - [Common Workflows](https://docs.aurorasolar.com/reference/common-workflows.md) - [Entity Hierarchy](https://docs.aurorasolar.com/reference/entity-hierarchy.md) - [Feature Availability](https://docs.aurorasolar.com/reference/feature-availability.md) - [Tenants](https://docs.aurorasolar.com/reference/tenants.md) - [Retrieve Tenant](https://docs.aurorasolar.com/reference/retrievetenant.md): Returns metadata about your tenant. - [Versions](https://docs.aurorasolar.com/reference/versions.md) - [Retrieve Versions](https://docs.aurorasolar.com/reference/listversions.md): Returns current, latest, and rollback versions associated with this bearer token. - [Upgrade Version](https://docs.aurorasolar.com/reference/upgradeversion.md): Upgrade your API Version to the latest API Version. --- [block:callout] { "type": "warning", "body": "This endpoint can break your Aurora Integration. Please ensure you are prepared to handle any changes from your current API Version to the latest API Version." } [/block] The API Version for your Bearer Token will be upgraded to the latest API Version. Your rollback version will be set to your previous API version, and will be available for rollback for the next 5 days (120 hours). - [Rollback Version](https://docs.aurorasolar.com/reference/rollbackversion.md): Rollback your API Version to your previous API Version. --- [block:callout] { "type": "warning", "body": "This endpoint can break your Aurora Integration. Please ensure you are prepared to rollback to your previous API version." } [/block] The API Version for your Bearer Token will be set to your rollback API Version. If you have already rolled back your API Version, or did not upgrade in the last 120 hours, this endpoint will result in an error. - [Users](https://docs.aurorasolar.com/reference/users.md) - [List Users](https://docs.aurorasolar.com/reference/listusers.md): Returns a list of users. --- Users are returned sorted in descending order based on creation date. - [Create User](https://docs.aurorasolar.com/reference/createuser.md): Create a new user using external SSO. --- User email has to be unique across the Aurora app. Please note that in contrast to the [Invite User](ref:inviteuser) endpoint this will not send the user an email to join the user. The created user account will hence not be able to set their password. Creating a user without inviting them is a required step if you are using SSO through OpenID connect to authenticate the users before accessing Aurora's application. This will allow your users to use Aurora without having to type in their username and password before doing so, but require you to run an OpenID Connect server (proving the Identity Provider functionality to Aurora). See [OpenID Connect specification](http://openid.net/developers/specs/) for more detail. Please note that certain identity providers such as SalesForce, represent their user and organization IDs differently in the UI compared to what is sent in actual API requests. If you are using SalesForce as the identity provider with the OpenID Connect standard, please specify the long 18 character user and organization IDs when creating a user. See [here](http://salesforce.stackexchange.com/questions/1653/what-are-salesforce-ids-composed-of) for instructions on how to convert a 15 character ID to an 18 character one. - [Invite User](https://docs.aurorasolar.com/reference/inviteuser.md): Invite a new user using email. --- Sends an invite email with instructions to the new user. You should call this endpoint over the [Create User](ref:createuser) endpoint if you are intending for users to use a regular password to authentication flow on the regular Aurora application. - [Retrieve User](https://docs.aurorasolar.com/reference/retrieveuser.md): Retrieve a user by ID. - [Update User](https://docs.aurorasolar.com/reference/updateuser.md): Update an existing user. - [Activate User](https://docs.aurorasolar.com/reference/activateuser.md): Change a user's status to `active`. --- Aurora App allows reusing emails of non-active users. If there is another user who is active and has the same email, this request will fail with reponse status of 422 (Unprocessable Entity) and appropriate error message. - [Deactivate User](https://docs.aurorasolar.com/reference/deactivateuser.md): Change a user's status to `deactivated`. --- This action will immediately log the deactivated user out of the Aurora App. For invited users, this also invalidates their invitation - [List Roles](https://docs.aurorasolar.com/reference/listroles.md): Returns a list of roles. --- Roles are returned sorted in ascending order with custom roles listed first if any exist, then ordered alphabetically by name. For more on custom roles, see our [Help Center](https://help.aurorasolar.com/hc/en-us/articles/11459813328787). - [Retrieve SSO Provider](https://docs.aurorasolar.com/reference/retrievessoprovider.md): Retrieve the provider for Single Sign-On --- For more on SSO, see [OpenID Connect specification](http://openid.net/developers/specs/) and our [tutorial](doc:configure-single-sign-on). - [Create SSO Provider](https://docs.aurorasolar.com/reference/createssoprovider.md): Setup the provider for Single Sign-On --- For more on SSO, see [OpenID Connect specification](http://openid.net/developers/specs/) and our [tutorial](doc:configure-single-sign-on). - [Update SSO Provider](https://docs.aurorasolar.com/reference/updatessoprovider.md): Update the provider for Single Sign-On --- For more on SSO, see [OpenID Connect specification](http://openid.net/developers/specs/) and our [tutorial](doc:configure-single-sign-on). - [Teams](https://docs.aurorasolar.com/reference/teams.md) - [List Teams](https://docs.aurorasolar.com/reference/get_tenants-tenant-id-teams.md): Returns a list of teams --- Teams are returned sorted in alphabetical order by name. - [Partners](https://docs.aurorasolar.com/reference/partners.md) - [List Partners](https://docs.aurorasolar.com/reference/listpartners.md): Returns a list of partners --- Partners are returned sorted alphabetically by name. - [Create Partner](https://docs.aurorasolar.com/reference/createpartner.md): Creates a new partner within the tenant. - [Retrieve Partner](https://docs.aurorasolar.com/reference/getpartner.md): Retrieves a single partner by ID. - [Update Partner](https://docs.aurorasolar.com/reference/updatepartner.md): Updates an existing partner. - [Add Users to Partner](https://docs.aurorasolar.com/reference/adduserstopartner.md): Adds one or more users to a partner. - [Update Partner Users](https://docs.aurorasolar.com/reference/updatepartnerusers.md): Sets the complete list of users for a partner. - [Upload Partner Logo](https://docs.aurorasolar.com/reference/uploadpartnerlogo.md): Uploads or replaces the logo image for a partner. The request body should contain the raw binary image data (not JSON). A Content-Disposition header is required to specify the filename. Accepted formats: JPG, JPEG, PNG, GIF, HEIC, WEBP. The image will be converted to WebP format. If the partner already has a logo, the previous logo will be replaced. - [Orders](https://docs.aurorasolar.com/reference/orders.md) - [Retrieve Order](https://docs.aurorasolar.com/reference/retrieveorder.md): Retrieve Order Details The response includes a `utility_bill_url` field containing a temporary download URL for the utility bill attached to the order, if one exists. This URL is valid for 12 hours. The field will be `null` if no utility bill is attached to the order. - [Update Order](https://docs.aurorasolar.com/reference/updateorder.md): Update Order Phase - [Decline Order](https://docs.aurorasolar.com/reference/declineorder.md): Decline an order - [Convert Order to Project](https://docs.aurorasolar.com/reference/createprojectfromorder.md): Create a Project from an Order. Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. - [Retrieve Convert Order to Project Status](https://docs.aurorasolar.com/reference/retrievecreateprojectstatus.md): Retrieve the status of a Convert Order to Project job. Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. You will need the job_id from the response body of a POST to the Convert Order to Project endpoint. - [List Orders](https://docs.aurorasolar.com/reference/listorders.md): Retrieve a list of orders for a tenant. Orders are returned sorted by time, with the newest orders first. Without the page and per_page parameters, the first 100 orders will be returned. If per_page is specified, a maximum of 250 orders will be returned. - [Mark Order Sold](https://docs.aurorasolar.com/reference/soldorder.md): Mark an order as sold. If `sale_date` is not provided, defaults to today's date (UTC). - [Projects](https://docs.aurorasolar.com/reference/projects.md) - [List Projects](https://docs.aurorasolar.com/reference/listprojects.md): Returns a list of projects. --- Projects are returned sorted in descending order based on the created-at time. Without the page and per_page parameters, the first 100 projects will be returned. If per_page is specified, a maximum of 250 projects will be returned. - [Create Project](https://docs.aurorasolar.com/reference/createproject.md): Create a new project. --- A project within Aurora contains important customer information such as the address, latitude/longitude. Aurora allows you to specify your primary key of a customer/client within Aurora's system under the field `external_provider_id`. This allows you to map your client/customer record to Aurora's project. The address and latitude/longitude coordinates on the Project are designed to be as consistent as possible. They represent the location of the project but not necessarily the specific building that should have the solar installation. You must pass in an address or latitude/longitude coordinates. Here are the different combinations for passing in an address and latitude/longitude coordinates: - If you only pass the address, we will calculate the latitude/longitude coordinates from that address. This latitude/longitude may or may not represent the actual building that should have the solar installation. - If you only pass latitude/longitude coordinates that fall within the property line, we will calculate the address from these coordinates. We set the customer address to this calculated address. - If you pass both the address and the latitude/longitude coordinates of the building that should have the solar installation, we will set them as passed in. - [Retrieve Project](https://docs.aurorasolar.com/reference/retrieveproject.md): Retrieve a project by ID. - [Update Project](https://docs.aurorasolar.com/reference/updateproject.md): Update an existing project. - [Delete Project](https://docs.aurorasolar.com/reference/deleteproject.md): Delete an existing project. - [List Project Assets](https://docs.aurorasolar.com/reference/listprojectassets.md): Returns a list of project assets. - [Create Project Asset](https://docs.aurorasolar.com/reference/createprojectasset.md): Create a project asset by uploading an image or document. --- A project can have a number of associated images or documents such as a picture of a meter, a roof, or other supporting material. An associated file can be a pdf, jpg, jpeg, png, gif, or webp file. Any other file formats will be rejected. The maximum size of an individual file is 15 MB. You may upload up to 100 assets per project. New assets will overwrite old assets with the same filename. - [Retrieve AHJ](https://docs.aurorasolar.com/reference/retrieveahj.md): Retrieve an Authority Having Jurisdiction (AHJ). --- AHJ information is determined through a project's property address according to the Census TIGER/Line Legal Boundary Shapefiles. - [Project Notes](https://docs.aurorasolar.com/reference/project-notes.md) - [Create Project Note](https://docs.aurorasolar.com/reference/createprojectnote.md): Creates the project note for the given project when one does not already exist. See [Project Notes](ref:project-notes). - [Retrieve Project Note](https://docs.aurorasolar.com/reference/retrieveprojectnote.md): Returns the project note for the given project. See [Project Notes](ref:project-notes). - [Update Project Note](https://docs.aurorasolar.com/reference/updateprojectnote.md): Updates the project note body for the given project. See [Project Notes](ref:project-notes). - [Retrieve Project Note Files](https://docs.aurorasolar.com/reference/retrieveprojectnotefiles.md): Lists files attached to the project note with short-lived download URLs (each URL is valid for 86400 seconds from issuance). See [Project Notes](ref:project-notes#note-files-vs-note-body). - [Consumption Profiles](https://docs.aurorasolar.com/reference/consumption-profiles.md) - [Retrieve Consumption Profile](https://docs.aurorasolar.com/reference/retrieveconsumptionprofile.md): Retrieve the consumption profile for a project. - [Update Consumption Profile](https://docs.aurorasolar.com/reference/updateconsumptionprofile.md): Update the existing consumption profile for a project. --- This request accepts *only one* of the following values for each request. - `monthly_energy`: An array of exactly 12 monthly energy values in kWh. Null values are allowed and represented as "null". - `monthly_bill`: An array of exactly 12 monthly bill values in USD. Null values are allowed and represented as "null". - `interval_data`: An array of exactly (8760, 8784, 17520, 17568, 35040, or 35136) energy values in kWh. Null values are allowed and represented as "null". - The array must contain at least 1 complete month of contiguous non-null values. - The first array value must correspond to the first interval of the year beginning at 1 January 00:00. - [Utility Bills](https://docs.aurorasolar.com/reference/utility-bills.md) - [Run Utility Bill Upload](https://docs.aurorasolar.com/reference/runutilitybillupload.md): Uploads a utility bill document for a project and starts an asynchronous OCR parse of its contents. The file upload itself is handled synchronously inside this endpoint, so a `utility_bill_id` is returned immediately along with the `job_id` for the parse step. The bill bytes are sent as a raw request body (not multipart/JSON), with the original filename carried in the `Content-Disposition` header. Accepted formats: PDF, JPG, JPEG, PNG, GIF, WEBP. --- **Last-parse-wins semantics.** Each completed parse replaces the consumption data derived from any previously parsed bill on the same project — only the most recently parsed bill feeds the project's load profile. Because parse jobs run asynchronously and are not strictly FIFO, an earlier upload that finishes parsing after a later upload will become the active bill. Older bill files persist in storage but no longer contribute to the project's consumption values. This matches the behavior of the in-app utility bill upload UI. Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. - [Retrieve Utility Bill Upload Status](https://docs.aurorasolar.com/reference/retrieveutilitybilluploadstatus.md): Retrieves the status of a utility bill upload + parse job. Use the `job_id` returned by the [Run Utility Bill Upload](ref:runutilitybillupload) endpoint. Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. - [List Utility Bills](https://docs.aurorasolar.com/reference/listutilitybills.md): Lists every utility bill uploaded to the project, newest first, with a fresh presigned `file_url` for each. The download URLs expire after 24 hours; re-call this endpoint (or [Retrieve Utility Bill](ref:retrieveutilitybill)) to refresh them. --- **Last-parse-wins semantics.** Only the most recently parsed bill feeds the project's load profile and consumption data. Older bills returned by this endpoint are historical artifacts — they remain in storage but are not currently being used by Aurora to compute consumption. This matches the in-app utility bill upload UI, which only ever displays the most recent upload. Because parse jobs run asynchronously and are not strictly FIFO, sort order (`created_at` descending) reflects upload time, not parse-completion time. Upload bills one at a time — wait for each [`utility_bill_upload_job_completed`](ref:utility-bill-upload-job-completed) webhook before starting the next upload — to keep the active bill predictable. - [Retrieve Utility Bill](https://docs.aurorasolar.com/reference/retrieveutilitybill.md): Retrieves a single utility bill from the project with a freshly-minted presigned `file_url`. The download URL expires after 24 hours; re-call this endpoint to refresh it. --- **Last-parse-wins semantics.** Only the most recently uploaded bill on the project feeds its load profile and consumption data. A bill returned by this endpoint that is not the most recent is a historical artifact — it remains in storage but is not currently being used by Aurora to compute consumption. - [Retrieve Project Bill Summary](https://docs.aurorasolar.com/reference/retrieveprojectbillsummary.md): Retrieve the estimated current bill summary for year 1 for the project. - [Retrieve Design Bill Summary](https://docs.aurorasolar.com/reference/retrievedesignbillsummary.md): Retrieve the estimated bill summary for year 1 for the design, incorporating its energy optimization products, PV system and storage. - [Design Requests](https://docs.aurorasolar.com/reference/design-requests.md) - [List Design Requests](https://docs.aurorasolar.com/reference/listdesignrequests.md): Returns a list of design requests. --- Design requests are returned sorted in descending order based on creation date. Without the page and per_page parameters, the most recent 100 design requests will be returned. You can also filter by status. - [Create Design Request](https://docs.aurorasolar.com/reference/createdesignrequest.md): Create a new design request. --- Use the latitude/longitude attributes to set the project marker on top of the building you would like modeled. If latitude/longitude are not explicitly provided in this request, the latitude/longitude values of the project will be used. However, the project latitude/longitude may not represent the building that should have the solar installation. - [Retrieve Design Request](https://docs.aurorasolar.com/reference/retrievedesignrequest.md): Retrieve a design request by ID. - [Accept Design Request](https://docs.aurorasolar.com/reference/acceptdesignrequest.md): Accept a design request. --- This action accepts the design request, which: - Advances the status of the design request to the final state `accepted`. - Generates a new design within the project that this design request references and store the generated 3D model of the site. - Adds the newly generated design's ID to this design request. - [Designs](https://docs.aurorasolar.com/reference/designs.md) - [List Designs](https://docs.aurorasolar.com/reference/listdesigns.md): Returns a list of designs. --- Designs are returned sorted in descending order based on creation date. - [Create Design](https://docs.aurorasolar.com/reference/createdesign.md): Create a new design for a project. --- The returned design ID allows you to create a deep link into the Aurora application. That way, you can direct users to a specific design within a specific project. Please note, a design must always belong to a project. Therefore the `project_id` must always be provided. - [Duplicate Design](https://docs.aurorasolar.com/reference/duplicatedesign.md): Duplicates an existing design. --- The duplicate design includes the 3D model, the PV system, storage, and pricing. It will also be in the same project as the original design. - [Retrieve Design](https://docs.aurorasolar.com/reference/retrievedesign.md): Retrieve a design - [Update Design](https://docs.aurorasolar.com/reference/updatedesign.md): Update a design's name and latest milestone. - [Retrieve Design Summary](https://docs.aurorasolar.com/reference/retrievedesignsummary.md): Retrieve the summary of a design. --- This action allows you to pass back Aurora design information into your own systems. You will likely call this endpoint after a user has modified a design within the Aurora application and intends to return back to the portal or primary application he/she originally came from (Salesforce, SugarCRM...). The design summary contains a field called 'arrays'. The contents of the field is a JSON string containing details of the solar system designed. Each array is a group of solar modules that have the same roof face, module model, azimuth, pitch, orientation (portrait vs. landscape), MLPE (module level power electronics, such as microinverter or dc-optimizer) and which connect to the same MPPT within a string inverter. Example: let's assume you have a house with a simple gable roof ('A'-roof), where one side is south-facing and the other north. Furthermore, let's assume that that you install a 8kW system consisting of 32 x 250 Watt modules. 8 of them on the north-facing roof and 24 of them on the south-facing roof connecting to two different inverters. There would be 2 arrays in the design summary, one with "face = 1" and the other with "face = 2". Please note that the "face" IDs are not guaranteed to reflect the same directionality (i.E. face 1 is not guaranteed to be South), instead they are a way of grouping arrays located on the same roof face. The "face" IDs are not included in the layout DXF files. Continuing the example above, connecting 8 of the 24 modules on the south-facing roof to microinverters, 8 to DC optimizers and stringing the remaining 8 to a central inverter would result in a total of 4 arrays in the design summary (one due to the roof face and 3 due to the usage of MLPE's and/or a central string inverter). - [Retrieve Roof Summary](https://docs.aurorasolar.com/reference/roofsummary.md): Retrieve summary of all roofs for a design. --- In Aurora, a roof is a set of roof faces within 1 square foot of each other. A roof's area is the sum of its roof face areas. Note that the pitch for a roof is only returned if all faces in the roof have the same pitch. Please note for simple roof faces in Aurora, roof edge types are not set automatically, and will need to be set manually when designing a roof. Roofs created with SmartRoof and AI Roof will automatically have edge types set. We determine the shape of each roof face using the following heuristics in the order listed: - Flat: roof with 2:12 slope (9.46 degrees) or less - Monopitch: roof with a single face with a pitch greater than 2:12 (9.46 degrees) - Hip: roof where the length of hip edges is greater than the length of rake edges - Gable: roof with at least one rake Units for all lengths and areas will be imperial or metric depending on the tenant setting in the Aurora app. [block:callout] { "type": "warning", "body": "Please note if your design's project has an accepted legacy EagleView Design Request, you will receive a 422 error when calling Retrieve Roof Summary." } [/block] - [List Racking Arrays](https://docs.aurorasolar.com/reference/rackingarrays.md): Retrieve a list of arrays of modules that will likely be mounted together. --- Each racking array is a group of adjacent solar modules that have the same mounting plane, module model, azimuth, pitch, rotation, tilt, and orientation (portrait vs. landscape). This is similar to the definition of array used in the [Design Summary](ref:retrievedesignsummary) endpoint, but electronics and stringing are not considered here. Modules are considered adjacent if the gap between them is less than a configurable distance (default 2.6cm) and they are aligned in a grid. If a module in one row or column is staggered so that it doesn't align with the grid from the preceding row or column, it will not be included in the same array even if the modules are touching. Arrays are not listed in a guaranteed order, but within each array, rows are listed in order starting closest to the ridge line. Modules in filler rows and those that are offset from the grid (to avoid obstructions or match the roof shape) will be grouped into separate arrays. When arrays are adjacent but not aligned on the same grid, their relationship is communicated by the `adjacent_arrays` field, which lists all arrays that are contiguous with the current array. That includes arrays that are adjacent to the current array as well any arrays that are adjacent to an adjacent array, forming a contiguous group. See below for an example. The list contains information about each array, including its position in the list of racking arrays and the relative distance between the arrays. Note that adjacent arrays must still share a roof face, rotation, tilt, and module model. [block:image] { "images": [ { "image": [ "https://aurorasolar-backend-docs.s3.amazonaws.com/images/racking_arrays_roof_screenshot.png", "racking_arrays_roof_screenshot.png", "Example design with 4 adjacent racking arrays" ], "align": "center", "caption": "Example design with 4 adjacent racking arrays" } ] } [/block] The example design above contains four arrays that are contiguous. The adjacent_arrays object for each array shows how it is related to the other contiguous arrays in the design, measured from the center of the leftmost module on the top row in each array: ```json { "racking_arrays": [ { "array_layout": [ "LL" ], "adjacent_arrays": [ { "idx": 1, "x": -12.08, "y": -4.64 }, { "idx": 2, "x": -18.40, "y": -10.19 }, { "idx": 3, "x": 4.55, "y": -10.19 } ], ... }, { "array_layout": [ "PPPPPPP" ], "adjacent_arrays": [ { "idx": 0, "x": 12.08, "y": 4.64 }, { "idx": 2, "x": -6.32, "y": -5.55 }, { "idx": 3, "x": 16.63, "y": -5.55 } ], ... }, { "array_layout": [ "PPPPP" ], "adjacent_arrays": [ { "idx": 0, "x": 18.40, "y": 10.19 }, { "idx": 1, "x": 6.32, "y": 5.55 }, { "idx": 3, "x": 22.96, "y": 0.0 } ], ... }, { "array_layout": [ "PPPP" ], "adjacent_arrays": [ { "idx": 0, "x": -4.55, "y": 10.19 }, { "idx": 1, "x": -16.63, "y": 5.55 }, { "idx": 2, "x": -22.96, "y": -0.0 } ], ... } ] } ``` Array 0, with landscape modules, is adjacent to array 1, the unbroken row of portrait modules. The distance from the leftmost module in array 0 to the leftmost module in array 1 is 12.08 feet to the left and 4.64 feet down. Array 1 is adjacent to all three of the other arrays; note that the x and y values relating array 1 to array 0 have the opposite signs to indicate that the module is to the right and up from this perspective. Array 0 is not directly adjacent to arrays 2 or 3, but because they are all contiguous, they are listed in adjacent_arrays for array 0 as well. Note that the distances between contiguous arrays may not be equal to the sum of the distances to intermediate arrays due to rounding. For example, the x distance between arrays 2 and 3 is 22.96 feet, which is not equal to 6.32 + 16.63 (the x distances between arrays 1 and 2 and arrays 1 and 3, respectively). - [Update Racking Bill of Materials](https://docs.aurorasolar.com/reference/updaterackingbillofmaterials.md): Update the racking portion of a design's bill of materials. --- Allows creating and overwriting of racking components on a design's bill of materials. - [Retrieve Web Proposal](https://docs.aurorasolar.com/reference/retrievewebproposal.md): Retrieve Web Proposal for a design. --- A Web Proposal is a customer facing proposal that can be given to homeowners to view proposals generated using Aurora Sales Mode. A Web Proposal is only accessible through a valid url which expires after a certain amount of time (To get more information on the Web Proposal expiration time, please contact your Aurora account team). A Web Proposal can only have a single non-expired url at a time. If a Web Proposal has not been created yet then the url will be `"null"` & expired will be `"false"`. - [Generate Web Proposal URL](https://docs.aurorasolar.com/reference/generatewebproposalurl.md): Generates a new Web Proposal URL for a design. --- Generates a new non-expired url for the Web Proposal (To get more information on the Web Proposal expiration time, please contact your Aurora account team). [block:callout] { "type": "warning", "body": "This will immediately expire any previously generated Web Proposal url, even if the previous Web Proposal url wasn't expired. A Web Proposal can only have a single non-expired url at a time." } [/block] - [Run Proposal PDF Generation](https://docs.aurorasolar.com/reference/runproposalpdfgeneration.md): Run a proposal pdf generation job on a design. --- Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. - [Retrieve Proposal PDF Generation](https://docs.aurorasolar.com/reference/statusproposalpdfgeneration.md): Retrieve a proposal pdf generation job on a design. --- You will need the job_id from the response body of a POST to the [Run Proposal PDF Generation](ref:runproposalpdfgeneration) endpoint, or from the parameters of a `proposal_pdf_generation_job_completed` webhook call. Note that the webhook fires for both jobs initiated from the API and from the UI. - [Retrieve System Loss Settings](https://docs.aurorasolar.com/reference/retrievedesignsystemlosssettings.md): Retrieve the editable per-design system-loss settings: the input derate percentages and their lock state. --- These are the **editable inputs** to the performance simulation. They are distinct from the computed loss waterfall returned under `energy_production.loss_summary` by the [Design Summary](ref:retrievedesignsummary) endpoint, which reports the irradiance/energy remaining after each stage. Each editable setting maps to exactly one `loss_summary` stage — see the mapping table on [Update System Loss Settings](ref:updatedesignsystemlosssettings). Values are percentages (e.g. `2.0` represents a 2% loss). Only annual values are supported. - [Update System Loss Settings](https://docs.aurorasolar.com/reference/updatedesignsystemlosssettings.md): Update the editable per-design system-loss settings. --- The request body is a flat map of loss name to percentage. Only the losses you supply are updated; all others are left unchanged (partial update). Values are percentages between 0 and 100, accepted to one decimal place. Updating system losses **invalidates** the design's performance simulation. This endpoint does **not** re-run the simulation — run it separately to recompute production. Until then, `energy_production.up_to_date` on the [Design Summary](ref:retrievedesignsummary) will be `false`. ### Locks Some losses cannot be edited and a request to change them is rejected with `422`: - **Financing lock** — when a financing product is selected for the design, that product dictates every loss. The whole update is rejected. This is reflected on read as `editable: false` / `locked_by_financier: ""`, with every field `locked: true` and `disabled_reason: "financier"`. - **Shading-engine lock** — when the shading engine is enabled, the `shading` loss is computed automatically and cannot be set manually. A request including `shading` is rejected, and on read that field is `locked: true` with `disabled_reason: "shading_engine_enabled"`. ### Mapping to loss_summary stages Each editable setting affects exactly one `loss_summary` output stage on the Design Summary: | Setting | `loss_summary` stage (`name`) | | --- | --- | | `soiling` | `irradiance_after_soiling_loss` | | `snow` | `irradiance_after_snow_loss` | | `shading` | `irradiance_after_shade_loss` | | `mismatch` | `energy_after_mismatch_loss` | | `connections` | `energy_after_connections_loss` | | `wiring` | `energy_after_dc_wiring_loss` | | `light_induced_degradation` | `energy_after_lid_loss` | | `availability` | `energy_after_availability_loss` | | `age` | `energy_after_age_loss` | | `rating` | `energy_after_nameplate_loss` | | `other` | `energy_after_other_loss` | The remaining `loss_summary` stages are engine-computed and have no editable input. - [Design Assets](https://docs.aurorasolar.com/reference/design-assets.md) - [List Design Assets](https://docs.aurorasolar.com/reference/listdesignassets.md): Retrieve the design assets for a design. --- Design Assets are returned sorted in descending order based on the taken_at timestamp. Only design assets that are ready for download will be listed (i.e. design assets whose upload are still in progress will be omitted) - [Create Design Asset](https://docs.aurorasolar.com/reference/createdesignasset.md): Create a new asset for a design. --- A design can have a number of images or documents such as installation instructions, data sheets or other supporting materials. An associated file can be a pdf, jpg, jpeg, png, gif, or webp file. Any other file formats will be rejected. The maximum size of an individual file is 25 MB. You may upload up to 20 assets per design. New assets will overwrite old assets with the same name and asset type, and new Racking Bill of Materials will always overwrite pre-existing ones, as only 1 is allowed per design. - [Retrieve Design Asset](https://docs.aurorasolar.com/reference/retrievedesignasset.md): Retrieve a design asset by ID. --- Only design assets that are ready for download will be returned (i.e. design assets whose upload are still in progress will return 404) - [AI Roof](https://docs.aurorasolar.com/reference/ai-roof.md) - [Run AI Roof](https://docs.aurorasolar.com/reference/runairoof.md): Generate a roof model for a design. --- Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. - [Retrieve AI Roof Status](https://docs.aurorasolar.com/reference/retrieveairoofstatus.md): Check the status of an AI Roof job. - [Components](https://docs.aurorasolar.com/reference/components.md) - [List Modules](https://docs.aurorasolar.com/reference/listmodules.md): List modules that are enabled for a tenant - [Retrieve Module](https://docs.aurorasolar.com/reference/retrievemodule.md): Retrieve details on a module - [List Inverters](https://docs.aurorasolar.com/reference/listinverters.md): List inverters that are enabled for a tenant - [Retrieve Inverter](https://docs.aurorasolar.com/reference/retrieveinverters.md): Retrieve details of an inverter - [List DC Optimizers](https://docs.aurorasolar.com/reference/listdcoptimizers.md): List DC optimizers that are enabled for a tenant - [Retrieve DC Optimizer](https://docs.aurorasolar.com/reference/retrievedcoptimizer.md): Retrieve details on a DC optimizer - [Pricing](https://docs.aurorasolar.com/reference/pricing.md) - [Retrieve Design Pricing](https://docs.aurorasolar.com/reference/retrievedesignpricing.md): Retrieve the pricing of a design. - [Update Design Pricing](https://docs.aurorasolar.com/reference/updatedesignpricing.md): Update pricing for an existing design. - [Create Adder](https://docs.aurorasolar.com/reference/createadder.md): Create a new adder or discount having a monetary value. - [Delete Adder](https://docs.aurorasolar.com/reference/deleteadder.md): Delete an adder by ID. - [Financings](https://docs.aurorasolar.com/reference/financings.md) - [List Financings](https://docs.aurorasolar.com/reference/listfinancings.md): Returns a list of financings for a design. --- Financings are returned sorted in descending order based on creation date. - [Retrieve Financing](https://docs.aurorasolar.com/reference/retrievefinancing.md): Retrieve a financing by its ID. - [Push Financing to Financier](https://docs.aurorasolar.com/reference/pushfinancingtofinancier.md): Push the current state of a financing to a financier. Currently only some Mosaic products are supported for which this will create an Estimate object in Mosaic. This is a one-way operation and the financing will not be updated with any changes made in Mosaic. The returned financing will contain the Estimate ID. - [Proposals](https://docs.aurorasolar.com/reference/proposals.md) - [List Proposal Templates](https://docs.aurorasolar.com/reference/listproposaltemplates.md): Returns a list of proposal templates --- The default proposal template will be the first template in the list followed by the rest in descending order based on enabled status and creation date. - [Retrieve Proposal Template](https://docs.aurorasolar.com/reference/retrieveproposaltemplate.md): Returns a proposal template - [Retrieve Proposal](https://docs.aurorasolar.com/reference/retrieveproposal.md): Retrieve the proposal for a given design. --- This action allows you to retrieve the details of the proposal for a given design. - [Create Proposal](https://docs.aurorasolar.com/reference/createproposal.md): Creates a proposal for a design based on a proposal template provided. --- [block:callout] { "type": "warning", "body": "If you are creating a proposal for a Partner-owned project, please ensure the proposal template used is assigned to that Partner." } [/block] [block:callout] { "type": "warning", "body": "Please ensure the proposal template you're using to create a proposal has been enabled." } [/block] If a proposal template id is not provided, the proposal will be created from the default proposal template specified by the Administrator or Partner. - [Delete Proposal](https://docs.aurorasolar.com/reference/deletedefaultproposal.md): Deletes a design's proposal. - [Agreements](https://docs.aurorasolar.com/reference/agreements.md) - [List Agreements](https://docs.aurorasolar.com/reference/listagreements.md): Returns a list of agreements for a project. Agreements are returned sorted in descending order based on creation date. Each item includes a `signing_provider` field indicating whether the agreement is backed by `docusign` or `dropbox_sign`. - [Retrieve Agreement](https://docs.aurorasolar.com/reference/getagreement.md): Retrieve an agreement by ID. Returns either an agreement backed by Docusign or Dropbox Sign. The `signing_provider` field in the response indicates which provider the agreement is backed by. - [Retrieve Agreement Link](https://docs.aurorasolar.com/reference/getagreementdownloadlink.md): Retrieves a download link and expiry time for a signed legacy agreement backed by Dropbox Sign. The link expires 72 hours after generation. This endpoint is rate-limited to 5 requests a minute. For Docusign agreements, use the [Run Agreement Download URL Generation](ref:runagreementdownloadurlgeneration) endpoint instead. - [Run Agreement Download URL Generation](https://docs.aurorasolar.com/reference/runagreementdownloadurlgeneration.md): Initiates async generation of a download URL for a Docusign agreement. Only applicable to agreements with `signing_provider: "docusign"`. The agreement must have a status of `signed`. Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. - [Retrieve Agreement Download URL](https://docs.aurorasolar.com/reference/getagreementdownloadurl.md): Retrieves the status of an agreement download URL generation job. --- You will need the `job_id` from the response body of a POST to the [Run Agreement Download URL Generation](ref:runagreementdownloadurlgeneration) endpoint, or from the parameters of a `agreement_download_url_job_completed` webhook call. When the job succeeds, the response includes a `file_url` for downloading the PDF. The URL expires 15 minutes after generation. - [Site Surveys](https://docs.aurorasolar.com/reference/site-surveys.md) - [List Site Surveys](https://docs.aurorasolar.com/reference/listsitesurveys.md): Returns a list of site surveys for the project. --- [block:callout] { "type": "warning", "body": "Please note that the Site Surveys API is in beta. As a beta product, the API will not be supported via our normal support channels. You may also experience some gaps and changes as the product is refined and documentation is updated before general release." } [/block] - [Create Site Survey](https://docs.aurorasolar.com/reference/createsitesurvey.md): Create a new site survey. --- [block:callout] { "type": "warning", "body": "Please note that the Site Surveys API is in beta. As a beta product, the API will not be supported via our normal support channels. You may also experience some gaps and changes as the product is refined and documentation is updated before general release." } [/block] - [Retrieve Site Survey Request](https://docs.aurorasolar.com/reference/getsitesurveyrequest.md): Returns a site survey request. --- [block:callout] { "type": "warning", "body": "Please note that the Site Surveys API is in beta. As a beta product, the API will not be supported via our normal support channels. You may also experience some gaps and changes as the product is refined and documentation is updated before general release." } [/block] - [Retrieve Site Survey](https://docs.aurorasolar.com/reference/getsitesurvey.md): Returns a site survey. --- [block:callout] { "type": "warning", "body": "Please note that the Site Surveys API is in beta. As a beta product, the API will not be supported via our normal support channels. You may also experience some gaps and changes as the product is refined and documentation is updated before general release." } [/block] - [Update Site Survey Overview](https://docs.aurorasolar.com/reference/updatesitesurvey.md): Updates the overview of a site survey. --- [block:callout] { "type": "warning", "body": "Please note that the Site Surveys API is in beta. As a beta product, the API will not be supported via our normal support channels. You may also experience some gaps and changes as the product is refined and documentation is updated before general release." } [/block] This endpoint is used to update metadata and overview attributes on a site survey. Currently the only allowed overview field is `notes`. To update other site survey attribtues, see: - [Update Site Survey Electrical Data](ref:updatesitesurveyelectricaldata) - [Update Site Survey Electrical Subpanels](ref:updatesitesurveyelectricalsubpanels) - [Update Site Survey Mounting Planes](ref:updatesitesurveymountingplanes) - [Update Site Survey Status](ref:updatesitesurveystatus) - [Update Site Survey Electrical Data](https://docs.aurorasolar.com/reference/updatesitesurveyelectricaldata.md): Updates electrical data on a site survey. --- [block:callout] { "type": "warning", "body": "Please note that the Site Surveys API is in beta. As a beta product, the API will not be supported via our normal support channels. You may also experience some gaps and changes as the product is refined and documentation is updated before general release." } [/block] - [Update Site Survey Electrical Subpanels](https://docs.aurorasolar.com/reference/updatesitesurveyelectricalsubpanels.md): Update the list of supbpanels for a site survey. This will replace any previously uploaded subpanel data. --- [block:callout] { "type": "warning", "body": "Please note that the Site Surveys API is in beta. As a beta product, the API will not be supported via our normal support channels. You may also experience some gaps and changes as the product is refined and documentation is updated before general release." } [/block] - [Update Site Survey Mounting Planes](https://docs.aurorasolar.com/reference/updatesitesurveymountingplanes.md): Updates mounting planes for a site survey. This will replace any previously uploaded mounting plane data. --- [block:callout] { "type": "warning", "body": "Please note that the Site Surveys API is in beta. As a beta product, the API will not be supported via our normal support channels. You may also experience some gaps and changes as the product is refined and documentation is updated before general release." } [/block] - [Update Site Survey Status](https://docs.aurorasolar.com/reference/updatesitesurveystatus.md): Updates status for a site survey. --- [block:callout] { "type": "warning", "body": "Please note that the Site Surveys API is in beta. As a beta product, the API will not be supported via our normal support channels. You may also experience some gaps and changes as the product is refined and documentation is updated before general release." } [/block] This endpoint is used to transition a site survey from one status to another, and validates conditions for that transition. Currently the only allowed status transition is from `in-progress` to `completed`, with the follow validations: - `electrical.main_panel_location` is filled out. - `electrical.main_bus_rating` is filled out. - `electrical.main_breaker_rating` is filled out. - For each mounting plane in `roofs.mounting_plane`: - `pitch` is filled out. - `azimuth` is filled out. - `roof_type` is filled out. - `framing_type` is filled out. - `rafter_size` is filled out. - `rafter_spacing` is filled out. - [Plan Sets](https://docs.aurorasolar.com/reference/plan-sets.md) - [Create Plan Set Request](https://docs.aurorasolar.com/reference/createplansetrequest.md): Create a new plan set request. --- [block:callout] { "type": "warning", "body": "Please note that the Plan Set Requests API is in limited release at this time, and is subject to change. If you are interested in accessing this API, please contact your Aurora account team." } [/block] A plan set request contains information about a project necessary for Aurora to create a plan set document. Creating a new plan set request requires the following: - The id of a design that is ready to install. The design must include modules, and will be more accurate if the stringing and components are already present. - The project that the design is associated with must have at least one image or document uploaded to the project as a project asset (see [Create Project Asset](ref:createprojectasset)). All new plan set requests are created in `draft` status. See [Plan Sets](ref:plan-sets) for additional information on statuses. - [Retrieve Plan Set Request](https://docs.aurorasolar.com/reference/retrieveplansetrequest.md): Retrieve a plan set request. --- [block:callout] { "type": "warning", "body": "Please note that the Plan Set Requests API is in limited release at this time, and is subject to change. If you are interested in accessing this API, please contact your Aurora account team." } [/block] - [Retrieve Plan Set](https://docs.aurorasolar.com/reference/retrieveplanset.md): Retrieve documents for a plan set request. --- [block:callout] { "type": "warning", "body": "Please note that the Plan Set Requests API is in limited release at this time, and is subject to change. If you are interested in accessing this API, please contact your Aurora account team." } [/block] Once a plan set request is completed, this will return a link to the CAD view of the project and a link to the completed plan set PDF. - [Webhooks](https://docs.aurorasolar.com/reference/webhooks.md) - [Create Webhook](https://docs.aurorasolar.com/reference/createwebhook.md): Create a new webhook. - [List Webhooks](https://docs.aurorasolar.com/reference/listwebhooks.md): Returns a list of webhooks --- Webhooks are returned sorted in descending order based on creation date. - [Retrieve Webhook](https://docs.aurorasolar.com/reference/showwebhook.md): Retrieve a webhook by ID - [Update Webhook](https://docs.aurorasolar.com/reference/updatewebhook.md): Update properties of a single webhook. - [Delete Webhook](https://docs.aurorasolar.com/reference/deletewebhook.md): Delete a Webhook by ID - [List Shared Projects](https://docs.aurorasolar.com/reference/listsharedprojects.md): Returns a paginated list of projects shared with the current tenant. --- Projects are sorted in descending order based on when they were shared. Without the page and per_page parameters, the first 100 shared projects will be returned. - [Share Milestone](https://docs.aurorasolar.com/reference/post_tenants-tenant-id-milestones-milestone-id-share.md): Shares a milestone with a third-party owner (TPO) provider. The TPO tenant is determined based on the financing associated with the design the milestone belongs to. - [Fire Pathway Placement](https://docs.aurorasolar.com/reference/fire-pathway-placement.md) - [Run Fire Pathway Placement](https://docs.aurorasolar.com/reference/runfirepathwayplacement.md): Run Fire Pathway Placement on a design. --- [block:callout] { "type": "info", "body": "This endpoint is not provisioned by default in all tenants. For availability, please contact your Aurora account team." } [/block] Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. - [Retrieve Fire Pathway Placement Status](https://docs.aurorasolar.com/reference/retrievefirepathwayplacementstatus.md): Retrieve the status of an Fire Pathway Placement job. --- [block:callout] { "type": "info", "body": "This endpoint is not provisioned by default in all tenants. For availability, please contact your Aurora account team." } [/block] Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. You will need the job_id from the response body of a POST to the [Run Fire Pathway Placement](ref:runfirepathwayplacement) endpoint, or from the parameters of a `fire_pathway_placement_job_completed` webhook call. [block:callout] { "type": "warning", "body": "Please note that currently only jobs started from the API can be retrieved." } [/block] - [AutoDesigner](https://docs.aurorasolar.com/reference/autodesigner.md) - [Run AutoDesigner](https://docs.aurorasolar.com/reference/runautodesigner.md): Run AutoDesigner on a design. --- [block:callout] { "type": "info", "body": "This endpoint is not provisioned by default in all tenants. For availability, please contact your Aurora account team." } [/block] Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. There are currently 2 run modes available for AutoDesigner: - `max_fit`: Places the maximum number of panels possible within the constraints passed in through `placement_options`. - Only takes `solar_panels` in the `components` input parameter, will ignore other components. - Optionally include an energy `target` (yearly kWh) to enable a set of panels that approximately produce the `target` energy. The rest of the panels (that `max_fit` the remaining roof) will be disabled, meaning they will not affect the performance simulation but users of the app can toggle them on or off as necessary. - `energy`: Places components to generate energy production that is as close as possible to the `target` field (in kWh) within the constraints passed in through `placement_options` You can use [Components API](ref:components) or the Aurora application to find the ids for `components`. Go to https://v2.aurorasolar.com/database for a list of all components, or: - Solar Panels: https://v2.aurorasolar.com/database/generation/modules - Inverters / Micro Inverters: https://v2.aurorasolar.com/database/generation/inverters - DC Optimizers: https://v2.aurorasolar.com/database/generation/dc-optimizers Click on a component and the ID will be included in the URL. Ex: [block:image] { "images": [ { "image": [ "https://aurorasolar-backend-docs.s3.amazonaws.com/images/autodesigner_v2_database_screenshot.png", "autodesigner_v2_database_screenshot.png", 1844, 1708, "#ededed" ] } ] } [/block] - [Retrieve AutoDesigner Status](https://docs.aurorasolar.com/reference/retrieveautodesignerstatus.md): Retrieve the status of an AutoDesigner job. --- [block:callout] { "type": "info", "body": "This endpoint is not provisioned by default in all tenants. For availability, please contact your Aurora account team." } [/block] Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. You will need the job_id from the response body of a POST to the [Run AutoDesigner](ref:runautodesigner) endpoint, or from the parameters of an `auto_designer_job_completed` webhook call. Note that the webhook fires for both jobs initiated from the API and from the UI. - [Irradiance Analysis](https://docs.aurorasolar.com/reference/irradiance-analysis.md) - [Run Irradiance Analysis](https://docs.aurorasolar.com/reference/runirradianceanalysis.md): Run irradiance analysis on all panels in the design. --- [block:callout] { "type": "info", "body": "This endpoint is not provisioned by default in all tenants. For availability, please contact your Aurora account team." } [/block] Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. - [Retrieve Irradiance Analysis Status](https://docs.aurorasolar.com/reference/retrieveirradianceanalysisstatus.md): Retrieve the status of an irradiance analysis job. --- [block:callout] { "type": "info", "body": "This endpoint is not provisioned by default in all tenants. For availability, please contact your Aurora account team." } [/block] Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. You will need the job_id from the response body of a POST to the [Run Irradiance Analysis](ref:runirradianceanalysis) endpoint, or from the parameters of an `panel_irradiance_analysis_job_completed` webhook call. Note that the webhook fires for both jobs initiated from the API and from the UI. - [Performance Simulation](https://docs.aurorasolar.com/reference/performance-simulation.md) - [Run Performance Simulation](https://docs.aurorasolar.com/reference/runperformancesimulation.md): Run a performance simulation on a design. --- [block:callout] { "type": "info", "body": "This endpoint is not provisioned by default in all tenants. For availability, please contact your Aurora account team." } [/block] Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. - [Retrieve Performance Simulation Status](https://docs.aurorasolar.com/reference/retrieveperformancesimulationstatus.md): Retrieve the status of a performance simulation job. --- [block:callout] { "type": "info", "body": "This endpoint is not provisioned by default in all tenants. For availability, please contact your Aurora account team." } [/block] Note that this is an asynchronous endpoint. See the [Asynchronous Endpoints](ref:asynchronous-endpoints) appendix for more info. You will need the job_id from the response body of a POST to the [Run Performance Simulation](ref:runperformancesimulation) endpoint, or from the parameters of a `performance_simulation_job_completed` webhook call. Note that the webhook fires for both jobs initiated from the API and from the UI. - [Events](https://docs.aurorasolar.com/reference/events.md) - [Asynchronous Endpoints](https://docs.aurorasolar.com/reference/asynchronous-endpoints.md) - [Project-based Tags](https://docs.aurorasolar.com/reference/project-based-tags.md) ## Changelog - [Duplicate Detection on Project Creation](https://docs.aurorasolar.com/changelog/duplicate-detection-on-project-creation.md) - [Tree Detection Override on AI Roof](https://docs.aurorasolar.com/changelog/tree-detection-override-on-ai-roof.md) - [System Loss Settings on Designs](https://docs.aurorasolar.com/changelog/system-loss-settings-on-designs.md) - [Total configured system loss in Design Summary](https://docs.aurorasolar.com/changelog/total-configured-system-loss.md) - [System Loss Summary in Design Summary](https://docs.aurorasolar.com/changelog/changelog_system-losses.md) - [Eave height in Roof Summary](https://docs.aurorasolar.com/changelog/eave-height-in-roof-summary.md) - [AutoDesigner: target offset percent](https://docs.aurorasolar.com/changelog/autodesigner-target-offset-percent.md) - [Restricted key endpoints are now editable](https://docs.aurorasolar.com/changelog/restricted-key-endpoints-are-now-editable.md) - [Project Notes APIs](https://docs.aurorasolar.com/changelog/project-notes-apis.md) - [Utility Bills API](https://docs.aurorasolar.com/changelog/utility-bills-api.md)