---
title: "Confirm an immutable annual emissions baseline"
method: POST
path: "/net-zero/baselines"
---

# Confirm an immutable annual emissions baseline

`POST /net-zero/baselines`

## Request body

- NetZeroBaselineConfirmationRequest
  - `manualReplacements` NetZeroManualScopeReplacement[]
    - `justification` string, required
    - `replacementKgCo2e` number, double, required
    - `scope` integer, required
    - `sourceType` 'external_report' | 'manual_adjustment'
  - `periodEnd` string, date, required
  - `periodStart` string, date, required

## Response `201`

Confirmed baseline

- NetZeroBaselineResponse
  - `data` NetZeroBaseline, required
    - `calculationVersion` 'inventory-preview/v1', required
    - `confirmedAt` string, date-time, required
    - `confirmedBy` string, required
    - `dataCutoffAt` string, date-time, required
    - `id` string, uuid, required
    - `periodEnd` string, date, required
    - `periodStart` string, date, required
    - `snapshot` NetZeroBaselineSnapshot, required
      - `calculatedPreview` NetZeroInventoryPreview, required
        - `calculationVersion` 'inventory-preview/v1', required
        - `diagnostics` NetZeroInventoryDiagnostics, required
          - `crossBoundaryRowCount` integer, required
          - `excludedNonCarbonRowCount` integer, required
          - `includedEmissionRowCount` integer, required
          - `missingScopeRowCount` integer, required
          - `unsupportedUnitRowCount` integer, required
        - `periodEnd` string, date, required
        - `periodStart` string, date, required
        - `scopes` NetZeroScopePreview[], required
          - `emissionRowCount` integer, required
          - `measuredKgCo2e` number, double, nullable, required
          - `monthsWithData` integer, required
          - `observedData` 'none' | 'some' | 'all_months', required
          - `scope` integer, required
      - `manualReplacements` NetZeroManualScopeReplacement[], required
        - `justification` string, required
        - `replacementKgCo2e` number, double, required
        - `scope` integer, required
        - `sourceType` 'external_report' | 'manual_adjustment'
    - `supersedesId` string, uuid, nullable, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden

## Changes

- **2026-09-02** `4fccdcaa5e57` — 2 info
  - added the new optional request property `manualReplacements/items/sourceType`
  - added the optional property `data/snapshot/manualReplacements/items/sourceType` to the response with the `201` status

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/net-zero/baselines/post.md)

---

[API](https://skmtc.dev/greentally/apis/esgai-api.md) · [All operations](https://skmtc.dev/greentally/apis/esgai-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/greentally/esgai-api/revisions/4fccdcaa5e57/schema)
