---
title: "The offset and removal catalog"
method: GET
path: "/v1/offset-products"
tags: ["Offsets"]
---

# The offset and removal catalog

`GET /v1/offset-products`

## Request

- Base URL: `https://carbonguru.io`
- URL: `https://carbonguru.io/v1/offset-products`
- Auth: HTTP bearer

Reference data, unmetered, scope carbon:reference — the one route in this group that is not carbon:commerce. The whole catalog comes back in one answer; the shipped route pages nothing. No prices: quote a stated quantity with POST /v1/offsets/quote.

## Response `200`

Every product an account can buy.

- object
  - `products` object[], required
    - `product_id` string, nullable
    - `name` string, nullable
    - `description` string, nullable
    - `type` 'offset' | 'removal' | 'null', nullable
    - `provider` string, nullable
    - `min_qty_tons` number, nullable
    - `unit` 'kg' | 'tonne' | 'null', nullable: The unit the product is bought in. A purchase rounds up to a whole number of units.
    - `unit_kg` number, nullable: The unit in kilograms: 1 or 1000.
    - `min_quantity_kg` number, nullable: The smallest purchase: one unit.
    - `is_portfolio` boolean, nullable
    - `delivery_year` number, nullable
    - `url` string, nullable
    - `pathways` object[]
  - `count` integer, required

## Other responses

- `401`: No valid credential. Every authentication failure returns this one document.
- `402`: The account's plan does not include this capability. Carries min_tier and upgrade_url.
- `403`: A missing scope, an exhausted analysis allowance, or an object that is not the caller's.
- `404`: No such resource.

---

[API](https://skmtc.dev/carbonguru/apis/carbonguru-api.md) · [All operations](https://skmtc.dev/carbonguru/apis/carbonguru-api/llms.txt) · [OpenAPI document](https://skmtc.dev/carbonguru/apis/carbonguru-api/revisions/26dcbe7a8500?raw)
