Skip to Content

Product Carbon Footprint Endpoint version: V1 (preview 2)V1 (preview 2) ADD-ONADD-ON

⚠️
Preview Feature

This feature is currently in preview. That means that we believe the feature is good enough to start using, but:

  • There might still be bugs or edge cases we haven't covered.
  • The documentation and error messages might be less detailed.
  • We might need to make further changes in the API surface.

We need the ability to iterate quickly on preview versions, so we offer less guarantees of stability. When we make changes to the preview version, we will release a new version, and you must migrate to this new version within three months. Read more about API versioning at Climatiq here.For this reason, preview endpoints are not available without explicitly opting in. If you would like to opt-in to this preview feature, please contact us.

Climatiq’s Product Carbon Footprint(PCF) feature helps automate the emissions associated with product manufacturing, covering material sourcing and factory production.

The PCF feature is designed for scenarios where you are manufacturing a physical product and have the following data available:

  • The location of manufacturing site
  • A detailed bill of materials (BOM) for the final manufactured product, including the origin of each component
  • The energy uses for the manufacturing of the final product
  • The year of manufacture

For the limitations of the current version of the feature, see limitations.

User Guide

As the PCF API is fairly large and complex, we recommend you read the user guide first, as it takes you step by step through how the API works.

Estimate

POST This endpoint allows you to calculate a Product Carbon Footprint for a product using your manufacturing and component data.

The Product Carbon Footprint estimate includes:

  • Component production emissions: Calculates emissions associated with the production of components and materials. Emission factors are automatically determined using the Autopilot feature. Autopilot will also choose from your private emisssion factors, if you have enabled this add-on feature (note that recently added private factors may not be considered by Autopilot right away). If you have a premium data license for e.g. ecoinvent, these factors will also be considered as candidates.
  • Logistics emissions: Estimates emissions from transporting components using the Freight feature.
  • Manufacturing electricity emissions: Calculates emissions from electricity consumption during the final manufacturing step, using the Energy feature. If you have a premium license for IEA data, these emission factors will also be used.
  • Data Quality Rating: A numerical score is returned to indicate the accuracy of the results.

An estimate is saved under the ID that you assign it when calling the /estimate endpoint. It can be referenced in subsequent calls to /estimate, so you can reuse them to build complex chains of products.

Request

This endpoint accepts the following parameters:

Request headersRequired HTTP headers for this request
    • Authorizationrequired string
      Bearer token containing your Climatiq API key. Example: Authorization: Bearer CLIMATIQ_API_KEY
      Don't have an API key? Get your API key here.
Request parametersShould be sent as a JSON object in the body
    • productrequired string

      The name of the product being produced. Currently, this field is used for descriptive purposes. In future updates, Climatiq may integrate the Autopilot feature to automatically map products to emission factors. See here for what a good input to this field is.

    • product_idstring

      The ID of the product this estimation is to be associated with. If you supply this, the estimated PCF will become the newest version for the specified product.

    • locationrequired object or string

      The location where the product was manufactured. Accepts Location String, Query Location, IATA Code Location, UN/LOCODE Location or Coordinate Location

    • manufacturing_yearrequired number

      The year the product is manufactured.

    • manufacturingrequired array of manufacturing objects

      Components of energy used for the manufacturing process.

    • simple_component_production_data_sourcesarray of strings

      This parameter allows you to set a list of data sources that autopilot will consider when selecting emission factors for this request. If this parameter is not given, the default list of PCF-relevant sources will be considered.

    • componentsrequired array of Product Reference, SimpleComponent or Variations (freely mixed)

      An array of the components used to produce this product.

    • weightWeight
      Default value: The weight of all input components summed up

      If you want to specify the weight of the final product, you may do so here. This can be relevant when e.g. handling packaging

    • use_phasearray of Use-phase emissions (freely mixed)

      Optional array of use-phase emissions. This allows you to specify emissions generated during the use-phase of the product.

    • end_of_lifeobject

      Optional object allowing configuration of end of life.


      end_of_life.include_end_of_lifeboolean
      Default value: true

      Whether to include end of life calculations.

    • metadataobject

      A JSON object where you can put in string values containing custom metadata, for identification, correlation or documentation purposes.

Product Reference

A Product Reference is a reference to a product you have previously estimated using the /estimate endpoint. Its emissions, weight and location will be called up from our database and go into the current estimation. If the current estimation’s location is different from that of the reference, the referenced product will come with a transportation estimate and emissions.

A Product Reference has the following attributes:

  • typerequired string

    Value must be "reference"

  • version_idrequired string

    The version_id of a previous estimation.

  • transportation_modestring

    If known, what the primary transportation mode for this component was. Valid values are "air", "sea", "rail", or "road". If not provided, Climatiq will heuristically determine the most likely transportation mode.

  • transportation_data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for transportation of this component. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

  • multiplierobject of type Weight or Number

    If you need a certain amount of this product, e.g. four tires to a car, you can specify this field with a multiplier ({ "number": 4.0 } in this example) or specify a certain weight for products that cannot easily be counted, e.g. { "weight": 1, "weight_unit": "t" }. The weight, production and transportation emissions (if any) will be scaled according to the multiplier specified. Note that the referenced product itself will not be changed, only its use in this estimation will be scaled.

Simple Component

A Simple Component is, contrary to a Product Reference, a component that you have little information about or don’t care to set up as a product itself. We will utilize the Autopilot feature to find emissions for producing the component, as well as the Freight feature for transportation it to the manufacturing site, if applicable.

A simple component has the following attributes:

  • typerequired string

    Value must be "simple"

  • productrequired string

    What the component is. This will be used by the Autopilot feature to find a suitable emission factor to estimate emissions.

  • weightrequired Weight object

    The weight of the needed component. Used both in estimating the emissions for procuring the component, as well as transporting it to the site of manufacture, if applicable. The weight must be positive.

  • locationobject or string

    The location where the component is procured from. Accepts Location String, Query Location, IATA Code Location, UN/LOCODE Location or Coordinate Location. If omitted, no freight emissions will be calculated for this component, and emission factor selection will not filter by region. A warning notice will be returned.

  • production_yearrequired number

    The year the component was produced.

  • metadataobject

    A JSON object where you can put in string values containing custom metadata, for identification, correlation or documentation purposes.

  • transportation_modestring

    If known, what the primary transportation mode for this component was. Valid values are "air", "sea", "rail", or "road". If not provided, Climatiq will heuristically determine the most likely transportation mode.

  • transportation_data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for transportation of this component. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

  • production_data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for the production of this component. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

  • emission_factorA Selector

    If you specify this parameter, it will be used to select an emission factor for the production of this component, instead of autopilot. This also allows you to use your private emission factors.

  • end_of_lifeobject

    End-of-life configuration for this component.


    end_of_life[x].material_typestring

    The type of material this component is made from. Valid values are: "adhesive", "aluminum", "animal", "battery", "brass", "bronze", "cardboard", "ceramic", "chemical_non_organic", "chemical_non_organic_not_hazardous", "chemical_organic", "chemical_organic_not_hazardous", "concrete", "copper", "electronics", "glass", "hazardous", "metal_generic", "mixed_industrial", "mixed_municipal", "nickel", "oil_mineral", "oil_vegetable", "organic", "paint", "paper", "plant", "plastic", "plastic_abs", "plastic_hdpe", "plastic_ldpe", "plastic_pa", "plastic_pc", "plastic_pet", "plastic_pp", "plastic_ps", "plastic_pvc", "rubber", "solvent", "steel", "steel_stainless", "textile", "titanium", "wood", "zinc". When not specified, the system automatically classifies the material type based on the emission factor used for component production. If no classification is available, defaults to "mixed_industrial" with a warning notice. The system then selects appropriate emission factors for disposal treatment based on the material type.

  • waste_rationull or float

    The percentage of this component lost during manufacture of the product. Must either be null or between 0 and 1 (inclusive). The percentage of this component lost during manufacture is not added to the product's weight. A corresponding amount of the component's end-of-life emissions is shifted from the product's end-of-life emissions and added to the product's production emissions instead.

Variations

A variations object allows specifying that one type of component is procured from several different sources, with different locations and potentially different attributes in terms of emissions. Each of these separate streams a component can come from is called a variation. Each variation is assigned a ratio to signify its share of the total procured for this component. All ratios summed up must amount to 1.0, signifying 100%.

A variations has the following attributes:

  • typerequired string

    Value must be "variations"

  • variationsrequired array of at least 2 components that describe the variations.

    variations[x].ratiorequired float

    A number between 0 and 1, representing how large of a percentage of the final result comes from this variation. All 'ratio' objects inside a 'variations' object must add up to 1.


    variations[x].componentrequired object

    The component to be scaled. Can be either a Simple Component or a Product Reference.

curl --request POST \ --url https://preview.api.climatiq.io/pcf/v1-preview2/estimate \ --header "Authorization: Bearer $CLIMATIQ_API_KEY" \ --data '{ "product": "Electric desk lamp", "location": "Berlin", "manufacturing_year": 2025, "manufacturing": [ { "type": "electricity", "amount": { "energy": 5, "energy_unit": "kWh" } } ], "use_phase": [ { "type": "energy", "metadata": {"description": "typical lifetime usage (500 hours at 10W)"}, "energy": { "amount": { "energy": 5.0, "energy_unit": "kWh" } } } ], "components": [ { "type": "simple", "product": "aluminum base", "production_year": 2025, "weight": { "weight": 0.8, "weight_unit": "kg" }, "location": "Munich" }, { "type": "simple", "product": "plastic shade", "production_year": 2025, "weight": { "weight": 0.3, "weight_unit": "kg" }, "location": "Shenzhen" }, { "type": "simple", "product": "LED circuit board", "production_year": 2025, "weight": { "weight": 0.2, "weight_unit": "kg" }, "location": "Taipei" } ] }'

Manufacturing

Each manufacturing object is classified by a type field, followed by parameters specific to this type.

Manufacturing electricity

A manufacturing electricity has the same fields as an electricity consumption object with these additional fields:

  • typerequired string

    Value must be "electricity"

  • metadataobject

    A JSON object where you can put in string values containing custom metadata, for identification, correlation or documentation purposes.

  • data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for this calculation. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

For example:

{ "type": "electricity", "amount": { "energy": 1.2, "energy_unit": "kWh" }, "connection_type": "direct", "metadata": { "description": "Direct connection from our solar panels" } }

Manufacturing electricity uses the market method for calculating emissions to ensure PACT compliance’.

Manufacturing heat & steam

A manufacturing heat & steam object has the following payload.

  • typerequired string

    Value must be "heat_and_steam"

  • locationobject or string
    Default value: Defaults to the manufacturing location.

    The usage site of the heat and/or steam. Accepts Location String, Query Location, IATA Code Location, UN/LOCODE Location or Coordinate Location.

  • yearinteger
    Default value: Latest year available

    The year for which the greenhouse gas emissions are being calculated.

  • amountrequired Energy object

    The total heat and steam purchased

  • co2e_kg_per_kwhfloat

    Contract emission factor for the component in kg per kWh

  • energy_sourcestring

    The source that the heat is generated from. Valid values are: renewable, coal, natural_gas, biomass or nuclear.

  • loss_factorfloat or string
    Default value: medium

    The distribution loss factor for this component. Can either be a number or one of the strings "low", "medium" or "high"

  • metadataobject

    A JSON object where you can put in string values containing custom metadata, for identification, correlation or documentation purposes.

  • data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for this calculation. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

For details on heat & steam inputs, refer to the heat & steam endpoint of the energy API.

Manufacturing fuel use

A manufacturing fuel use object has some of the fields of the energy endpoint, but the region and year fields are omitted. The manufacturing location and year are automatically used instead.

  • typerequired string

    Value must be "fuel"

  • fuel_typerequired string

    The type of fuel burned. See choosing a fuel_type for how to choose this.

  • amountrequired Energy/Volume/Weight object

    The amount of fuel burned.

  • metadataobject

    A JSON object where you can put in string values containing custom metadata, for identification, correlation or documentation purposes.

  • data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for this calculation. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

Manufacturing emission factor

This allows you to use a user-defined emission factor as a manufacturing emission. Note that technological representativeness in the data quality indicators will currently always be 5 (the worst value), since there is not enough data to gauge this characteristic.

  • typerequired string

    Value must be "emission_factor"

  • emission_factorrequired A Selector

    Use the fields of this selector to specify which emission factor to use for this emission.

  • parametersrequired object of type Parameter

    The parameter to multiply the emission factor with. Must be of a compatible unit with the emission factor.

  • metadataobject

    A JSON object where you can put in string values containing custom metadata, for identification, correlation or documentation purposes.

  • data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for this calculation. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

Use-phase emissions

Use-phase emissions are emitted after the product has been produced and shipped, but before its disposal. This can encompass things such as emissions emitted by installation and deinstallation processes or energy consumed during operation or stand-by.

Use-phase emissions must be specified for the entire expected lifetime of the product, not per-year.

Electricity

Represents a use-phase process consuming electricity. This could be e.g. a TV consuming electricity while being turned on, or in standby mode.

  • typerequired string

    Value must be "energy"

  • energyrequired Electricity consumption object

    Electricity consumed in this process. Uses the market method for calculating emissions to ensure PACT compliance

  • metadataobject

    A JSON object where you can put in string values containing custom metadata, for identification, correlation or documentation purposes.

  • data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for this calculation. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

Emission Factor

If your product produces emissions during its use-phase that is not energy-related, you can specify a concrete emission factor. This could be in cases for cooling units where you might have leaks of refrigerant gases, or for gasoline-powered cars that consume gasoline during its usage.

To use a concrete emission factor for your use-phase emissions, you should specify a selector:

  • typerequired string

    Value must be "emission_factor"

  • emission_factorrequired A Selector

    Use the fields of this selector to specify which emission factor to use for this emission.

  • parametersrequired object of type Parameter

    The parameter to multiply the emission factor with. Must be of a compatible unit with the emission factor.

  • metadataobject

    A JSON object where you can put in string values containing custom metadata, for identification, correlation or documentation purposes.

  • data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for this calculation. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

Query

If you do not know which concrete emission factor to use, you can also specify a free-text field, and let Climatiq’s autopilot try and determine the most appropriate emission factor:

  • typerequired string

    Value must be "query"

  • queryrequired string

    The query string to feed into Autopilot to find an emission factor.

  • parametersrequired object of type Parameter

    The parameter to multiply the emission factor with. Must be of a compatible unit with the emission factor.

  • metadataobject

    A JSON object where you can put in string values containing custom metadata, for identification, correlation or documentation purposes.

  • data_qualityObject containing user-specified data quality indicators

    Object to allow explicitly specifying one or more data quality indicators for this calculation. This will override the data quality indicators that Climatiq determines. See the section on data quality for more information.

Response

The response includes the estimated carbon footprint for the product along with detailed breakdowns.

Response parameters
    • product_idstring

      The ID of the product for later reference.

    • version_idstring

      The ID of the estimation for later reference.

    • productstring

      The name of the product as provided in the request.

    • cradle_to_gateobject

      The total cradle-to-gate values for this product


      cradle_to_gate.total_co2e_kgfloat

      The total greenhouse gas emissions for the cradle-to-gate LCA of this product in kilograms CO2 equivalent.


      cradle_to_gate.co2e_calculation_methodstring

      The calculation methodology used for the cradle-to-gate calculation. The value of this is either "ipcc_ar4_gwp100", "ipcc_ar5_gwp100", "ipcc_ar6_gwp100" or "ipcc_mixed_gwp100". Learn more about calculation methods here.


      cradle_to_gate.data_qualityData Quality Response object

      An object containing both scaled and normalized data quality indicators for the cradle-to-gate calculations. See the Data Quality section for details.

    • locationstring

      A string that describes the location where the good was produced, as provided in the request.

    • location_country_codestring

      A country-level region code for the location where the good was produced, as provided in the request.

    • manufacturing_yearnumber

      The year the product was manufactured as provided in the request.

    • weight_kgfloat

      The weight of the returned product. Unless manually set, this will be the combined weight of all the components that go into this product, with the waste from those components subtracted.

    • manufacturingobject

      Emissions from the manufacturing process.


      manufacturing.total_co2e_kgfloat

      Total emissions from manufacturing energy consumption in kg CO2e.


      manufacturing.data_qualityData Quality Response object

      Data quality indicators summed for all manufacturing emissions. See Data Quality for details.


      manufacturing.breakdownArray of manufacturing response objects. Each object corresponds to an input item in the request.

      Breakdown of emissions from the manufacturing process.

    • noticesarray of Notice

      An array of notices for the manufacturing of this component, that is relevant for understanding the result, and any limitations of it. Note that other notices reside at different levels, and components, manufacturing etc, might have notices nested inside them.

    • end_of_lifeobject or null

      End-of-life emissions calculation. This is null if end_of_life.include_end_of_life is set to false, or if this is inside a product reference, i.e. not a top level response.


      end_of_life[x].total_co2e_kgfloat

      Total end-of-life emissions in kg CO2e.


      end_of_life[x].allocation_methodstring

      The allocation method used for end-of-life calculations. This is currently always "cut_off"


      end_of_life[x].breakdownarray of objects

      Detailed breakdown of end-of-life emissions by material type. Each object represents emissions from disposing of a specific material type present in the product.

    • use_phaseobject or null

      Breakdown of provided use-phase emissions. This is null if no use_phase was provided in the request, or if this is inside a product reference, i.e. not a top level response.


      use_phase[x].total_co2e_kgfloat

      Total use-phase emissions in kg CO2e.


      use_phase[x].data_qualityData Quality Response object

      An object containing both scaled and normalized data quality indicators for the cradle-to-gate calculations. See the Data Quality section for details.


      use_phase[x].breakdownarray of use-phase response objects

      Array of individual use-phase emissions. Each object corresponds to an input item in the request.

    • wastearray of objects

      A breakdown of waste emitted during the manufacture of the product. The array will be sorted by CO2e in descending order. Note that material_type may be different from the input components, e.g. a wood input component may show up as organic waste here, analogous to the end_of_life field.

    • metadataobject or null

      An object containing the custom metadata for the corresponding input item. If no metadata was provided, this is null.

    • componentsarray of objects

      Array containing detailed information about each component used in the product. Each component object contains transportation information and component details.

Simple Component Response

When the component type is "simple", the component object contains:

Response parameters
    • typestring

      Component type. Value is "simple".

    • productstring

      The name of the component product.

    • metadataobject or null

      An object containing the custom metadata for the corresponding input item. If no metadata was provided, this is null.

    • weight_kgfloat

      The weight of the component.

    • locationstring or null

      The location where the component was produced. This is null if no location was provided in the request.

    • location_country_codestring or null

      A country-level region code for the location where the good was produced. This is null if no location was provided in the request.

    • productionEstimationWithSourceTrail plus additional fields

      Production emissions and details for the component. This will contain an EstimationWithSourceTrail object plus the additional fields listed below.


      production.calculation_detailsstring or null

      An object with the field quality_label returned from autopilot. Possible values for the label are "accept" or "review". The quality_label can be null if autopilot was not used, such as when providing a custom selector.


      production.data_qualityData Quality Response object

      Data quality indicators for production emissions. See Data Quality for details.

    • wastenull or object

      The waste emitted during the product's manufacture by this component. This is null unless the waste_ratio of the component was greater than 0. These objects are also aggregated on the response object's waste field.

    • noticesarray of Notice

      An array of notices for this component, that is relevant for understanding the result, and any limitations of it.

Product Reference Response

When the component type is "reference", the component object contains the same values as the PCF response but with an additional type: "reference" field.

Freight Response

The transportation object contains emissions data from transporting components and has the following structure:

Response parameters
    • total_co2e_kgfloat

      Total transportation emissions in kg CO2e.

    • routearray

      The transportation route taken, represented as an array of alternating location and leg objects.

    • well_to_tank_co2efloat

      Well-to-tank emissions for fuel used in transportation.

    • tank_to_wheel_co2efloat

      Tank-to-wheel emissions from transportation.

    • logistics_hubs_co2efloat

      Emissions from logistics hub operations.

    • multiplierWeight or Number

      The multiplier that was specified when the reference to this product was made. If no multiplier was specified this will be null.

    • noticesarray of FreightNotice

      An array of notices for the transportation part of this calculation, that is relevant for understanding the calculations, and any limitations of it.

    • Data quality indicators for transportation emissions. See Data Quality for details.

Variations Response

When the component type is "variations", the component object contains:

Response parameters
    • typestring

      Component type. Value is "variations".

    • variationsarray of objects describing the different variations

      Array of the different variations with their ratios and components. The weight, production and transportation emissions (if any) of the component will be scaled according to the 'ratio' specified. Note that the referenced product itself will not be changed, only its use in this estimation will be scaled.


      variations[x].ratiofloat

      A number between 0 and 1, representing the percentage of the total component that comes from this variation.


      variations[x].transportationFreight Response or null

      Transportation emissions for transporting this variation component. Null if no transportation was required.


      variations[x].componentobject

      The component details for this variation. Can be either a Simple Component Response or a Product Reference Response.

Use-phase response

These are the items in the breakdown array of the use_phase response object. Each use-phase item in the request yields an item of the corresponding type in this array.

Electricity use-phase response

Represents emissions caused by electricity consumption during the use-phase of the product.

Response parameters
    • typestring

      Value is always "energy".

    • metadataobject or null

      An object containing the custom metadata for the corresponding input item. If no metadata was provided, this is null.

    • total_co2e_kgfloat

      Total emissions from use-phase energy consumption in kg CO2e.

    • generationfloat

      Emissions from electricity generation in kg CO2e.

    • generation_wttfloat

      Well-to-tank emissions for electricity generation in kg CO2e.

    • tndfloat

      Transmission and distribution losses emissions in kg CO2e.

    • tnd_wttfloat

      Well-to-tank emissions for transmission and distribution in kg CO2e.

    • electricity_used_kwhfloat

      The amount of electricity used.

    • Data quality indicators for electricity emissions. See Data Quality for details.

    • source_trailarray of Source Data Point

      An array of Source Data Points that help explain and provide trust in the calculation. Click to view more details about Source Trail.

    • noticesarray of Notice

      An array of notices concerning the electricity estimation for this item.

Query use-phase response

Represents query-based emissions produced during the use-phase of the product.

Response parameters
    • typestring

      Value is always "query".

    • metadataobject or null

      An object containing the custom metadata for the corresponding input item. If no metadata was provided, this is null.

    • estimateEstimation object

      An estimation performed to achieve the final co2e value for this item.

    • noticesarray of Notice

      An array of notices concerning the electricity estimation for this item.

Emission factor use-phase response

Represents emissions produced during the use-phase of the product when the emission factor to use was specified in the request.

The response is the same as query use-phase response.

Manufacturing response

These are the items in the breakdown array of the manufacturing response object. Each manufacturing item in the request yields an item of the corresponding type in this array.

All manufacturing response types share the following fields.

Response parameters
    • typestring

      Type discriminator. One of electricity, fuel, emission_factor, head_and_steam

    • total_co2e_kgnumber

      The total CO2e in kg emitted from this item.

    • Data quality indicators for manufacturing emissions. See Data Quality for details.

    • source_trailarray of Source Data Point

      An array of Source Data Points that help explain and provide trust in the calculation. Click to view more details about Source Trail.

    • noticesarray of Notice

      An array of notices concerning the estimation for this item.

    • metadataobject or null

      An object containing the custom metadata for the corresponding input item. If no metadata was provided, this is null.

    • detailsobject

      This contains details on the estimation. If the estimation is for electricity or head_and_steam, this field is of type Manufacturing electricity, heat and steam. If this estimation is for type emission_factor, this field is of type Manufacturing emission factor. For type fuel, no details are given and this field is always an empty object.

Manufacturing electricity, heat and steam

The following fields are part of a manufacturing electricity, heat & steam breakdown component.

Response parameters
    • generationfloat

      Emissions from energy generation in kg CO2e.

    • generation_wttfloat

      Well-to-tank emissions for energy generation in kg CO2e.

    • tndfloat

      Transmission and distribution losses emissions in kg CO2e.

    • tnd_wttfloat

      Well-to-tank emissions for transmission and distribution in kg CO2e.

Manufacturing emission factor

A manufacturing emission factor breakdown component contains in its details field all fields of an estimation object.

Iterations of product carbon footprints

Sometimes the manufacturing process of a product changes, or new data becomes available, electricity supply changes and new suppliers replace old ones. The endpoint allows for creating a new version of an PCF. Each PCF estimated has both a product_id and a version_id. To create a new version of a PCF, call the estimate endpoint again with the changes you’d like to make and add the product_id of the product that you’re creating a new version for. This way, the new estimation will be associated with the existing one. See more details in the user guide.

Get previous estimation

GET This endpoint allows you to retrieve the results of a previous estimation using the version_id returned with the original estimation.

Request

https://preview.api.climatiq.io/pcf/v1-preview2/{version_id}

The endpoint requires the same Authorization header as the estimate endpoint.

The version_id part is the version_id returned in the previous estimation.

The response is equivalent to the one from the estimation endpoint.

List versions of a PCF

GET This endpoint allows you to list the different versions of a PCF.

As explained in Iterations of product carbon footprints, when you make an estimation and provide the product_id parameter, this means you are creating a new version of that PCF. This endpoint returns a list of all versions of PCFs for a given product_id, ordered by creation date in descending order, i.e. the newest items come first.

Request

https://preview.api.climatiq.io/pcf/v1-preview2/product/{product_id}/versions

The endpoint requires the same Authorization header as the estimate endpoint.

Response parameters
    • product_idstring

      The ID of the product.

    • version_idstring

      The ID of the estimation.

    • created_atstring (RFC3339)

      The date and time the estimation was made.

    • productstring

      The name of the product, as given when calling the estimation endpoint.

    • cradle_to_gate_co2enumber

      The cradle-to-gate CO2e of the estimation.

    • use_phase_co2enumber or null

      The use-phase CO2e of the estimation.

    • end_of_life_co2enumber or null

      The end-of-life CO2e of the estimation.

For example, https://preview.api.climatiq.io/pcf/v1-preview2/product/aa594624-f3b2-463e-aeca-9209ad496afc/versions could return the following response:

[ { "product_id": "aa594624-f3b2-463e-aeca-9209ad496afc", "version_id": "444013d1-26e8-4dd8-bc6f-41e2adae6463", "created_at": "2026-02-20T10:53:46.007717Z", "product": "Steel hammer head", "cradle_to_gate_co2e": 2926.502093351476, "use_phase_co2e": null, "end_of_life_co2e": 0.022046226218487758 }, { "product_id": "aa594624-f3b2-463e-aeca-9209ad496afc", "version_id": "0b04c99c-5c7a-4480-8dc3-cd29b422dc28", "created_at": "2026-03-01T08:15:34.008812Z", "product": "Steel hammer head", "cradle_to_gate_co2e": 2425.735492740162, "use_phase_co2e": null, "end_of_life_co2e": 0.022046226218487758 } ]

List products

GET This endpoint allows you to list the different products you previously estimated.

The endpoint returns the latest version of each product you have estimated, ordered by the date and time of estimation (with the newest listed first).

Request

https://preview.api.climatiq.io/pcf/v1-preview2

The endpoint requires the same Authorization header as the estimate endpoint.

Response parameters
    • product_idstring

      The ID of the product.

    • version_idstring

      The ID of the estimation.

    • created_atstring (RFC3339)

      The date and time the estimation was made.

    • productstring

      The name of the product, as given when calling the estimation endpoint.

    • cradle_to_gate_co2enumber

      The cradle-to-gate CO2e of the estimation.

    • use_phase_co2enumber or null

      The use-phase CO2e of the estimation.

    • end_of_life_co2enumber or null

      The end-of-life CO2e of the estimation.

For example, https://preview.api.climatiq.io/pcf/v1-preview2 could return the following response:

[ { "product_id": "aa594624-f3b2-463e-aeca-9209ad496afc", "version_id": "444013d1-26e8-4dd8-bc6f-41e2adae6463", "created_at": "2026-02-20T10:53:46.007717Z", "product": "Steel hammer head", "cradle_to_gate_co2e": 2926.502093351476, "use_phase_co2e": null, "end_of_life_co2e": 0.022046226218487758 }, { "product_id": "5176c2ef-b7cb-4fe8-8af5-a00226822a38", "version_id": "0b04c99c-5c7a-4480-8dc3-cd29b422dc28", "created_at": "2026-03-01T08:15:34.008812Z", "product": "Lamp shade", "cradle_to_gate_co2e": 2425.735492740162, "use_phase_co2e": null, "end_of_life_co2e": 0.022046226218487758 } ]

Data Quality

Not all data is a perfect fit for the actual activity, which is why the concept of “Data Quality” exists. The Climatiq API follows the PACT methodology , where a data quality rating is an integer between 1-5 that represents the quality of the data for a given part of the PCF.

Data Quality is always split up into three different indicators, where each indicator has its own data quality rating. The three indicators are:

  • Technological Representativeness: How well does the emission factor used match the actual process taking place.
  • Geographical Representativeness: How well does the region of the emission factor match the region of the process.
  • Temporal Representativeness: How well does the year of the emission factor match the year of the process.

For each part of the PCF, Climatiq assigns a score for each of these indicators:

Data Quality Response

The Data Quality object provides an indication of the reliability of the carbon footprint estimation. It contains both scaled and normalized data quality indicators, as defined by the PACT standard.

Response parameters
    • scaledobject

      Scaled data quality indicators. Higher values indicate where improving data quality would most reduce uncertainty in your footprint. These are calculated by multiplying each indicator rating by the CO2e contribution of that component. If the co2e is 0 for the given estimation, these values will all be 0.


      scaled.technological_representativeness_data_quality_ratingfloat

      A data quality rating for the degree to which the data reflects the actual technology / technologies used in the process.


      scaled.geographical_representativeness_data_quality_ratingfloat

      A data quality rating for the degree to which the data reflects the actual geographic location of the processes.


      scaled.temporal_representativeness_data_quality_ratingfloat

      A data quality rating for the degree to which the data reflects the actual time (e.g., year) or age of the process.

    • normalizedobject

      Normalized data quality indicators with values between 1 and 5, where 1 is best and 5 is worst. These represent the overall data quality rating for your product, calculated by dividing the summed scaled indicators by the total CO2e. If the co2e is 0 for the given estimation, these numbers will default to 5.


      normalized.technological_representativeness_data_quality_ratingfloat

      A data quality rating for the degree to which the data reflects the actual technology / technologies used in the process.


      normalized.geographical_representativeness_data_quality_ratingfloat

      A data quality rating for the degree to which the data reflects the actual geographic location of the processes.


      normalized.temporal_representativeness_data_quality_ratingfloat

      A data quality rating for the degree to which the data reflects the actual time (e.g., year) or age of the process.

The higher the CO2e emissions of a part, the more important it is to have good data quality indicators. Poor data quality doesn’t matter as much for a part of the PCF that emits 0.5kg CO2e, as the one that emits 5000kg. For each part of the PCF, the data quality ratings are multiplied by the CO2e of that part. This is what creates the scaled indicators. Larger scaled values indicate where improving data quality would improve overall data quality the most.

These scaled values are summed up through the calculation tree. The normalized indicators show the overall data quality rating for each indicator (back in the 1-5 range), calculated by dividing the summed scaled indicators by the CO2e at each level.

As the PCF feature uses secondary data, often the expected data quality indicator will be between 2 and 4. For more information about Data Quality Ratings and the calculation methodology, see the PACT standard , which Climatiq aligns with.

Manually Specifying Data Quality

As you have more information than Climatiq about how a given emission factor maps to your actual processes, Climatiq allows you to override the Data Quality Ratings for each part of the PCF. It is recommended that you override this where possible, particularly for the technological representativeness, as Climatiq cannot know how well a given emission factor actually matches your processes.

You can override one or all of the data quality indicators by specifying the following object:

Request headersRequired HTTP headers for this request
    • Authorizationrequired string
      Bearer token containing your Climatiq API key. Example: Authorization: Bearer CLIMATIQ_API_KEY
      Don't have an API key? Get your API key here.
Request parametersShould be sent as a JSON object in the body
    • technological_representativeness_data_quality_ratinginteger between 1 and 5

      A data quality rating for the degree to which the data reflects the actual technology / technologies used in the process.

    • geographical_representativeness_data_quality_ratinginteger between 1 and 5

      A data quality rating for the degree to which the data reflects the actual geographic location of the processes.

    • temporal_representativeness_data_quality_ratinginteger between 1 and 5

      A data quality rating for the degree to which the data reflects the actual time (e.g., year) or age of the process.

If you are unsure about what number is appropriate, please refer to the FAQ below

Notice

The notices array for non-transportation can contain these objects:

Notice attributes
severity string
Either warning or info. warning is for messages that might lead to inaccurate calculations. You should check these to make sure the results are fit for your intended purpose. info is for information that will help you understand the calculation result better.
message string
An explanation of the notice.
code string
A programmatic value you can use to disambiguate the different notice types.

The different possible values for code are as follows. You should not treat this list as exhaustive as more values may be added with time:

And these additional codes:

Notice code valuedescription
material_type_fallbackThe material type for a component was automatically set to a generic default (mixed_industrial) because no mapping exists for the emission factor used. For more accurate end-of-life emissions, consider specifying the material type explicitly.
no_location_specifiedNo location was specified for a simple component. Freight emissions will not be calculated, and emission factor selection will not filter by region.

Limitations

This endpoint provides an estimate of a product’s carbon footprint. These estimates may have significant uncertainties, and users should validate the output values.

The current limitations of the endpoint are:

  • Different selected emission factors for the components may have variations in LCA boundaries.

FAQ

How do I handle packaging?

When shipping the component that comes into your final product, some packaging is involved, that is discarded. While this packaging contributes to the final emissions of the product, it does not contribute to the final weight. This packaging should be included in the PCF.

To handle packaging for your input components we recommend that you:

  • Add the packaging as a separate input component, with the same location as the component it is being used to package.
  • Set the waste_ratio to 1.0 for the component. This means that all of the component will be considered as waste during the manufacturing process, and it will not add to the final weight of your PCF.

See the below example for how to specify 200 grams of cardboard packaging.

{ "product": "LED Assembly", "location": { "query": "berlin" }, "manufacturing_year": 2025, "manufacturing": [ { "type": "electricity", "amount": { "energy": 3, "energy_unit": "kWh" } } ], "components": [ // The actual component you are using { "type": "simple", "product": "LED chip", "production_year": 2025, "weight": { "weight": 0.15, "weight_unit": "kg" }, "location": { "query": "Taipei" } }, // Packaging for the above component { "type": "simple", "product": "cardboard", "production_year": 2025, "weight": { "weight": 0.2, "weight_unit": "kg" }, "location": { "query": "Taipei" }, "waste_ratio": 1.0 } ] }

How are Data Quality Ratings calculated?

Climatiq calculates data quality ratings based on the PACT Methodology, that describes when to apply which data quality rating. Climatiq is not always able to determine exactly what data quality rating to apply, in which case it defaults to a more conservative (i.e. worse) data quality rating. We recommend you override the data quality ratings where it is feasible.

Below are the tables based on the PACT Methodology tables that explain when which data quality ratings are appropriate for the different indicators:

Technological representativeness

Data Quality RatingDescription
1The dataset has been created based on data reflecting the exact technology employed (i.e. plant specific process/equipment data for the plant/equipment where the product has been manufactured).

Note: this quality score can be achieved only in case of use of primary data
2The dataset has been created based on data reflecting the company-specific and same technology to the one employed for the actual manufacturing (i.e. same technology, the company/site specific but not necessarily plant specific – it could be an average if several company/site specific data are available).

Note: this quality score can be achieved only in case of use of primary data
3The dataset has been created based on data reflecting an average for an equivalent technology to the one employed for the actual manufacturing (i.e. same technology, but not company specific).

Note: this is the maximum score achievable with secondary data
4The dataset has been created based on data reflecting a technological proxy (i.e. similar but not same technology, irrespectively if based on averages or supplier specific data)
5The dataset has been created based on different or unknown technology vs technology actually employed

Geographical representativeness

Data Quality RatingDescription
1The dataset has been created based on data reflecting the country subdivision (if applicable) or country in which the product has been manufactured.

Country subdivision list: States in the USA, Provinces in Canada, Federative units in Brazil, Provinces in Argentina, States in Mexico, Republics in Russia, States in India, Provinces in China, States in Australia
2The dataset has been created based on data pertaining to the country, in which the product has been manufactured. The area where the dataset is generated is valid for the geographical area where the site is located.

Example: The site is in California and the dataset is a US average
3The dataset has been created based on data pertaining to the geographical region (e.g., Europe, Asia, North America), in which the product has been manufactured. The area where the dataset is generated is valid for the geographical area where the site is located.

Example: The site is in Spain and the dataset is a European average
4The dataset has been created based on global averages.

Example: The site is in Japan and the dataset is a global average
5The dataset has been created based on data with a geographical scope which is either unknown or pertaining a country, or region not including the site in which the product has been manufactured.

Example: In absence of a global average, the dataset geographical applicability is unknown.

Temporal / Time representativeness

Data Quality RatingDescription
1The difference between the year of the dataset and estimate of the PCF is ≤1 year
2The difference between the year of the dataset and estimate of the PCF is >1 year and ≤2 years
3The difference between the year of the dataset and estimate of the PCF is >2 years and ≤3 years
4The difference between the year of the dataset and estimate of the PCF is >3 years and ≤4 years
5The difference between the year of the dataset and estimate of the PCF is >4 years or unknown

Can I just calculate my PCF for cradle-to-gate?

Yes! A cradle-to-gate PCF covers only the manufacturing of the PCF, omitting the use-phase or end-of-life of the product.

To calculate a cradle-to-gate PCF, you should:

  • Specify end_of_life.include_end_of_life = false in your request
  • Not include anything in the use_phase part of your request.

Does Climatiq apply a Radiative Forcing Index(RFI) to air transportation?

Climatiq does not apply a radiative forcing index to air travel when calculating PCFs, in contrast to when using the freight endpoint, where one is applied by default. This is to comply with ISO14067 which mandates that no RFI is used. You can read more about Radiative Forcing Indexes in our freight documentation

How do I use primary data in my PCF?

One of the big challenges with building robust PCFs is getting primary data, without relying on emission factors that aren’t specific to a particular product.

Climatiq allows you to use as much or as little primary data as you have available, so that you can input the primary data you have, and focus on collecting primary data for the activities that emit the most CO2e.

For the manufacturing step, primary data is generally the actual amount of electricity, fuel, heat & steam, etc. used in the production. Climatiq allows you to specify these values. If you have more granular data, like the electricity supplier, the kgCo2e/kWh, the grid loss factor or similar, you can also input these, for additional accuracy.

For the Simple Components inside the components array, Climatiq by default matches the product string inside them to an emission factor. These emission factors come from certified sources, but they always represent broad processes, not specific to your production, so they are considered secondary data.

  1. If the component is something you produce, consider creating a PCF for that component, and using a Product Reference instead of a simple component.
  2. If the component is something that you are purchasing, you should ask your supplier for a PCF, or an emission factor. You can then upload that emission factor as private data and use it by specifying it inside the emission_factor field on a Simple Component

Use-phase, much like manufacturing allows you to specify many different parameters. Unlike manufacturing however, in the use-phase, there is always some degree of modeling required to determine what the usage patterns of the product are or how long the lifespan of the product is expected to be.

For end-of-life it is currently not possible to use primary data.

Additional examples

This section contains a few additional examples of requests and responses to show you how to compose requests.

Creating a reusable component with variations

This example creates an LED assembly product that sources LED chips from two different locations (70% from Taipei, 30% from Seoul) using the variations component type:

curl --request POST \ --url https://preview.api.climatiq.io/pcf/v1-preview2/estimate \ --header "Authorization: Bearer $CLIMATIQ_API_KEY" \ --data '{ "product": "LED Assembly", "location": { "query": "berlin" }, "manufacturing_year": 2025, "manufacturing": [ { "type": "electricity", "amount": { "energy": 3, "energy_unit": "kWh" } } ], "components": [ { "type": "variations", "variations": [ { "ratio": 0.7, "component": { "type": "simple", "product": "LED chip", "metadata": {"product_description": "LED Chip from Taipei"}, "production_year": 2025, "weight": { "weight": 0.15, "weight_unit": "kg" }, "location": { "query": "Taipei" } } }, { "ratio": 0.3, "component": { "type": "simple", "product": "LED chip", "metadata": {"product_description": "LED Chip from Seoul"}, "production_year": 2025, "weight": { "weight": 0.15, "weight_unit": "kg" }, "location": { "query": "Seoul" } } } ] } ] }'

The response includes a version_id that can be referenced in other product calculations:

{ "version_id": "2bc1169f-693c-4cf0-8069-6d5b2e2207d4", "product_id": "2bc1169f-693c-4cf0-8069-6d5b2e2207d4", "product": "LED Assembly", "metadata": null, "cradle_to_gate": { "total_co2e_kg": 2.68569347785, "co2e_calculation_method": "ipcc_mixed_gwp100", "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 6.36177777269, "geographical_representativeness_data_quality_rating": 5.58392713158, "temporal_representativeness_data_quality_rating": 2.68569347785 }, "normalized": { "technological_representativeness_data_quality_rating": 2.3687653953, "geographical_representativeness_data_quality_rating": 2.07913791266, "temporal_representativeness_data_quality_rating": 1 } } }, "location": "Berlin, Germany", "location_country_code": "DE", "manufacturing_year": 2025, "weight_kg": 0.15, "multiplier": null, "manufacturing": { "total_co2e_kg": 2.60770450233, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 5.97183289513, "geographical_representativeness_data_quality_rating": 5.21540900467, "temporal_representativeness_data_quality_rating": 2.60770450233 }, "normalized": { "technological_representativeness_data_quality_rating": 2.29007270179, "geographical_representativeness_data_quality_rating": 2, "temporal_representativeness_data_quality_rating": 1 } }, "breakdown": [ { "type": "electricity", "total_co2e_kg": 2.60770450233, "metadata": null, "details": { "generation": 2.1736925571, "generation_wtt": 0.369527734707, "tnd": 0.0558, "tnd_wtt": 0.00868421052632 }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 5.97183289513, "geographical_representativeness_data_quality_rating": 5.21540900467, "temporal_representativeness_data_quality_rating": 2.60770450233 }, "normalized": { "technological_representativeness_data_quality_rating": 2.29007270179, "geographical_representativeness_data_quality_rating": 2, "temporal_representativeness_data_quality_rating": 1 } }, "notices": [ { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating market well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor. For more accurate market well to tank emissions, explicitly provide an energy source." } ], "source_trail": [ { "data_category": null, "name": "Default well-to-tank ratio of electricity generation emissions", "source": "Climatiq", "source_dataset": null, "year": null, "region": "GLOBAL", "region_name": "Global", "id": null }, { "data_category": "emission_factor", "name": "Electricity supplied from grid", "source": "UBA", "source_dataset": "Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990 - 2024", "year": "2024", "region": "DE", "region_name": "Germany", "id": "39218cb8-1fdc-4cf3-b082-a12ccf9731de" }, { "data_category": "emission_factor", "name": "Electricity supplied from grid", "source": "UBA", "source_dataset": "Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990 - 2024", "year": "2024", "region": "DE", "region_name": "Germany", "id": "aadf9da6-44b4-4a52-bfd2-02e3fb926db4" }, { "data_category": "emission_factor", "name": "Electricity supplied from grid - residual mix", "source": "AIB", "source_dataset": "European Residual Mix", "year": "2024", "region": "DE", "region_name": "Germany", "id": "7c5c4bdc-e220-452d-a5f5-1f5beb9766f5" }, { "data_category": "emission_factor", "name": "Electricity supplied from grid: T&D losses", "source": "UBA", "source_dataset": "Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990 - 2024", "year": "2024", "region": "DE", "region_name": "Germany", "id": "4f2154ef-6278-42c4-82ee-bfde93393601" } ] } ] }, "notices": [ { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating market well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor. For more accurate market well to tank emissions, explicitly provide an energy source." } ], "end_of_life": { "total_co2e_kg": 0.0009615915, "allocation_method": "cut_off", "breakdown": [ { "total_co2e_kg": 0.0009615915, "material_type": "wood", "total_weight_kg": 0.15, "source_trail": [ { "data_category": "emission_factor", "name": "Wood waste disposal (combustion)", "source": "BEIS", "source_dataset": "Greenhouse gas reporting: conversion factors 2024", "year": "2024", "region": "GB", "region_name": "United Kingdom", "id": "d1cedaa2-87bb-4525-954b-1a7f6fe94b9b" } ] } ] }, "use_phase": null, "waste": [], "components": [ { "transportation": null, "component": { "type": "variations", "variations": [ { "ratio": 0.7, "transportation": { "total_co2e_kg": 0.012301051452, "route": [ { "type": "location", "location": "Taipei City, 110, Taiwan" }, { "type": "leg", "transport_mode": "road", "distance_km": 26.479 }, { "type": "location", "location": "Sea Port at CHI-LUNG" }, { "type": "leg", "transport_mode": "sea", "distance_km": 20480.059695 }, { "type": "location", "location": "Sea Port at SZCZECIN" }, { "type": "leg", "transport_mode": "road", "distance_km": 144.236 }, { "type": "location", "location": "Berlin, Germany" } ], "well_to_tank_co2e": 0.00197833765664, "tank_to_wheel_co2e": 0.00982501379541, "logistics_hubs_co2e": 0.0004977, "notices": [], "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.0615052572602, "geographical_representativeness_data_quality_rating": 0.0469056500606, "temporal_representativeness_data_quality_rating": 0.012301051452 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 3.81314152237, "temporal_representativeness_data_quality_rating": 1 } } }, "component": { "type": "simple", "product": "LED chip", "metadata": { "product_description": "LED Chip from Taipei" }, "weight_kg": 0.105, "location": "Taipei City, 110, Taiwan", "location_country_code": "TW", "production": { "estimate": { "co2e": 0.042, "co2e_unit": "kg", "co2e_calculation_method": "ar4", "co2e_calculation_origin": "source", "emission_factor": { "name": "Chipboard", "activity_id": "timber_forestry-type_chipboard", "id": "2f53adb7-a2ff-444a-9e29-f319a09c828e", "access_type": "public", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": 2025, "region": "DE", "category": "Timber and Forestry Products", "source_lca_activity": "cradle_to_gate", "data_quality_flags": [ "notable_methodological_variance" ] }, "constituent_gases": { "co2e_total": 0.042, "co2e_other": null, "co2": null, "ch4": null, "n2o": null }, "activity_data": { "activity_value": 0.105, "activity_unit": "kg" }, "audit_trail": "enabled" }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.21, "geographical_representativeness_data_quality_rating": 0.21, "temporal_representativeness_data_quality_rating": 0.042 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 5, "temporal_representativeness_data_quality_rating": 1 } }, "calculation_details": { "quality_label": "review" }, "source_trail": [ { "data_category": "emission_factor", "name": "Chipboard", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": "2025", "region": "DE", "region_name": "Germany", "id": "2f53adb7-a2ff-444a-9e29-f319a09c828e" } ] }, "notices": [ { "message": "Estimation was performed using an emission factor from region DE due to data not being available for your region TW.", "code": "emission_factor_region_fallback", "severity": "warning" } ], "waste": null } }, { "ratio": 0.3, "transportation": { "total_co2e_kg": 0.0056879240598, "route": [ { "type": "location", "location": "Seoul, South Korea, South Korea" }, { "type": "leg", "transport_mode": "road", "distance_km": 49.119 }, { "type": "location", "location": "Sea Port at INCHON" }, { "type": "leg", "transport_mode": "sea", "distance_km": 21796.906362 }, { "type": "location", "location": "Sea Port at SZCZECIN" }, { "type": "leg", "transport_mode": "road", "distance_km": 144.236 }, { "type": "location", "location": "Berlin, Germany" } ], "well_to_tank_co2e": 0.000923607066714, "tank_to_wheel_co2e": 0.00455101699309, "logistics_hubs_co2e": 0.0002133, "notices": [], "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.028439620299, "geographical_representativeness_data_quality_rating": 0.0216124768548, "temporal_representativeness_data_quality_rating": 0.0056879240598 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 3.79971262407, "temporal_representativeness_data_quality_rating": 1 } } }, "component": { "type": "simple", "product": "LED chip", "metadata": { "product_description": "LED Chip from Seoul" }, "weight_kg": 0.045, "location": "Seoul, South Korea, South Korea", "location_country_code": "KR", "production": { "estimate": { "co2e": 0.018, "co2e_unit": "kg", "co2e_calculation_method": "ar4", "co2e_calculation_origin": "source", "emission_factor": { "name": "Chipboard", "activity_id": "timber_forestry-type_chipboard", "id": "2f53adb7-a2ff-444a-9e29-f319a09c828e", "access_type": "public", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": 2025, "region": "DE", "category": "Timber and Forestry Products", "source_lca_activity": "cradle_to_gate", "data_quality_flags": [ "notable_methodological_variance" ] }, "constituent_gases": { "co2e_total": 0.018, "co2e_other": null, "co2": null, "ch4": null, "n2o": null }, "activity_data": { "activity_value": 0.045, "activity_unit": "kg" }, "audit_trail": "enabled" }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.09, "geographical_representativeness_data_quality_rating": 0.09, "temporal_representativeness_data_quality_rating": 0.018 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 5, "temporal_representativeness_data_quality_rating": 1 } }, "calculation_details": { "quality_label": "review" }, "source_trail": [ { "data_category": "emission_factor", "name": "Chipboard", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": "2025", "region": "DE", "region_name": "Germany", "id": "2f53adb7-a2ff-444a-9e29-f319a09c828e" } ] }, "notices": [ { "message": "Estimation was performed using an emission factor from region DE due to data not being available for your region KR.", "code": "emission_factor_region_fallback", "severity": "warning" } ], "waste": null } } ] } } ] }

Composing products with references

This example creates a desk lamp that references the LED assembly created above. By using type: "reference" with the product_id from the previous calculation, you can compose complex products from previously calculated PCFs:

curl --request POST \ --url https://preview.api.climatiq.io/pcf/v1-preview2/estimate \ --header "Authorization: Bearer $CLIMATIQ_API_KEY" \ --data '{ "product": "Electric desk lamp", "location": { "query": "berlin" }, "manufacturing_year": 2025, "manufacturing": [ { "type": "electricity", "amount": { "energy": 2, "energy_unit": "kWh" } } ], "components": [ { "type": "reference", "version_id": "2bc1169f-693c-4cf0-8069-6d5b2e2207d4", "transportation_mode": "sea" }, { "type": "simple", "product": "aluminum base", "production_year": 2025, "weight": { "weight": 0.8, "weight_unit": "kg" }, "location": { "query": "Munich" } }, { "type": "simple", "product": "plastic shade", "production_year": 2025, "weight": { "weight": 0.3, "weight_unit": "kg" }, "location": { "query": "Shenzhen" } } ] }'

The response includes the full cradle-to-gate emissions for the composed product, including the emissions from the referenced LED assembly:

{ "version_id": "df3da149-c578-4113-9ea3-caa1fb3e7bc5", "product_id": "df3da149-c578-4113-9ea3-caa1fb3e7bc5", "product": "Electric desk lamp", "metadata": null, "cradle_to_gate": { "total_co2e_kg": 12.282987107, "co2e_calculation_method": "ipcc_mixed_gwp100", "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 49.6371195075, "geographical_representativeness_data_quality_rating": 48.1963210338, "temporal_representativeness_data_quality_rating": 12.282987107 }, "normalized": { "technological_representativeness_data_quality_rating": 4.04112770575, "geographical_representativeness_data_quality_rating": 3.92382737309, "temporal_representativeness_data_quality_rating": 1 } } }, "location": "Berlin, Germany", "location_country_code": "DE", "manufacturing_year": 2025, "weight_kg": 1.25, "multiplier": null, "manufacturing": { "total_co2e_kg": 1.73846966822, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 3.98122193009, "geographical_representativeness_data_quality_rating": 3.47693933644, "temporal_representativeness_data_quality_rating": 1.73846966822 }, "normalized": { "technological_representativeness_data_quality_rating": 2.29007270179, "geographical_representativeness_data_quality_rating": 2, "temporal_representativeness_data_quality_rating": 1 } }, "breakdown": [ { "type": "electricity", "total_co2e_kg": 1.73846966822, "metadata": null, "details": { "generation": 1.4491283714, "generation_wtt": 0.246351823138, "tnd": 0.0372, "tnd_wtt": 0.00578947368421 }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 3.98122193009, "geographical_representativeness_data_quality_rating": 3.47693933644, "temporal_representativeness_data_quality_rating": 1.73846966822 }, "normalized": { "technological_representativeness_data_quality_rating": 2.29007270179, "geographical_representativeness_data_quality_rating": 2, "temporal_representativeness_data_quality_rating": 1 } }, "notices": [ { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating market well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor. For more accurate market well to tank emissions, explicitly provide an energy source." } ], "source_trail": [ { "data_category": null, "name": "Default well-to-tank ratio of electricity generation emissions", "source": "Climatiq", "source_dataset": null, "year": null, "region": "GLOBAL", "region_name": "Global", "id": null }, { "data_category": "emission_factor", "name": "Electricity supplied from grid", "source": "UBA", "source_dataset": "Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990 - 2024", "year": "2024", "region": "DE", "region_name": "Germany", "id": "39218cb8-1fdc-4cf3-b082-a12ccf9731de" }, { "data_category": "emission_factor", "name": "Electricity supplied from grid", "source": "UBA", "source_dataset": "Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990 - 2024", "year": "2024", "region": "DE", "region_name": "Germany", "id": "aadf9da6-44b4-4a52-bfd2-02e3fb926db4" }, { "data_category": "emission_factor", "name": "Electricity supplied from grid - residual mix", "source": "AIB", "source_dataset": "European Residual Mix", "year": "2024", "region": "DE", "region_name": "Germany", "id": "7c5c4bdc-e220-452d-a5f5-1f5beb9766f5" }, { "data_category": "emission_factor", "name": "Electricity supplied from grid: T&D losses", "source": "UBA", "source_dataset": "Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990 - 2024", "year": "2024", "region": "DE", "region_name": "Germany", "id": "4f2154ef-6278-42c4-82ee-bfde93393601" } ] } ] }, "notices": [ { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating market well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor. For more accurate market well to tank emissions, explicitly provide an energy source." } ], "end_of_life": { "total_co2e_kg": 0.0212935054748, "allocation_method": "cut_off", "breakdown": [ { "total_co2e_kg": 0.0176369809748, "material_type": "aluminum", "total_weight_kg": 0.8, "source_trail": [ { "data_category": "emission_factor", "name": "Aluminum Ingot - Landfilled", "source": "EPA", "source_dataset": "2025 GHG Emission Factors Hub", "year": "2025", "region": "US", "region_name": "United States of America (the)", "id": "24616429-727c-428e-858d-993bb70b3355" } ] }, { "total_co2e_kg": 0.002694933, "material_type": "plastic", "total_weight_kg": 0.3, "source_trail": [ { "data_category": "emission_factor", "name": "Plastics waste disposal (landfill)", "source": "BEIS", "source_dataset": "Greenhouse gas reporting: conversion factors 2025", "year": "2025", "region": "GB", "region_name": "United Kingdom", "id": "57541e5f-14e6-4626-a1db-67c7b5856ee7" } ] }, { "total_co2e_kg": 0.0009615915, "material_type": "wood", "total_weight_kg": 0.15, "source_trail": [ { "data_category": "emission_factor", "name": "Wood waste disposal (combustion)", "source": "BEIS", "source_dataset": "Greenhouse gas reporting: conversion factors 2024", "year": "2024", "region": "GB", "region_name": "United Kingdom", "id": "d1cedaa2-87bb-4525-954b-1a7f6fe94b9b" } ] } ] }, "use_phase": null, "waste": [], "components": [ { "transportation": null, "component": { "type": "reference", "version_id": "2bc1169f-693c-4cf0-8069-6d5b2e2207d4", "product_id": "2bc1169f-693c-4cf0-8069-6d5b2e2207d4", "product": "LED Assembly", "metadata": null, "cradle_to_gate": { "total_co2e_kg": 2.68569347785, "co2e_calculation_method": "ipcc_mixed_gwp100", "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 6.36177777269, "geographical_representativeness_data_quality_rating": 5.58392713158, "temporal_representativeness_data_quality_rating": 2.68569347785 }, "normalized": { "technological_representativeness_data_quality_rating": 2.3687653953, "geographical_representativeness_data_quality_rating": 2.07913791266, "temporal_representativeness_data_quality_rating": 1 } } }, "location": "Berlin, Germany", "location_country_code": "DE", "manufacturing_year": 2025, "weight_kg": 0.15, "multiplier": null, "manufacturing": { "total_co2e_kg": 2.60770450233, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 5.97183289513, "geographical_representativeness_data_quality_rating": 5.21540900467, "temporal_representativeness_data_quality_rating": 2.60770450233 }, "normalized": { "technological_representativeness_data_quality_rating": 2.29007270179, "geographical_representativeness_data_quality_rating": 2, "temporal_representativeness_data_quality_rating": 1 } }, "breakdown": [ { "type": "electricity", "total_co2e_kg": 2.60770450233, "metadata": null, "details": { "generation": 2.1736925571, "generation_wtt": 0.369527734707, "tnd": 0.0558, "tnd_wtt": 0.00868421052632 }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 5.97183289513, "geographical_representativeness_data_quality_rating": 5.21540900467, "temporal_representativeness_data_quality_rating": 2.60770450233 }, "normalized": { "technological_representativeness_data_quality_rating": 2.29007270179, "geographical_representativeness_data_quality_rating": 2, "temporal_representativeness_data_quality_rating": 1 } }, "notices": [ { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating market well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor. For more accurate market well to tank emissions, explicitly provide an energy source." } ], "source_trail": [ { "data_category": null, "name": "Default well-to-tank ratio of electricity generation emissions", "source": "Climatiq", "source_dataset": null, "year": null, "region": "GLOBAL", "region_name": "Global", "id": null }, { "data_category": "emission_factor", "name": "Electricity supplied from grid", "source": "UBA", "source_dataset": "Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990 - 2024", "year": "2024", "region": "DE", "region_name": "Germany", "id": "39218cb8-1fdc-4cf3-b082-a12ccf9731de" }, { "data_category": "emission_factor", "name": "Electricity supplied from grid", "source": "UBA", "source_dataset": "Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990 - 2024", "year": "2024", "region": "DE", "region_name": "Germany", "id": "aadf9da6-44b4-4a52-bfd2-02e3fb926db4" }, { "data_category": "emission_factor", "name": "Electricity supplied from grid - residual mix", "source": "AIB", "source_dataset": "European Residual Mix", "year": "2024", "region": "DE", "region_name": "Germany", "id": "7c5c4bdc-e220-452d-a5f5-1f5beb9766f5" }, { "data_category": "emission_factor", "name": "Electricity supplied from grid: T&D losses", "source": "UBA", "source_dataset": "Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990 - 2024", "year": "2024", "region": "DE", "region_name": "Germany", "id": "4f2154ef-6278-42c4-82ee-bfde93393601" } ] } ] }, "notices": [ { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating market well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor. For more accurate market well to tank emissions, explicitly provide an energy source." } ], "end_of_life": null, "use_phase": null, "waste": [], "components": [ { "transportation": null, "component": { "type": "variations", "variations": [ { "ratio": 0.7, "transportation": { "total_co2e_kg": 0.012301051452, "route": [ { "type": "location", "location": "Taipei City, 110, Taiwan" }, { "type": "leg", "transport_mode": "road", "distance_km": 26.479 }, { "type": "location", "location": "Sea Port at CHI-LUNG" }, { "type": "leg", "transport_mode": "sea", "distance_km": 20480.059695 }, { "type": "location", "location": "Sea Port at SZCZECIN" }, { "type": "leg", "transport_mode": "road", "distance_km": 144.236 }, { "type": "location", "location": "Berlin, Germany" } ], "well_to_tank_co2e": 0.00197833765664, "tank_to_wheel_co2e": 0.00982501379541, "logistics_hubs_co2e": 0.0004977, "notices": [], "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.0615052572602, "geographical_representativeness_data_quality_rating": 0.0469056500606, "temporal_representativeness_data_quality_rating": 0.012301051452 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 3.81314152237, "temporal_representativeness_data_quality_rating": 1 } } }, "component": { "type": "simple", "product": "LED chip", "metadata": { "product_description": "LED Chip from Taipei" }, "weight_kg": 0.105, "location": "Taipei City, 110, Taiwan", "location_country_code": "TW", "production": { "estimate": { "co2e": 0.042, "co2e_unit": "kg", "co2e_calculation_method": "ar4", "co2e_calculation_origin": "source", "emission_factor": { "name": "Chipboard", "activity_id": "timber_forestry-type_chipboard", "id": "2f53adb7-a2ff-444a-9e29-f319a09c828e", "access_type": "public", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": 2025, "region": "DE", "category": "Timber and Forestry Products", "source_lca_activity": "cradle_to_gate", "data_quality_flags": [ "notable_methodological_variance" ] }, "constituent_gases": { "co2e_total": 0.042, "co2e_other": null, "co2": null, "ch4": null, "n2o": null }, "activity_data": { "activity_value": 0.105, "activity_unit": "kg" }, "audit_trail": "enabled" }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.21, "geographical_representativeness_data_quality_rating": 0.21, "temporal_representativeness_data_quality_rating": 0.042 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 5, "temporal_representativeness_data_quality_rating": 1 } }, "calculation_details": { "quality_label": "review" }, "source_trail": [ { "data_category": "emission_factor", "name": "Chipboard", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": "2025", "region": "DE", "region_name": "Germany", "id": "2f53adb7-a2ff-444a-9e29-f319a09c828e" } ] }, "notices": [ { "message": "Estimation was performed using an emission factor from region DE due to data not being available for your region TW.", "code": "emission_factor_region_fallback", "severity": "warning" } ], "waste": null } }, { "ratio": 0.3, "transportation": { "total_co2e_kg": 0.0056879240598, "route": [ { "type": "location", "location": "Seoul, South Korea, South Korea" }, { "type": "leg", "transport_mode": "road", "distance_km": 49.119 }, { "type": "location", "location": "Sea Port at INCHON" }, { "type": "leg", "transport_mode": "sea", "distance_km": 21796.906362 }, { "type": "location", "location": "Sea Port at SZCZECIN" }, { "type": "leg", "transport_mode": "road", "distance_km": 144.236 }, { "type": "location", "location": "Berlin, Germany" } ], "well_to_tank_co2e": 0.000923607066714, "tank_to_wheel_co2e": 0.00455101699309, "logistics_hubs_co2e": 0.0002133, "notices": [], "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.028439620299, "geographical_representativeness_data_quality_rating": 0.0216124768548, "temporal_representativeness_data_quality_rating": 0.0056879240598 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 3.79971262407, "temporal_representativeness_data_quality_rating": 1 } } }, "component": { "type": "simple", "product": "LED chip", "metadata": { "product_description": "LED Chip from Seoul" }, "weight_kg": 0.045, "location": "Seoul, South Korea, South Korea", "location_country_code": "KR", "production": { "estimate": { "co2e": 0.018, "co2e_unit": "kg", "co2e_calculation_method": "ar4", "co2e_calculation_origin": "source", "emission_factor": { "name": "Chipboard", "activity_id": "timber_forestry-type_chipboard", "id": "2f53adb7-a2ff-444a-9e29-f319a09c828e", "access_type": "public", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": 2025, "region": "DE", "category": "Timber and Forestry Products", "source_lca_activity": "cradle_to_gate", "data_quality_flags": [ "notable_methodological_variance" ] }, "constituent_gases": { "co2e_total": 0.018, "co2e_other": null, "co2": null, "ch4": null, "n2o": null }, "activity_data": { "activity_value": 0.045, "activity_unit": "kg" }, "audit_trail": "enabled" }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.09, "geographical_representativeness_data_quality_rating": 0.09, "temporal_representativeness_data_quality_rating": 0.018 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 5, "temporal_representativeness_data_quality_rating": 1 } }, "calculation_details": { "quality_label": "review" }, "source_trail": [ { "data_category": "emission_factor", "name": "Chipboard", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": "2025", "region": "DE", "region_name": "Germany", "id": "2f53adb7-a2ff-444a-9e29-f319a09c828e" } ] }, "notices": [ { "message": "Estimation was performed using an emission factor from region DE due to data not being available for your region KR.", "code": "emission_factor_region_fallback", "severity": "warning" } ], "waste": null } } ] } } ] } }, { "transportation": { "total_co2e_kg": 0.0599169728, "route": [ { "type": "location", "location": "Munich, Bavaria, Germany" }, { "type": "leg", "transport_mode": "road", "distance_km": 583.034 }, { "type": "location", "location": "Berlin, Germany" } ], "well_to_tank_co2e": 0.0135263888, "tank_to_wheel_co2e": 0.044310584, "logistics_hubs_co2e": 0.00208, "notices": [], "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.299584864, "geographical_representativeness_data_quality_rating": 0.1818309184, "temporal_representativeness_data_quality_rating": 0.0599169728 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 3.03471470441, "temporal_representativeness_data_quality_rating": 1 } } }, "component": { "type": "simple", "product": "aluminum base", "metadata": null, "weight_kg": 0.8, "location": "Munich, Bavaria, Germany", "location_country_code": "DE", "production": { "estimate": { "co2e": 6.6552004432, "co2e_unit": "kg", "co2e_calculation_method": "ar4", "co2e_calculation_origin": "source", "emission_factor": { "name": "Aluminium", "activity_id": "metals-type_aluminium", "id": "154d3baf-ded1-41f9-9c9a-a66b8c6bf1ae", "access_type": "public", "source": "Circular Ecology", "source_dataset": "ICE Database v4", "year": 2024, "region": "EU_S_AMERICA", "category": "Metals", "source_lca_activity": "cradle_to_gate", "data_quality_flags": [ "notable_methodological_variance" ] }, "constituent_gases": { "co2e_total": 6.6552004432, "co2e_other": null, "co2": null, "ch4": null, "n2o": null }, "activity_data": { "activity_value": 0.8, "activity_unit": "kg" }, "audit_trail": "enabled" }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 33.276002216, "geographical_representativeness_data_quality_rating": 33.276002216, "temporal_representativeness_data_quality_rating": 6.6552004432 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 5, "temporal_representativeness_data_quality_rating": 1 } }, "calculation_details": { "quality_label": "accept" }, "source_trail": [ { "data_category": "emission_factor", "name": "Aluminium", "source": "Circular Ecology", "source_dataset": "ICE Database v4", "year": "2024", "region": "EU_S_AMERICA", "region_name": "Europe and South America", "id": "154d3baf-ded1-41f9-9c9a-a66b8c6bf1ae" } ] }, "notices": [ { "message": "Estimation was performed using an emission factor from region EU_S_AMERICA due to data not being available for your region DE.", "code": "emission_factor_region_fallback", "severity": "warning" } ], "waste": null } }, { "transportation": { "total_co2e_kg": 0.0337065449528, "route": [ { "type": "location", "location": "Shenzhen, China" }, { "type": "leg", "transport_mode": "road", "distance_km": 20.12 }, { "type": "location", "location": "Sea Port at YANTIAN" }, { "type": "leg", "transport_mode": "sea", "distance_km": 19607.376435 }, { "type": "location", "location": "Sea Port at SZCZECIN" }, { "type": "leg", "transport_mode": "road", "distance_km": 144.236 }, { "type": "location", "location": "Berlin, Germany" } ], "well_to_tank_co2e": 0.00541021386344, "tank_to_wheel_co2e": 0.0268743310894, "logistics_hubs_co2e": 0.001422, "notices": [], "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.168532724764, "geographical_representativeness_data_quality_rating": 0.127621431411, "temporal_representativeness_data_quality_rating": 0.0337065449528 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 3.78625075901, "temporal_representativeness_data_quality_rating": 1 } } }, "component": { "type": "simple", "product": "plastic shade", "metadata": null, "weight_kg": 0.3, "location": "Shenzhen, China", "location_country_code": "CN", "production": { "estimate": { "co2e": 1.11, "co2e_unit": "kg", "co2e_calculation_method": "ar4", "co2e_calculation_origin": "source", "emission_factor": { "name": "Plastics", "activity_id": "plastics_rubber-type_plastics", "id": "3145e681-1309-47f0-bd8a-bc41e6009704", "access_type": "public", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": 2025, "region": "DE", "category": "Plastics and Rubber Products", "source_lca_activity": "cradle_to_gate", "data_quality_flags": [ "notable_methodological_variance" ] }, "constituent_gases": { "co2e_total": 1.11, "co2e_other": null, "co2": null, "ch4": null, "n2o": null }, "activity_data": { "activity_value": 0.3, "activity_unit": "kg" }, "audit_trail": "enabled" }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 5.55, "geographical_representativeness_data_quality_rating": 5.55, "temporal_representativeness_data_quality_rating": 1.11 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 5, "temporal_representativeness_data_quality_rating": 1 } }, "calculation_details": { "quality_label": "accept" }, "source_trail": [ { "data_category": "emission_factor", "name": "Plastics", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": "2025", "region": "DE", "region_name": "Germany", "id": "3145e681-1309-47f0-bd8a-bc41e6009704" } ] }, "notices": [ { "message": "Estimation was performed using an emission factor from region DE due to data not being available for your region CN.", "code": "emission_factor_region_fallback", "severity": "warning" } ], "waste": null } } ] }

Accounting for manufacturing waste

This example shows how to account for material waste during manufacturing using the waste_ratio parameter. In this case, 25% of the polypropylene pellets are wasted during the molding process:

curl --request POST \ --url https://preview.api.climatiq.io/pcf/v1-preview2/estimate \ --header "Authorization: Bearer $CLIMATIQ_API_KEY" \ --data '{ "product": "Molded plastic shade", "location": { "query": "Shenzhen" }, "manufacturing_year": 2025, "manufacturing": [ { "type": "electricity", "amount": { "energy": 2, "energy_unit": "kWh" } } ], "components": [ { "type": "simple", "product": "polypropylene pellets", "production_year": 2025, "weight": { "weight": 0.4, "weight_unit": "kg" }, "location": { "query": "Shanghai" }, "waste_ratio": 0.25 } ] }'

The response includes both the end-of-life emissions for the finished product and the manufacturing waste emissions in a separate waste array:

{ "version_id": "80e90beb-18de-4e0c-905e-a59b43442de7", "product_id": "80e90beb-18de-4e0c-905e-a59b43442de7", "product": "Molded plastic shade", "metadata": null, "cradle_to_gate": { "total_co2e_kg": 2.18405138038, "co2e_calculation_method": "ipcc_mixed_gwp100", "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 7.06517902688, "geographical_representativeness_data_quality_rating": 6.64005904871, "temporal_representativeness_data_quality_rating": 6.44673602938 }, "normalized": { "technological_representativeness_data_quality_rating": 3.23622705434, "geographical_representativeness_data_quality_rating": 3.04149953654, "temporal_representativeness_data_quality_rating": 2.952947331 } } }, "location": "Shenzhen, China", "location_country_code": "CN", "manufacturing_year": 2025, "weight_kg": 0.3, "multiplier": null, "manufacturing": { "total_co2e_kg": 1.42119432, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 3.25538528, "geographical_representativeness_data_quality_rating": 2.84238864, "temporal_representativeness_data_quality_rating": 5.68477728 }, "normalized": { "technological_representativeness_data_quality_rating": 2.2905982906, "geographical_representativeness_data_quality_rating": 2, "temporal_representativeness_data_quality_rating": 4 } }, "breakdown": [ { "type": "electricity", "total_co2e_kg": 1.42119432, "metadata": null, "details": { "generation": 1.1144, "generation_wtt": 0.189448, "tnd": 0.100296, "tnd_wtt": 0.01705032 }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 3.25538528, "geographical_representativeness_data_quality_rating": 2.84238864, "temporal_representativeness_data_quality_rating": 5.68477728 }, "normalized": { "technological_representativeness_data_quality_rating": 2.2905982906, "geographical_representativeness_data_quality_rating": 2, "temporal_representativeness_data_quality_rating": 4 } }, "notices": [ { "severity": "warning", "code": "supplier_mix_used_for_residual", "message": "Unable to find a residual mix factor for the requested region, the supplier mix will be used instead, this will likely result in underestimating this portion of the energy usage" }, { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating market well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor. For more accurate market well to tank emissions, explicitly provide an energy source." }, { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating location well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor for this region." } ], "source_trail": [ { "data_category": null, "name": "Default transmission & distribution loss factor for grid electricity", "source": "Climatiq", "source_dataset": null, "year": null, "region": "GLOBAL", "region_name": "Global", "id": null }, { "data_category": null, "name": "Default well-to-tank ratio of electricity generation emissions", "source": "Climatiq", "source_dataset": null, "year": null, "region": "GLOBAL", "region_name": "Global", "id": null }, { "data_category": "emission_factor", "name": "Electricity supplied from grid", "source": "CT", "source_dataset": "Climate Transparency Report", "year": "2021", "region": "CN", "region_name": "China", "id": "19f28a64-a761-4b68-a6b8-65977c67c4bf" } ] } ] }, "notices": [ { "severity": "warning", "code": "supplier_mix_used_for_residual", "message": "Unable to find a residual mix factor for the requested region, the supplier mix will be used instead, this will likely result in underestimating this portion of the energy usage" }, { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating market well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor. For more accurate market well to tank emissions, explicitly provide an energy source." }, { "severity": "warning", "code": "global_default_wtt_used", "message": "Calculating location well to tank emissions using a global average proportion of generation emissions, due to absence of an applicable emissions factor for this region." } ], "end_of_life": { "total_co2e_kg": 0.002694933, "allocation_method": "cut_off", "breakdown": [ { "total_co2e_kg": 0.002694933, "material_type": "plastic_pp", "total_weight_kg": 0.3, "source_trail": [ { "data_category": "emission_factor", "name": "Plastics waste disposal (landfill)", "source": "BEIS", "source_dataset": "Greenhouse gas reporting: conversion factors 2025", "year": "2025", "region": "GB", "region_name": "United Kingdom", "id": "57541e5f-14e6-4626-a1db-67c7b5856ee7" } ] } ] }, "use_phase": null, "waste": [ { "total_co2e_kg": 0.000898311, "material_type": "plastic_pp", "total_weight_kg": 0.1, "source_trail": [ { "data_category": "emission_factor", "name": "Plastics waste disposal (landfill)", "source": "BEIS", "source_dataset": "Greenhouse gas reporting: conversion factors 2025", "year": "2025", "region": "GB", "region_name": "United Kingdom", "id": "57541e5f-14e6-4626-a1db-67c7b5856ee7" } ] } ], "components": [ { "transportation": { "total_co2e_kg": 0.00995874937688, "route": [ { "type": "location", "location": "Sea Port at SHANGHAI" }, { "type": "leg", "transport_mode": "sea", "distance_km": 1631.95278 }, { "type": "location", "location": "Sea Port at YANTIAN" }, { "type": "leg", "transport_mode": "road", "distance_km": 17.76 }, { "type": "location", "location": "Shenzhen, China" } ], "well_to_tank_co2e": 0.00138803113488, "tank_to_wheel_co2e": 0.007194718242, "logistics_hubs_co2e": 0.001376, "notices": [], "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.0497937468844, "geographical_representativeness_data_quality_rating": 0.0376704087075, "temporal_representativeness_data_quality_rating": 0.00995874937688 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 3.78264451508, "temporal_representativeness_data_quality_rating": 1 } } }, "component": { "type": "simple", "product": "polypropylene pellets", "metadata": null, "weight_kg": 0.4, "location": "Shanghai, China", "location_country_code": "CN", "production": { "estimate": { "co2e": 0.752, "co2e_unit": "kg", "co2e_calculation_method": "ar4", "co2e_calculation_origin": "source", "emission_factor": { "name": "Polypropylene (PP)", "activity_id": "plastics_rubber-type_polypropelene", "id": "b899130e-d3fa-4d2d-a016-354335a4a5e9", "access_type": "public", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": 2025, "region": "DE", "category": "Plastics and Rubber Products", "source_lca_activity": "cradle_to_gate", "data_quality_flags": [ "notable_methodological_variance" ] }, "constituent_gases": { "co2e_total": 0.752, "co2e_other": null, "co2": null, "ch4": null, "n2o": null }, "activity_data": { "activity_value": 0.4, "activity_unit": "kg" }, "audit_trail": "enabled" }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 3.76, "geographical_representativeness_data_quality_rating": 3.76, "temporal_representativeness_data_quality_rating": 0.752 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 5, "temporal_representativeness_data_quality_rating": 1 } }, "calculation_details": { "quality_label": "accept" }, "source_trail": [ { "data_category": "emission_factor", "name": "Polypropylene (PP)", "source": "Bafa", "source_dataset": "Informationsblatt CO2-Faktoren v3.3", "year": "2025", "region": "DE", "region_name": "Germany", "id": "b899130e-d3fa-4d2d-a016-354335a4a5e9" } ] }, "notices": [ { "message": "Estimation was performed using an emission factor from region DE due to data not being available for your region CN.", "code": "emission_factor_region_fallback", "severity": "warning" } ], "waste": { "total_co2e_kg": 0.000898311, "material_type": "plastic_pp", "total_weight_kg": 0.1, "source_trail": [ { "data_category": "emission_factor", "name": "Plastics waste disposal (landfill)", "source": "BEIS", "source_dataset": "Greenhouse gas reporting: conversion factors 2025", "year": "2025", "region": "GB", "region_name": "United Kingdom", "id": "57541e5f-14e6-4626-a1db-67c7b5856ee7" } ] } } } ] }

Manufacturing emissions with emission factor

In this example, the manufacturing contains an emission factor for fugitive gases released in the process. Note the selector for the emission factor and the response component associated with it.

{ "version_id": "19ff5d16-03e7-4c93-959b-ac6ae44abd06", "product_id": "19ff5d16-03e7-4c93-959b-ac6ae44abd06", "product": "Refrigerator", "metadata": null, "cradle_to_gate": { "total_co2e_kg": 1997.39389677, "co2e_calculation_method": "ipcc_mixed_gwp100", "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 9986.96948385, "geographical_representativeness_data_quality_rating": 7997.82229142, "temporal_representativeness_data_quality_rating": 7964.39389677 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 4.00412873212, "temporal_representativeness_data_quality_rating": 3.98739272692 } } }, "location": "Berlin, Germany", "location_country_code": "DE", "manufacturing_year": 2025, "weight_kg": 1, "multiplier": null, "manufacturing": { "total_co2e_kg": 1989, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 9945, "geographical_representativeness_data_quality_rating": 7956, "temporal_representativeness_data_quality_rating": 7956 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 4, "temporal_representativeness_data_quality_rating": 4 } }, "breakdown": [ { "type": "emission_factor", "total_co2e_kg": 1989, "metadata": null, "details": { "co2e": 1989, "co2e_unit": "kg", "co2e_calculation_method": "ar6", "co2e_calculation_origin": "source", "emission_factor": { "name": "R-134a / HFC-134a (1.1.1.2-tetrafluoroethane)", "activity_id": "fugitive_gas-type_hfc_134a", "id": "eb336004-c64a-4935-8b66-21e6cbd624c9", "access_type": "public", "source": "GHG Protocol", "source_dataset": "IPCC Global Warming Potential Values", "year": 2021, "region": "GLOBAL", "category": "Refrigerants and Fugitive Gases", "source_lca_activity": "fugitive_release", "data_quality_flags": [] }, "constituent_gases": { "co2e_total": 1989, "co2e_other": 1989, "co2": 0, "ch4": 0, "n2o": 0 }, "activity_data": { "activity_value": 1.3, "activity_unit": "kg" }, "audit_trail": "selector" }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 9945, "geographical_representativeness_data_quality_rating": 7956, "temporal_representativeness_data_quality_rating": 7956 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 4, "temporal_representativeness_data_quality_rating": 4 } }, "notices": [], "source_trail": [ { "data_category": "emission_factor", "name": "R-134a / HFC-134a (1.1.1.2-tetrafluoroethane)", "source": "GHG Protocol", "source_dataset": "IPCC Global Warming Potential Values", "year": "2021", "region": "GLOBAL", "region_name": "Global", "id": "eb336004-c64a-4935-8b66-21e6cbd624c9" } ] } ] }, "notices": [], "end_of_life": { "total_co2e_kg": 0.0220462262185, "allocation_method": "cut_off", "breakdown": [ { "total_co2e_kg": 0.0220462262185, "material_type": "aluminum", "total_weight_kg": 1, "source_trail": [ { "data_category": "emission_factor", "name": "Aluminum Ingot - Landfilled", "source": "EPA", "source_dataset": "2025 GHG Emission Factors Hub", "year": "2025", "region": "US", "region_name": "United States of America (the)", "id": "24616429-727c-428e-858d-993bb70b3355" } ] } ] }, "use_phase": null, "waste": [], "components": [ { "transportation": { "total_co2e_kg": 0.074896216, "route": [ { "type": "location", "location": "Munich, Bavaria, Germany" }, { "type": "leg", "transport_mode": "road", "distance_km": 583.034 }, { "type": "location", "location": "Berlin, Germany" } ], "well_to_tank_co2e": 0.016907986, "tank_to_wheel_co2e": 0.05538823, "logistics_hubs_co2e": 0.0026, "notices": [], "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 0.37448108, "geographical_representativeness_data_quality_rating": 0.227288648, "temporal_representativeness_data_quality_rating": 0.074896216 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 3.03471470441, "temporal_representativeness_data_quality_rating": 1 } } }, "component": { "type": "simple", "product": "aluminum", "metadata": null, "weight_kg": 1, "location": "Munich, Bavaria, Germany", "location_country_code": "DE", "production": { "estimate": { "co2e": 8.319000554, "co2e_unit": "kg", "co2e_calculation_method": "ar4", "co2e_calculation_origin": "source", "emission_factor": { "name": "Aluminium", "activity_id": "metals-type_aluminium", "id": "154d3baf-ded1-41f9-9c9a-a66b8c6bf1ae", "access_type": "public", "source": "Circular Ecology", "source_dataset": "ICE Database v4", "year": 2024, "region": "EU_S_AMERICA", "category": "Metals", "source_lca_activity": "cradle_to_gate", "data_quality_flags": [ "notable_methodological_variance" ] }, "constituent_gases": { "co2e_total": 8.319000554, "co2e_other": null, "co2": null, "ch4": null, "n2o": null }, "activity_data": { "activity_value": 1, "activity_unit": "kg" }, "audit_trail": "enabled" }, "data_quality": { "scaled": { "technological_representativeness_data_quality_rating": 41.59500277, "geographical_representativeness_data_quality_rating": 41.59500277, "temporal_representativeness_data_quality_rating": 8.319000554 }, "normalized": { "technological_representativeness_data_quality_rating": 5, "geographical_representativeness_data_quality_rating": 5, "temporal_representativeness_data_quality_rating": 1 } }, "calculation_details": { "quality_label": "accept" }, "source_trail": [ { "data_category": "emission_factor", "name": "Aluminium", "source": "Circular Ecology", "source_dataset": "ICE Database v4", "year": "2024", "region": "EU_S_AMERICA", "region_name": "Europe and South America", "id": "154d3baf-ded1-41f9-9c9a-a66b8c6bf1ae" } ] }, "notices": [ { "message": "Estimation was performed using an emission factor from region EU_S_AMERICA due to data not being available for your region DE.", "code": "emission_factor_region_fallback", "severity": "warning" } ], "waste": null } } ] }
Last updated on