---
title: Início rápido
description: Faça sua primeira compra com uma chave de teste e depois entre em produção.
mode: wide
sidebar:
  order: 1
---
## 1. Obtenha acesso [#1-get-access]

Solicite acesso à API na [página Desenvolvedores](https://trimcarbon.com/developers/access). Antes de aprovarmos uma solicitação, a conta precisa ter autenticação de dois fatores ou uma passkey. Enviamos um e-mail para você assim que a conta estiver ativa.

## 2. Crie uma chave de teste [#2-create-a-test-key]

Na página Desenvolvedores, crie uma chave no modo **Teste** com acesso **Leitura e compra**. Copie a chave: ela é exibida só uma vez.

As chaves de teste usam um saldo simulado de US$ 1.000. Nada é cobrado e nenhum crédito é aposentado, então você pode construir sua integração com segurança.

## 3. Obtenha uma cotação [#3-get-a-quote]

Uma cotação mostra o que uma compra compraria e quanto custaria, sem comprar nada:

```bash
curl https://trimcarbon.com/api/v1/quotes \
  -H "Authorization: Bearer $TRIMCARBON_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kg": 100}'
```

## 4. Compre compensações [#4-buy-offsets]

Envie uma `Idempotency-Key` única em cada compra. Se a requisição exceder o tempo limite, repita a requisição com a mesma chave: você recebe de volta a primeira compra em vez de comprar duas vezes.

```bash
curl https://trimcarbon.com/api/v1/offsets \
  -H "Authorization: Bearer $TRIMCARBON_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"kg": 100, "reference": "fleet-2026-09"}'
```

`POST /offsets`

**Request body** (`application/json`, required)

Exactly one of \`kg\` (whole kg, up to 1,000,000) and \`amount\_cents\`, and an optional \`reference\`.

Request body example, By volume:

```json
{
  "kg": 1000,
  "reference": "fleet-2026-09"
}
```

Request body example, By price:

```json
{
  "amount_cents": 5000
}
```

**Responses**

- `201` — The purchase (or, on a retry, the first one).
- `400` — Bad JSON, or a missing or invalid Idempotency-Key.
- `401` — Missing, unknown or revoked API key.
- `402` — \`insufficient\_balance\`: the balance doesn’t cover the purchase. The error has \`balance\_cents\` and \`required\_cents\`.
- `403` — \`api\_access\_inactive\` (the account is suspended or not approved) or \`insufficient\_permissions\` (a read-only key).
- `409` — \`idempotency\_key\_reused\`: the key was used for a different request.
- `422` — \`validation\_error\` (with \`param\`) or \`amount\_too\_small\`.
- `429` — \`rate\_limited\`: wait for the \`Retry-After\` seconds.

Response example, 201:

```json
{
  "object": "offset",
  "id": "off_8Hq2kP0aZr4mXc1vB7nT3yLw",
  "livemode": true,
  "status": "processing",
  "kg": 0,
  "amount_cents": 0,
  "currency": "usd",
  "rate_millicents_per_kg": 4000,
  "requested": {
    "kg": 0,
    "amount_cents": 0
  },
  "reference": "string",
  "certificate_url": "http://example.com",
  "created": "2026-10-08T14:03:12.000Z",
  "placed": "2026-10-08T14:03:12.000Z"
}
```

## 5. Acompanhe o pedido [#5-follow-the-order]

A compensação começa como `processing`. Consulte a compensação periodicamente até ela ficar `placed`:

```bash
curl https://trimcarbon.com/api/v1/offsets/off_8Hq2kP0aZr4mXc1vB7nT3yLw \
  -H "Authorization: Bearer $TRIMCARBON_KEY"
```

Uma compensação de teste é efetivada após alguns segundos. Uma compensação real costuma levar alguns minutos; depois disso, `certificate_url` leva ao certificado público dela.

## 6. Entre em produção [#6-go-live]

1. Adicione saldo na página Desenvolvedores.
2. Crie uma chave **Real** e guarde a chave como segredo no seu servidor.
3. Troque a chave de teste pela chave real. Nada mais muda.

:::warning
Compras reais aposentam créditos de carbono de verdade. O saldo é pré-pago e não é reembolsável; consulte [Saldo e compras](/docs/pt/balance).
:::
