Release notes March 2026
Ecoinvent 3.12, Import to multiple Reporting Periods, UX and Performance improvements, and adding/editing/deleting AI Import rows
Ecoinvent 3.12
Ecoinvent 3.12 is now available in the Emission Factor library, with an in-depth Land Emissions and Removals readout. Ecoinvent 3.12 in particular has improved coverage of chemical datasets and expanded regional coverage for industrial processes.
Note that Ecoinvent 3.12 is now the new default version. 3.11 and other older version continue to be available using the version dropdown in library or using factor references.
Performance improvements
We performed a structural change, impacting the database structure, leading to a global speedup of most of our API calls. According to our own tests, the median performance improvement is sitting around 28%. Real world results may vary by company but in general, the platform should perform all operations faster.
Import to multiple Reporting Periods at once
Importing a lot of data just got a lot easier. You can now import data across multiple Reporting Periods in the same import. With this improvement, you can upload and process data for all reporting periods at once for a single activity category.
You will notice in the first step of the import, that you no longer select what Reporting Period to import to, as this is now mapped in step 2 of the import process just like any other column.
At a later date, we will also make sure to update all of our import templates to include a column for Reporting Periods, but you can already use this feature by adding the column yourself.
Add, remove, edit, and undo in AI Import
The AI invoice screening module now allows users to add and delete import rows, as well as use undo and redo actions for greater control during data handling. Additionally, the “Edit Checked” functionality—similar to the one available in Inventory—enables batch editing of selected entries. Together, these tools provide users with the flexibility to quickly correct misclassified or missing information, improving both accuracy and efficiency in the AI document screening process.
Update to the Sidebar layout
As we have been adding more and more features to the platform, the sidebar has become a bit crowded. To prevent unnecessary scrolling, and to make sure all features are visible even on smaller screens, we have changed the style of our sidebar.
We also decided to merge AI Import and Import into a single page called Import (AI) to save space and avoid confusion.
Minor updates & fixes
Updates
- Product Carbon Footprints and Unlimited Risk Units are now included by default in all company accounts and cannot be toggled off
Fixes
- Fixed validation period of two emission factors in UBA Germany dataset
- Resolved issue where Reporting Split could not be changed for custom emission factors
- Fixed several layout issues in the French GHGP and Internal Reports
- Fixed layout issues in Dutch GHGP and ISO Reports
- Fixed incorrect URL for UBA emission factors
- Resolved filtering issue in Ecoinvent Factor Library
- Fixed not being able to filter on description in custom emission factor libraries
- Many more minor bug fixes and improvements
API Updates
What's New
- POST /documents/v1/documents/{document_id}/link-records - Post Document Link Records
- POST /measurements/v1/imports/{import_id}/link-measurements - Post Import Link Measurements
What's Deleted
- GET /accounts/v1/addons - Get Addons
- GET /accounts/v1/companies/{company_id}/addons - Get Company Addons
- PUT /accounts/v1/companies/{company_id}/addons/{addon_id} - Put Company Addon
What's Changed
- GET /auth/microsoft-login
- Parameters
- Added parameter:
email(query)
- Added parameter:
- Parameters
- GET /measurements/v1/imports/{import_id}
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Missing property:
activityCategoryId(object) - Missing property:
reportingPeriodId(object) - Added property:
reportingPeriodIds(array, optional) - Added property:
activityCategoryIds(array, optional)
- Response
- PATCH /measurements/v1/imports/{import_id}
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Missing property:
activityCategoryId(object) - Missing property:
reportingPeriodId(object) - Added property:
reportingPeriodIds(array, optional) - Added property:
activityCategoryIds(array, optional)
- Response
- POST /measurements/v1/imports
- Request
- Schema incompatible
- Changed body:
application/json - Changed property type:
activityCategoryId(None→None)- Deprecated: None → True
- Changed property type:
reportingPeriodId(uuid→None)- Format changed:
uuid→None - Deprecated: None → True
- Format changed:
- Request
- POST /value-mappings/v1/value-mappings
- Request
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
reportingPeriod
- Enum values changed: added
- Changed body:
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
reportingPeriod
- Enum values changed: added
- Request
- POST /value-mappings/v1/value-mappings/{value_mapping_id}/ai-suggest
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
reportingPeriod
- Enum values changed: added
- Response
- PUT /value-mappings/v1/value-mappings/{value_mapping_id}
- Request
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
reportingPeriod
- Enum values changed: added
- Changed body:
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
reportingPeriod
- Enum values changed: added
- Request
- POST /measurements/v1/inventory-lines
- Request
- Changed body:
application/json - Added property:
status(null, optional)- Default value:
ACTIVE
- Default value:
- Changed body:
- Response
- Changed response: [200] — Successful Response
- Changed body:
application/json - Changed property type:
measurement(['object']→['object'])
- Request
- POST /measurements/v1/inventory-lines/{measurement_id}/duplicate
- Response
- Changed response: [200] — Successful Response
- Changed body:
application/json - Changed property type:
measurement(['object']→['object'])
- Response
- GET /measurements/v1/inventory-lines/{measurement_id}
- Response
- Changed response: [200] — Successful Response
- Changed body:
application/json - Changed property type:
measurement(['object']→['object'])
- Response
- PATCH /measurements/v1/inventory-lines/{measurement_id}
- Response
- Changed response: [200] — Successful Response
- Changed body:
application/json - Changed property type:
measurement(['object']→['object'])
- Response
- PATCH /measurements/v1/inventory-lines/{measurement_id}/reactivate
- Response
- Changed response: [200] — Successful Response
- Changed body:
application/json - Changed property type:
measurement(['object']→['object'])
- Response
- PUT /measurements/v1/inventory-lines/{measurement_id}/remove-status
- Response
- Changed response: [200] — Successful Response
- Changed body:
application/json - Changed property type:
measurement(['object']→['object'])
- Response