# API-Schnellstart

> Verbinde dich mit dem KI-Gateway OpenCheese: API-Host und Basis-URLs, Auth per Bearer und x-api-key, eine erste curl-Anfrage und alle Seiten zu API und Tools.
>
> Webseite: https://opencheese.dev/de/docs/ · Alle Seiten der Doku: https://opencheese.dev/de/docs.md

OpenCheese AI ist ein KI-Gateway mit OpenAI-kompatiblen und Anthropic-kompatiblen APIs. Mit einem
einzigen OpenCheese-API-Schlüssel erreichst du jedes Modell, das für dein Konto freigeschaltet ist,
auch die kostenlosen. Jede Anfrage wird mit ihrem Tokenverbrauch und ihren Kosten im Dashboard
erfasst.

Jede Seite dieser Dokumentation gibt es auch als Markdown: Hänge `.md` an ihre Adresse an, zum
Beispiel [/de/docs.md](https://opencheese.dev/de/docs.md) für diese Seite.

## 1. API-Schlüssel erstellen

Melde dich auf [opencheese.dev](https://opencheese.dev/de/) an, öffne **API-Schlüssel** und
erstelle einen Schlüssel. Bewahre ihn auf dem Server auf: Ein privilegierter Schlüssel hat in
öffentlichem Frontend-Code nichts zu suchen.

## 2. API-Host und Basis-URLs

Das Gateway läuft unter `https://api.opencheese.dev`, einem anderen Host als die Website. Anfragen
an `opencheese.dev` liefern die Website, keine API-Antwort.

| Client | Basis-URL |
| --- | --- |
| OpenAI-SDKs und OpenAI-kompatible Clients (OpenCode, Codex, Harness AI, Zed, Chatbox, RikkaHub) | `https://api.opencheese.dev/v1` |
| Anthropic-SDKs und Anthropic-kompatible Clients (Claude Code, Claude Desktop) | `https://api.opencheese.dev` |

Anthropic-SDKs hängen `/v1/messages` selbst an, deshalb darf ihre Basis-URL nicht auf `/v1` enden.
Einige Apps verlangen auch im Anthropic-Modus die Adresse bis einschließlich `/v1`; welche Form
eine App braucht, steht in ihrer Anleitung weiter unten.

## 3. Authentifizierung

Sende den Schlüssel als Bearer-Token:

```text
Authorization: Bearer YOUR_OPENCHEESE_API_KEY
```

Clients im Anthropic-Stil können ihn stattdessen als `x-api-key: YOUR_OPENCHEESE_API_KEY` senden.

Die Beispiele lesen den Schlüssel aus `OPENCHEESE_API_KEY`. Der Schlüssel enthält `$`-Zeichen.
Setze die Variable deshalb in einfache Anführungszeichen, die diese Zeichen unverändert lassen
(doppelte Anführungszeichen würden sie expandieren und den Schlüssel unbrauchbar machen):

```bash
export OPENCHEESE_API_KEY='YOUR_OPENCHEESE_API_KEY'
```

In PowerShell: `$env:OPENCHEESE_API_KEY = 'YOUR_OPENCHEESE_API_KEY'`.

## 4. Modelle auflisten, die dein Schlüssel nutzen kann

```bash
curl https://api.opencheese.dev/v1/models \
  -H "Authorization: Bearer $OPENCHEESE_API_KEY"
```

Verwende eine `id` aus dieser Liste. Der Zugriff hängt von deinem Tarif und den
Modellbeschränkungen des Schlüssels ab; kopiere also keine Modell-IDs aus alten Beispielen. Die
Seite [Modell-API](https://opencheese.dev/de/docs/models.md) erklärt jedes Feld.

## 5. Eine erste Anfrage senden

OpenAI Chat Completions:

```bash
curl https://api.opencheese.dev/v1/chat/completions \
  -H "Authorization: Bearer $OPENCHEESE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "MODEL_ID", "messages": [{"role": "user", "content": "Hello"}]}'
```

Anthropic Messages:

```bash
curl https://api.opencheese.dev/v1/messages \
  -H "x-api-key: $OPENCHEESE_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model": "MODEL_ID", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}]}'
```

Mit dem Python-SDK von OpenAI:

```python
from openai import OpenAI

client = OpenAI(base_url="https://api.opencheese.dev/v1", api_key="YOUR_OPENCHEESE_API_KEY")
reply = client.chat.completions.create(
    model="MODEL_ID",
    messages=[{"role": "user", "content": "Hello"}],
)
print(reply.choices[0].message.content)
```

## 6. Eine Unterhaltung zusammenhalten

Sende bei jeder Anfrage einer Unterhaltung denselben Header `opencheese-session-uuid`, damit das
Dashboard sie als eine Sitzung anzeigt. Eine Anfrage ohne diesen Header ist eine eigene Sitzung.
Wann du ihn senden solltest, steht unter [Sitzungen](https://opencheese.dev/de/docs/sessions.md).

## Endpunkte

| Endpunkt | Protokoll | Zweck |
| --- | --- | --- |
| `GET /v1/models` | OpenAI | [Modelle, die der Schlüssel nutzen kann](https://opencheese.dev/de/docs/models.md) |
| `POST /v1/chat/completions` | OpenAI | [Chat, Streaming und Tools](https://opencheese.dev/de/docs/chat-completions.md) |
| `POST /v1/responses` | OpenAI Responses | [Responses-Clients wie Codex](https://opencheese.dev/de/docs/responses.md) |
| `POST /v1/messages` | Anthropic | [Claude Code und Anthropic-SDKs](https://opencheese.dev/de/docs/messages.md) |
| `POST /v1/messages/count_tokens` | Anthropic | [Tokens zählen, ohne Berechnung](https://opencheese.dev/de/docs/messages.md) |
| `POST /v1/images/generations` | OpenAI Images | [Bilder erzeugen](https://opencheese.dev/de/docs/images.md) |
| `POST /v1/images/edits` | OpenAI Images (multipart) | [Bilder bearbeiten](https://opencheese.dev/de/docs/images.md) |
| `GET /v1/images/capabilities` | OpenCheese | [Parameter der Bildmodelle](https://opencheese.dev/de/docs/images.md) |
| `GET /v1/key` | OpenCheese | [Ausgabenlimit und Verbrauch des Schlüssels](https://opencheese.dev/de/docs/account.md) |
| `GET /v1/plan` | OpenCheese | [Zeitfenster des Tarifs und Guthaben-Optionen](https://opencheese.dev/de/docs/account.md) |
| `GET /v1/balance` | OpenCheese | [Guthaben und Verbrauch in diesem Monat](https://opencheese.dev/de/docs/account.md) |

Fähigkeiten wie Streaming, Tools, Bildeingabe und Reasoning-Stufen hängen vom Modell ab: Prüfe das
Modell in `/v1/models`, bevor du dich auf eine davon verlässt.

## Alle Seiten

### Erste Schritte

- [Sitzungen](https://opencheese.dev/de/docs/sessions.md): Eine Unterhaltung, eine Sitzung: der Header opencheese-session-uuid.

### API-Referenz

- [Modelle](https://opencheese.dev/de/docs/models.md): GET /v1/models und was jedes Feld bedeutet.
- [Chat Completions](https://opencheese.dev/de/docs/chat-completions.md): POST /v1/chat/completions: Streaming, Tools, Bilder, Reasoning-Stufe.
- [Responses](https://opencheese.dev/de/docs/responses.md): POST /v1/responses: Eingabe, Streaming-Events, Tools.
- [Messages](https://opencheese.dev/de/docs/messages.md): POST /v1/messages und /v1/messages/count_tokens.
- [Bilder](https://opencheese.dev/de/docs/images.md): Bilder mit der Images-API von OpenAI erzeugen und bearbeiten.
- [Schlüssel, Tarif und Guthaben](https://opencheese.dev/de/docs/account.md): GET /v1/key, /v1/plan und /v1/balance.
- [Fehler und Limits](https://opencheese.dev/de/docs/errors.md): Fehlerformate, Codes, Ratenlimits und erneute Versuche.

### Entwicklertools

- [Claude Code](https://opencheese.dev/de/docs/claude-code.md): ANTHROPIC_BASE_URL, API-Schlüssel und Modell-Aliase in der settings.json.
- [Claude Desktop](https://opencheese.dev/de/docs/claude-desktop.md): Drittanbieter-Inferenzmodus mit einer importierten Konfigurationsdatei.
- [Codex](https://opencheese.dev/de/docs/codex.md): Ein Modellanbieter in der config.toml auf der Responses-API.
- [OpenCode](https://opencheese.dev/de/docs/opencode.md): Auto-Sync oder ein OpenAI-kompatibler Anbieter in opencode.json.
- [Harness AI](https://opencheese.dev/de/docs/harness-ai.md): Ein benutzerdefinierter Anbieter, dazu Reasoning-Stufen in settings.yaml.
- [Zed](https://opencheese.dev/de/docs/zed.md): Ein openai_compatible-Anbieter in settings.json.
- [VS Code und JetBrains](https://opencheese.dev/de/docs/ide.md): Die Erweiterungen für Claude Code und Codex mit den CLI-Einstellungen.

### Chat-Apps

- [RikkaHub](https://opencheese.dev/de/docs/rikkahub.md): Ein OpenAI- oder Claude-Anbieter in der Android-App.
- [Chatbox](https://opencheese.dev/de/docs/chatbox.md): Ein OpenAI-API-kompatibler Anbieter, auf Smartphone oder Desktop.
- [LobeHub](https://opencheese.dev/de/docs/lobehub.md): Ein Anbietereintrag mit der richtigen Adresse für jedes Format.

## Fehler

Die meisten Fehler kommen als HTTP-Status mit einem JSON-Fehlerobjekt zurück. Bei
`/v1/chat/completions` kommen Probleme, um die du dich kümmern musst (ein ungültiger Schlüssel,
ein Tariflimit, ein leeres Guthaben), als Antwort des Assistenten, damit Chat-Apps dir die Meldung
anzeigen. [Fehler und Ratenlimits](https://opencheese.dev/de/docs/errors.md) listet jeden Code auf.

## Tarife und Preise

Die Tarife findest du auf der [Startseite](https://opencheese.dev/de/#pricing). Die Preise pro
Modell stehen nach der Anmeldung auf der Seite **Preise** im Dashboard.

## Weitere Hilfe

- [FAQ](https://opencheese.dev/de/faq/): Einrichtung, Modelle, Tarife, Zahlungen und Fehlerbehebung.
- Support-Chat im Dashboard oder service@opencheese.dev.
