MenüAPI-Referenz

API-Referenz

Die API folgt dem OpenAI-Format unter https://ai.geraikita.com/v1 und dem Anthropic-Format unter https://ai.geraikita.com. Alle Request- und Response-Bodies sind JSON (UTF-8).

EndpointFunktion
POST /v1/chat/completionsChat im OpenAI-Format (Stream & Non-Stream)
POST /v1/messagesMessages im Anthropic-Format (Stream & Non-Stream)
POST /v1/messages/count_tokensPrompt-Tokens im Anthropic-Format zählen — kostenlos
GET /v1/modelsListe der nutzbaren Modelle
POST /v1/images/generationsBilder aus einem Text-Prompt erzeugen, Abrechnung pro Bild — siehe Bildgenerierung
Derzeit sind nur die obigen Endpoints verfügbar. Andere OpenAI-Endpoints (z. B. /v1/responses, /v1/embeddings) werden noch nicht unterstützt.

Chat Completions (OpenAI)

POSThttps://ai.geraikita.com/v1/chat/completions

Erzeugt eine Antwort aus einer Liste von Nachrichten. Header: Authorization: Bearer gk-… und Content-Type: application/json.

Request-Body

ParameterTypBeschreibung
modelstringPflicht. Modell-ID genau wie in der Modellliste, ohne Prefix.
messagesarrayPflicht. Geordnetes Array von Nachrichten; jede Nachricht enthält role und content. Mindestens eine Nachricht.
streambooleantrue, um die Antwort schrittweise per Server-Sent Events zu erhalten.
max_tokensintegerMaximale Tokens der Antwort. Reicht das Guthaben für den angefragten Wert nicht, kann der Server ihn automatisch senken.
temperature, top_p, stop—Wird unverändert an das Modell weitergegeben. Unterstützung und Wertebereich hängen vom Modell ab.
tools, tool_choicearray / objectFunction Calling (Tool Calling) im OpenAI-Format, weitergegeben an Modelle, die es unterstützen.

Beispiel-Request

curl https://ai.geraikita.com/v1/chat/completions \
  -H "Authorization: Bearer gk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Hallo!"}]
  }'

Beispiel-Response

200 OK · application/json
{
  "id": "chatcmpl-…",
  "object": "chat.completion",
  "model": "claude-sonnet-5",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "…" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 12, "completion_tokens": 9, "total_tokens": 21 }
}

Das usage-Objekt enthält die Token-Anzahl, die der Abrechnung zugrunde liegt — siehe Preise & Abrechnung.

Messages (Anthropic)

POSThttps://ai.geraikita.com/v1/messages

Nativer Anthropic-Endpoint für das Anthropic SDK und Claude Code CLI. Base-URL im Client = https://ai.geraikita.com (ohne /v1).

Header

HeaderWertBeschreibung
x-api-keygk-…Dein gk--API-Key (Authorization: Bearer wird ebenfalls akzeptiert).
anthropic-version2023-06-01Anthropic-API-Version; wird vom SDK automatisch gesendet.
content-typeapplication/json—

Request-Body

ParameterTypBeschreibung
modelstringPflicht. Modell-ID genau wie in der Modellliste, ohne Prefix.
messagesarrayPflicht. Array von Nachrichten im Anthropic-Format, mindestens eine Nachricht.
max_tokensintegerMaximale Tokens der Antwort (im Anthropic-Format Pflicht).
systemstring / arraySystemanweisung (optional).
streambooleantrue, um die Antwort schrittweise per Server-Sent Events zu erhalten.

Beispiel-Request

curl https://ai.geraikita.com/v1/messages \
  -H "x-api-key: gk-xxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hallo!"}]
  }'

Musst du Tokens vor dem Senden zählen? POST https://ai.geraikita.com/v1/messages/count_tokens akzeptiert denselben Body und wird nicht abgerechnet.

Modellliste

GEThttps://ai.geraikita.com/v1/models

Gibt die Liste der Modell-IDs zurück, die du im Feld model senden kannst. Mit einem per Allowlist beschränkten Key werden nur die erlaubten Modelle angezeigt. Mit dem Header x-api-key oder anthropic-version folgt die Response dem Anthropic-Format.

curl https://ai.geraikita.com/v1/models \
  -H "Authorization: Bearer gk-xxxxxxxx"

Streaming (SSE)

Mit "stream": true wird die Antwort als text/event-stream gesendet. Der Server sendet sofort die Header und danach alle 10 Sekunden eine Keepalive-Kommentarzeile : ka, solange er wartet, damit die Verbindung nicht als tot gilt. Stelle den Gesamt-Timeout deiner App auf mindestens 300 Sekunden.

text/event-stream
data: {"choices":[{"index":0,"delta":{"content":"Ha"}}]}

: ka

data: {"choices":[{"index":0,"delta":{"content":"lo!"}}]}

data: [DONE]
  • OpenAI-Format: Jeder Chunk ist eine data:-Zeile mit JSON, das choices[].delta enthält, abgeschlossen mit data: [DONE].
  • Anthropic-Format: Events message_start, content_block_delta, …, message_stop wie bei der Anthropic-API.
  • Ignoriere Zeilen, die mit einem Doppelpunkt (:) beginnen — das sind Keepalives, keine Daten. Anleitungen pro Tool findest du unter Agentic-Tool-Einstellungen.