---
title: Authentifizierung
description: API-Schlüssel, echter Modus und Testmodus sowie Zugriffsstufen.
sidebar:
  order: 2
---
Senden Sie Ihren Schlüssel bei jeder Anfrage als Bearer-Token:

```txt
Authorization: Bearer tc_live_…
```

`X-Api-Key: tc_live_…` funktioniert ebenfalls.

## Echte Schlüssel und Testschlüssel [#live-and-test-keys]

Am Präfix erkennen Sie den Modus eines Schlüssels auf einen Blick:

- **`tc_live_…`** verbraucht Ihr echtes Guthaben und legt echte CO₂-Zertifikate still. Antworten enthalten `"livemode": true`.
- **`tc_test_…`** verbraucht ein simuliertes Guthaben. Antworten enthalten `"livemode": false`. Siehe [Testmodus](/docs/de/test-mode).

Echte Daten und Testdaten sind getrennt: Ein Testschlüssel sieht nie echte Kompensationen und umgekehrt.

## Zugriff [#access]

Jeder Schlüssel hat eine von zwei Zugriffsstufen, die Sie beim Erstellen festlegen:

| Zugriff | Kann |
| --- | --- |
| Nur lesen | Guthaben, Angebote, Kompensationen und Wirkung abrufen. |
| Lesen und kaufen | Alles oben Genannte und zusätzlich Kompensationen kaufen. |

Geben Sie Dashboards und Berichten einen Schlüssel mit der Zugriffsstufe „Nur lesen“. Ein Kauf mit einem solchen Schlüssel schlägt mit `403 insufficient_permissions` fehl.

## Schlüssel geheim halten [#keep-keys-secret]

- Verwenden Sie Schlüssel **nur auf Ihrem Server**. Die API sendet keine CORS-Header, daher können Browser sie nicht mit einem Schlüssel aufrufen.
- Speichern Sie Schlüssel als Secrets (Umgebungsvariablen, ein Secrets-Manager), niemals im Code.
- Erstellen Sie einen Schlüssel pro System, damit Sie einen Schlüssel widerrufen können, ohne die anderen zu beeinträchtigen.
- Wenn ein Schlüssel offengelegt wird, widerrufen Sie ihn sofort auf der Entwicklerseite. Anfragen mit diesem Schlüssel schlagen ab dann fehl. Sie sind für Käufe verantwortlich, die mit Ihren Schlüsseln getätigt werden.

## Fehler [#errors]

| Status | Code | Wann |
| --- | --- | --- |
| 401 | `invalid_api_key` | Der Schlüssel fehlt, ist fehlerhaft, unbekannt oder widerrufen. |
| 403 | `api_access_inactive` | Das Konto ist nicht freigegeben oder es ist gesperrt. Ein gesperrtes Konto kann weiterhin lesen. |
| 403 | `insufficient_permissions` | Ein Schlüssel mit der Zugriffsstufe „Nur lesen“ hat versucht zu kaufen. |
| 429 | `rate_limited` | Zu viele Anfragen für diesen Schlüssel. Siehe [Limits](/docs/de/limits). |
