Retire Carbon

Use the Carbonmark API to create retirement quotes, submit retirement orders, and confirm completion with a retirement receipt.

Use the Carbonmark API to create retirement quotes, submit retirement orders, and confirm completion with a retirement receipt.

This page shows the basic retirement workflow. For full parameter definitions and response schemas, see the API referencearrow-up-right for each endpoint.

In the examples below, we use a versioned API base URL such as https://v1.api.carbonmark.com. Omitting the version prefix exposes your integration to breaking changes. Use the latest stable version when building your integration.

Before you begin

You will need:

  • a Carbonmark account

  • a sandbox or production API key

  • a project or product with a visible price

  • an asset_price_source_id from the /prices endpoint

Create a sandbox key in the Developer Dashboardarrow-up-right for testing. Production access requires onboarding. Keep your API key secure and do not expose it in client-side code or commit it to your repository.

Step 1: Create an API key

Create an account or sign in to the Developer Dashboard.

Once signed in, go to the Keys page and generate an API key.

  • Sandbox keys are free and can be used for testing

  • Production keys require onboarding

  • Keys are shown only once, so copy and store them securely

Step 2: Choose a project to retire

Use the Carbonmark marketplace or the API to find a project with a visible listing price.

For project-based retirements, use /carbonProjectsarrow-up-right and note the project key.

In this example, we use project ICR-112.

Step 3: Retrieve pricing and identify an asset price source

Before creating a quote, call /prices to retrieve seller listing price sources for the project you want to retire. The assetPriceType filter lets you narrow results to projects with specific pricing sources. Accepted values are listing (seller listings on Carbonmark) and klimaprotocol (Klima protocol pool prices).

Use the sourceId value from the /prices response as the asset_price_source_id in the quote request.

Example request:

Example response (trimmed for readability):

For this example flow, we use the second listing because it has enough supply to support a 1 tonne retirement.

Step 4: Create a retirement quote

Create a quote using the /quotesarrow-up-right endpoint.

Required fields:

  • asset_price_source_id

  • quantity_tonnes

Example request:

Example response (trimmed for readability):

Save the uuid from the quote response. You will need it to create the order.

Step 5: Create a retirement order

Create an order using the /ordersarrow-up-right endpoint.

Required fields:

  • quote_uuid

  • beneficiary_name

  • retirement_message

Some registries may require additional fields. For example, certain Puro.earth retirements require consumption_metadata.

Example request:

Example response (trimmed for readability):

A successful order response with status: "SUBMITTED" means the retirement request has been accepted and is being processed.

Step 6: Confirm the retirement is complete

To confirm completion, query /orders using the quote_uuid.

Example request:

Example response (trimmed for readability)

When the order status is COMPLETED, the carbon credit has been retired. You can also use polygonscan_url or view_retirement_url from the order response for additional confirmation.

Retirement receipt

Once the order is complete, use the view_retirement_url returned by the API to access the retirement receipt.

The receipt URL follows this pattern:

Example:

The completed order will also appear in the Developer Dashboard, and the cost will be included in your monthly invoice.

Notes

  • Always use a versioned API base URL in production integrations

  • Use /prices to resolve a valid listing asset_price_source_id before creating a quote

  • Use /quotes to price the retirement

  • Use /orders to submit the retirement

  • Poll /orders with the quote_uuid until the order status is COMPLETED

  • Some registries may require additional order metadata

Last updated