---
title: "Add a contractual instrument to an active site"
method: POST
path: "/sites/{siteId}/energy-instruments"
tags: ["Sites"]
---

# Add a contractual instrument to an active site

`POST /sites/{siteId}/energy-instruments`

A PPA, green tariff, unbundled certificates or the default grid over a period, for the whole site or one of its supply_point matchers. Requires org.write_data.

## Path parameters

- `siteId` string, required

## Request body

- EnergyInstrumentInput
  - `certificateScheme` '' | 'GO' | 'REGO' | 'REC' | 'I-REC' | 'other', required
  - `certifiedKwh` number, double, nullable, required — Low-carbon kWh the instrument certifies; always null for default_grid.
  - `evidenceUrl` string, required
  - `lowCarbonShare` number, double, nullable, required — The supplier's fuel mix, as the low-carbon share of its generation.
  - `note` string, required
  - `periodEnd` string, date, required — The day after the last day covered.
  - `periodStart` string, date, required
  - `supplierKgCo2ePerKwh` number, double, nullable, required — The supplier-specific emission rate.
  - `supplierName` string, required
  - `supplyPoint` string, required — Normalized value of one of the site's supply_point matchers; empty for the whole site.
  - `type` 'ppa' | 'green_tariff' | 'unbundled_eac' | 'default_grid', required

## Response `201`

Created instrument

- EnergyInstrumentResponse
  - `data` EnergyInstrument, required
    - `certificateScheme` '' | 'GO' | 'REGO' | 'REC' | 'I-REC' | 'other', required
    - `certifiedKwh` number, double, nullable, required — Low-carbon kWh the instrument certifies; always null for default_grid.
    - `evidenceUrl` string, required
    - `lowCarbonShare` number, double, nullable, required — The supplier's fuel mix, as the low-carbon share of its generation.
    - `note` string, required
    - `periodEnd` string, date, required — The day after the last day covered.
    - `periodStart` string, date, required
    - `supplierKgCo2ePerKwh` number, double, nullable, required — The supplier-specific emission rate.
    - `supplierName` string, required
    - `supplyPoint` string, required — Normalized value of one of the site's supply_point matchers; empty for the whole site.
    - `type` 'ppa' | 'green_tariff' | 'unbundled_eac' | 'default_grid', required
    - `createdAt` string, date-time, required
    - `id` string, required
    - `siteId` string, required
    - `source` 'manual' | 'supplier_portal', required
    - `suppliedBy` string, required — The user who typed it in, or the supplier's contact through the supplier portal.
    - `updatedAt` string, date-time, required
    - `updatedBy` string, required

## Other responses

- `400` — VALIDATION_ERROR; UNKNOWN_SUPPLY_POINT: the supply point is not one of the site's supply_point matchers
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

## Changes

- **2026-10-02** `766c2a40e369` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/sites/:siteId/energy-instruments/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.dev/greentally/apis/esgai-api/revisions/4189686230ca?raw)
