Skip to content

Emissions Projections

Project future emissions trajectories for equity assets using historical data or reduction targets.

Endpoint

POST https://app.emmi.io/api/v1/emissions-projections

Authentication

Required. Include your API key in the X-API-Key header.

Overview

The emissions projections endpoint forecasts future emissions trajectories based on either historical patterns or defined reduction targets. The API supports:

  • Asset types: Equity only
  • Two projection methods: Monte Carlo simulation or linear glide path to targets
  • Multi-year forecasting: Project emissions across multiple future years
  • Batch processing: Submit multiple entities in a single request

Request Structure

See Data Models for complete documentation of entity_info, emissions, and financials fields.

Method 1: Monte Carlo (Historical Forecasting)

Use historical emissions data to forecast future trajectories using Monte Carlo simulation.

Requirements: - At least 3 years of historical emissions data per scope

Example Request

[
  {
    "entity_info": {
      "identifier": "TECH",
      "name": "TechCorp Inc",
      "asset_type": "equity",
      "country": "United States",
      "industry_classification_system": "rbics",
      "industry": "Technology",
      "sector": "Software & Services"
    },
    "data": [
      {
        "year": 2023,
        "emissions": {
          "scope1": 25000,
          "scope2": 15000,
          "scope3": 60000
        }
      },
      {
        "year": 2022,
        "emissions": {
          "scope1": 23000,
          "scope2": 14000,
          "scope3": 55000
        }
      },
      {
        "year": 2021,
        "emissions": {
          "scope1": 22000,
          "scope2": 14000,
          "scope3": 59000
        }
      }
    ],
    "projection_years": [2024, 2025, 2026, 2027, 2028, 2029, 2030],
    "method": "monte_carlo"
  }
]

Method 2: Linear Glide Path (Target-Based)

Project emissions based on defined reduction targets using a linear pathway from baseline to target.

Requirements: - One or more reduction targets - Historical emissions data for one or more years

Notes: - You can provide multiple years of emissions data - The API will use the year closest to each target's baseline_year - If your target baseline is 2020 but you only have 2023 data, the API will use 2023 - This flexibility is helpful when you have multiple targets with different baseline years

Scope-specific behavior: - Scopes with targets: Returns linear glide path from baseline to target - Scopes without targets: Returns linear emissions trajectory based on historical trend - Scopes with no emissions or targets: Omitted from response entirely

Example Request

[
  {
    "entity_info": {
      "name": "Manufacturing Corp",
      "asset_type": "equity",
      "country": "United States",
      "industry_classification_system": "rbics",
      "industry": "Manufacturing",
      "sector": "Industrial"
    },
    "data": [
      {
        "year": 2023,
        "emissions": {
          "scope1": 100000,
          "scope2": 60000,
          "scope3": 250000
        }
      },
      {
        "year": 2022,
        "emissions": {
          "scope1": 105000,
          "scope2": 62000,
          "scope3": 260000
        }
      },
      {
        "year": 2021,
        "emissions": {
          "scope1": 110000,
          "scope2": 65000,
          "scope3": 270000
        }
      }
    ],
    "targets": [
      {
        "target_scope": "scope1",
        "reduction_percentage": 50,
        "target_year": 2030,
        "baseline_year": 2023
      },
      {
        "target_scope": "scope2",
        "reduction_percentage": 60,
        "target_year": 2030,
        "baseline_year": 2023
      },
      {
        "target_scope": "scope3",
        "reduction_percentage": 40,
        "target_year": 2050,
        "baseline_year": 2023
      }
    ],
    "projection_years": [2025, 2030, 2040, 2050],
    "method": "linear_glide_path"
  }
]

Method 3: Combined Methods

You can request both Monte Carlo and linear glide path projections simultaneously by providing both sufficient historical data (3+ years) and targets.

Example Request

[
  {
    "entity_info": {
      "name": "Energy Company",
      "asset_type": "equity",
      "country": "United States",
      "industry_classification_system": "rbics",
      "industry": "Energy",
      "sector": "Oil & Gas"
    },
    "data": [
      {
        "year": 2023,
        "emissions": {
          "scope1": 500000,
          "scope2": 300000,
          "scope3": 1000000
        }
      },
      {
        "year": 2022,
        "emissions": {
          "scope1": 520000,
          "scope2": 310000,
          "scope3": 1050000
        }
      },
      {
        "year": 2021,
        "emissions": {
          "scope1": 540000,
          "scope2": 320000,
          "scope3": 1100000
        }
      }
    ],
    "targets": [
      {
        "target_scope": "scope1",
        "reduction_percentage": 50,
        "target_year": 2030,
        "baseline_year": 2023
      },
      {
        "target_scope": "scope1",
        "reduction_percentage": 50,
        "target_year": 2050,
        "baseline_year": 2023
      },
      {
        "target_scope": "scope2",
        "reduction_percentage": 60,
        "target_year": 2030,
        "baseline_year": 2023
      },
      {
        "target_scope": "scope3",
        "reduction_percentage": 40,
        "target_year": 2050,
        "baseline_year": 2022
      }
    ],
    "projection_years": [2025, 2030, 2035, 2040, 2050],
    "method": ["monte_carlo", "linear_glide_path"]
  }
]

Combined Response

When both methods are requested, the response includes projections from each method:

{
  "results": [
    {
      "entity_info": {
        "name": "Energy Company",
        "asset_type": "equity",
        "country": "United States",
        "industry_classification_system": "rbics",
        "industry": "Energy",
        "sector": "Oil & Gas"
      },
      "data": [
        {
          "method": "monte_carlo",
          "projections": [
            {
              "year": "2025",
              "emissions": {
                "scope1": 510000,
                "scope1_std": 28000,
                "scope2": 305000,
                "scope2_std": 18000,
                "scope3": 980000,
                "scope3_std": 65000
              }
            },
            {
              "year": "2030",
              "emissions": {
                "scope1": 480000,
                "scope1_std": 35000,
                "scope2": 290000,
                "scope2_std": 22000,
                "scope3": 950000,
                "scope3_std": 75000
              }
            },
            {
              "year": "2035",
              "emissions": {
                "scope1": 465000,
                "scope1_std": 42000,
                "scope2": 280000,
                "scope2_std": 26000,
                "scope3": 925000,
                "scope3_std": 85000
              }
            },
            {
              "year": "2040",
              "emissions": {
                "scope1": 450000,
                "scope1_std": 48000,
                "scope2": 270000,
                "scope2_std": 30000,
                "scope3": 900000,
                "scope3_std": 95000
              }
            },
            {
              "year": "2050",
              "emissions": {
                "scope1": 420000,
                "scope1_std": 58000,
                "scope2": 250000,
                "scope2_std": 38000,
                "scope3": 850000,
                "scope3_std": 110000
              }
            }
          ]
        },
        {
          "method": "linear_glide_path",
          "projections": [
            {
              "year": "2025",
              "emissions": {
                "scope1": 375000,
                "scope2": 225000,
                "scope3": 750000
              }
            },
            {
              "year": "2030",
              "emissions": {
                "scope1": 250000,
                "scope2": 150000,
                "scope3": 500000
              }
            },
            {
              "year": "2035",
              "emissions": {
                "scope1": 187500,
                "scope2": 112500,
                "scope3": 450000
              }
            },
            {
              "year": "2040",
              "emissions": {
                "scope1": 125000,
                "scope2": 75000,
                "scope3": 400000
              }
            },
            {
              "year": "2050",
              "emissions": {
                "scope1": 50000,
                "scope2": 30000,
                "scope3": 300000
              }
            }
          ]
        }
      ]
    }
  ]
}

Notes: - Monte Carlo projections show probabilistic forecasts based on historical trends - Linear glide path projections show the pathway needed to meet stated targets - Comparing both methods helps assess the feasibility of targets against historical performance

Endpoint-Specific Fields

method (Required)

String or array indicating which projection method(s) to use. You can request a single method or both methods simultaneously.

Available Methods:

Method ID Description Data Requirements
monte_carlo Monte Carlo simulation for probabilistic forecasting At least 3 years of emissions history per scope
linear_glide_path Linear reduction from baseline to target Targets array

Notes: - When both methods are requested, the response will include projections from each method - Both methods can use the same historical data if sufficient years are provided

projection_years (Required)

Array of integer years for which to project emissions.

Requirements: - Years must be in the future (later than the most recent historical year provided) - Typical forecast horizons range from 5-10 years for Monte Carlo - For linear glide path, should include target years and intermediate milestones

Example:

"projection_years": [2024, 2025, 2026, 2027, 2028, 2029, 2030]

targets (Required for linear_glide_path only)

Array of emissions reduction targets. Each target specifies the scope, reduction percentage, target year, and baseline year.

Target Object Fields:

Field Type Required Description
target_scope string Yes Emissions scope: "scope1", "scope2", "scope3", or "total"
reduction_percentage number Yes Percentage reduction target (0-100)
target_year integer Yes Year to achieve the target
baseline_year integer Yes Baseline year for calculating reductions

Example:

"targets": [
  {
    "target_scope": "scope1",
    "reduction_percentage": 50,
    "target_year": 2030,
    "baseline_year": 2023
  },
  {
    "target_scope": "total",
    "reduction_percentage": 90,
    "target_year": 2050,
    "baseline_year": 2023
  }
]

Notes: - Multiple targets can be specified for different scopes - 100% reduction represents net-zero for that scope - The baseline_year doesn't need to exactly match a provided data year - the API will use the closest available year - This flexibility is helpful when targets use different baseline years (e.g., 2019, 2020, 2022) but you only have data for 2023 - Target years should be included in projection_years

Response Format

Success Response (200 OK)

The response structure varies slightly by method:

Monte Carlo Response

{
  "results": [
    {
      "entity_info": {
        "name": "TechCorp Inc",
        "asset_type": "equity",
        "country": "United States",
        "industry_classification_system": "rbics",
        "industry": "Technology",
        "sector": "Software & Services"
      },
      "data": [
        {
          "method": "monte_carlo",
          "projections": [
            {
              "year": "2030",
              "emissions": {
                "scope1": 26000,
                "scope1_std": 2200,
                "scope2": 16000,
                "scope2_std": 1400,
                "scope3": 62000,
                "scope3_std": 5500
              }
            },
            {
              "year": "2035",
              "emissions": {
                "scope1": 27500,
                "scope1_std": 2300,
                "scope2": 17000,
                "scope2_std": 1900,
                "scope3": 65000,
                "scope3_std": 7000
              }
            }
          ]
        }
      ]
    }
  ]
}

Monte Carlo Response Fields: - scope1, scope2, scope3: Mean projected emissions - scope1_std, scope2_std, scope3_std: Standard deviation showing uncertainty range

Linear Glide Path Response

{
  "results": [
    {
      "entity_info": {
        "name": "Manufacturing Corp",
        "asset_type": "equity",
        "country": "United States",
        "industry_classification_system": "rbics",
        "industry": "Manufacturing",
        "sector": "Industrial"
      },
      "data": [
        {
          "method": "linear_glide_path",
          "projections": [
            {
              "year": "2025",
              "emissions": {
                "scope1": 92500,
                "scope2": 55000,
                "scope3": 240000
              }
            },
            {
              "year": "2030",
              "emissions": {
                "scope1": 50000,
                "scope2": 24000,
                "scope3": 150000
              }
            }
          ]
        }
      ]
    }
  ]
}