Zum Hauptinhalt springen
Docs

API-Referenz

Brane AIF Entwickler-API

2026-07-22

1. Überblick

Die Box stellt ein OpenAI-kompatibles Gateway unter /api/v1 bereit. Jedes Werkzeug, das das OpenAI-Chat-Completions-Protokoll spricht — IDE-Erweiterungen (Continue, Cline), SDKs (openai, @ai-sdk/openai-compatible), n8n, eigene Anwendungen — kann die Box als Modell-Provider verwenden.

Tip

Der Unterschied zu einem normalen Provider

Jede Anfrage läuft durch den Guardian. Die Box entscheidet lokal, ob eine Anfrage on-premise bleibt oder an ein Cloud-Modell geht, und entfernt PII, bevor irgendetwas die Box verlässt. Sie erhalten das OpenAI-Wire-Format — die Box behält die Datenhoheit.

2. Base URL

https://<your-box-domain>/api/v1

Alle folgenden Endpoints sind relativ zu dieser Base URL (/api/v1/chat/completions, /api/v1/models usw.).

3. Authentifizierung

Bei jeder Anfrage ein Bearer-Token:

Authorization: Bearer brn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Einen Key erzeugen Sie im Admin-Dashboard unter Admin → API Keys (/admin/api-keys). Keys sind gescoped (chat:completions), können ein eigenes Rate-Limit pro Key tragen und jederzeit widerrufen werden. Der Klartext-Key wird nur einmal bei der Erstellung angezeigt — bewahren Sie ihn sicher auf.

Warning

Legacy-Bearer

Ein globaler Legacy-Bearer (AI_BOX_API_SECRET) wird für bestehende n8n-Setups weiterhin akzeptiert. Verwaltete Keys pro Nutzer sind jedoch klar zu bevorzugen — sie sind widerrufbar, rate-limitiert und zuordenbar.

4. Modelle auflisten — GET /v1/models

Listet die Modelle auf, die die Box bereitstellt. Die meisten SDKs und IDE-Erweiterungen rufen diesen Endpoint beim Einrichten auf, um den Key zu validieren und die Modellauswahl zu befüllen.

curl https://<your-box>/api/v1/models \
  -H "Authorization: Bearer $BRANE_KEY"
{
  "object": "list",
  "data": [
    { "id": "vllm:gemma-4-26b-awq", "object": "model", "created": 1750000000, "owned_by": "local" },
    { "id": "openrouter:anthropic/claude-sonnet-4.5", "object": "model", "created": 1750000000, "owned_by": "openrouter" }
  ]
}

Die sichtbare Menge respektiert den Admin-ZDR-Filter und die OpenRouter-Allowlist — ein Key sieht nie ein Modell, an das die Box ohnehin nicht routen würde. owned_by: "local" kennzeichnet lokale vLLM-Modelle.

5. Chat Completions — POST /v1/chat/completions

Standard OpenAI Chat Completions. Unterstützt messages, stream, temperature, max_tokens, top_p sowie Content-Parts vom Typ Text und image_url.

curl https://<your-box>/api/v1/chat/completions \
  -H "Authorization: Bearer $BRANE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "vllm:gemma-4-26b-awq",
    "messages": [{ "role": "user", "content": "Refactor this function: ..." }],
    "stream": true
  }'

Streaming liefert Server-Sent Events im Format chat.completion.chunk, abgeschlossen durch data: [DONE]. Ohne Streaming erhalten Sie ein einzelnes chat.completion-Objekt mit usage.

6. Souveränitäts-Verhalten

Note

Vor der Integration lesen

Das Gateway ist auf Wire-Ebene OpenAI-kompatibel, aber der Guardian ändert zwei Dinge, die Sie verstehen müssen.

1. Das model-Feld ist ein Wunsch

Der Guardian entscheidet den tatsächlichen Provider anhand des Routing-Modus der Box (local-only, local-preferred, …) und des Inhalts der Anfrage. Wenn Sie ein Cloud-Modell anfordern, das Routing die Anfrage aber lokal hält (z. B. weil sensibler Inhalt erkannt wurde), erhalten Sie das lokale Modell. Das model-Feld in der Antwort spiegelt wider, was tatsächlich ausgeführt wurde.

2. PII wird vor der Cloud redigiert

Wenn der Guardian an ein Cloud-Modell routet und die PII-Policy anonymize lautet, werden personenbezogene Daten durch Tokens ersetzt (<PERSON_1>, <EMAIL_1>), bevor die Anfrage die Box verlässt, und in der Antwort wiederhergestellt. Das Cloud-Modell sieht nie echte Daten. Im Modus local-only verlässt gar nichts die Box — es ist keine Redaktion nötig.

Warning

Für Code / IDE-Nutzung

Betreiben Sie die Box bevorzugt im Modus local-only. Quellcode und großer, automatisch zusammengestellter Kontext tragen Geheimnisse (API-Keys, Hostnamen, Connection-Strings), die eine statistische PII-Erkennung nicht zuverlässig erfasst. local-only beseitigt dieses Risiko vollständig — nichts verlässt die Box.

7. IDE-Integration

Continue.dev (VS Code / JetBrains)

~/.continue/config.json:

{
  "models": [
    {
      "title": "Brane AIF (sovereign)",
      "provider": "openai",
      "model": "vllm:gemma-4-26b-awq",
      "apiBase": "https://<your-box>/api/v1",
      "apiKey": "brn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
  ]
}

provider: "openai" plus eine eigene apiBase richten Continue auf die Box aus. Chat, Erklären und Refactoring funktionieren bereits heute.

Cline / Roo

Wählen Sie den Provider „OpenAI Compatible“, setzen Sie die Base URL auf https://<your-box>/api/v1 und fügen Sie den Key ein.

8. Aktuelle Einschränkungen

Ehrlicher Umfang dessen, was das Gateway noch nicht leistet:

Funktion Status
Chat (fragen, erklären, refactoren) verfügbar
GET /v1/models Discovery verfügbar
Tool- / Function-Calling (tools, tool_calls) noch nicht — erforderlich für agentisches Coding (Cline Agent Mode, Continue Agent)
Inline-Autocomplete (FIM /v1/completions) noch nicht
Embeddings (/v1/embeddings, @codebase) noch nicht
Streaming usage / stream_options wird nicht ausgegeben
max_completion_tokens (neueres SDK-Feld) bitte max_tokens verwenden

Note

Ausblick

Für agentisches Coding und Inline-Vervollständigung ist ein transparenter Proxy auf die on-prem vLLM-/v1-Oberfläche geplant (Roadmap).

9. Fehler

OpenAI-typischer Fehler-Envelope:

{ "error": { "message": "Invalid API Key", "type": "auth_error" } }
Status type Ursache
400 invalid_request_error Fehlerhafter Body / fehlerhafte bekannte Felder (unbekannte Top-Level-Felder werden stillschweigend ignoriert)
401 auth_error Key fehlt oder ist ungültig
403 auth_error Key fehlt der Scope chat:completions
403 user_disabled Nutzer wurde deaktiviert
429 rate_limit_error Rate-Limit pro Key oder am Gateway überschritten (Retry-After: 60)
500 server_error Interner Fehler (Details werden serverseitig geloggt, nie zurückgegeben)

Fragen zur Integration?

Unser Team unterstützt Sie bei der Anbindung Ihrer Werkzeuge.

Support kontaktieren