The web app is a client of the same API you get. Query inventory, execute purchases, retire credits, and stream verification events into your own systems.
Versions live in the URL, with a twelve-month minimum deprecation window and notice at twelve, six and one month out. Breaking changes only land in a new major version, so a v1 endpoint will behave in five years exactly as it does now.
# Retire credits against a target POST /v1/retirements { "portfolio_id": "pf_02H8K4M1", "amount_tco2": 1250, "beneficiary": "Acme Corp", "vintage_year": 2026 } # 200 OK { "retirement_id": "ret_02H8L9Q3", "status": "complete", "attestation_url": "https://…" }
Issuances, retirements, readings and attestations all read unauthenticated. A key is needed for writes and for your own portfolio endpoints, but working through the public record needs nothing from us.
Bulk retirements queue and hand back a job ID instead of blocking. Poll the job endpoint if you must, but the webhook is the better route.
Free, unlimited, and stocked with synthetic sites and credits. Keys issue instantly and never touch production data or a real credit.
Very likely. We keep integrations with the common carbon accounting platforms, and webhooks push retirement and verification events as they land, so nothing has to poll.
Get started
Build against synthetic data, then move to production when the integration is ready. Nobody will make you sit through a call first.