Dokumentation

BreignHUB spricht das OpenAI-Protokoll. Richten Sie einen beliebigen Client auf die Basis-URL unten, verwenden Sie einen BreignHUB-Schlüssel als API-Key, und Ihr übriger Code bleibt unverändert.

Basis-URL und Authentifizierung

Der Schlüssel wird im Authorization-Header als Bearer Token gesendet. Schlüssel werden im Dashboard erstellt und einmalig angezeigt — BreignHUB speichert das Geheimnis nicht und kann es nicht erneut zeigen.

Basis-URL
https://hub.breign.eu/api/v1
API-Key
Ein Schlüssel aus dem Dashboard, beginnend mit bh-

Vom eigenen Server aufrufen, nicht aus dem Browser

/api/v1 sendet keine CORS-Header, eine Seite auf einer anderen Origin erreicht die Schnittstelle also nicht. Das ist Absicht: ein BreignHUB-Schlüssel im Frontend-Code ist ein veröffentlichter Schlüssel. Bewahren Sie ihn auf Ihrem eigenen Server auf oder hinter einem Proxy, den Sie kontrollieren.

Ihr erster Aufruf

Modell-IDs tragen den bereitstellenden Provider, in der Form providerId/modelName. Mit GET /models auflisten oder im Katalog nachsehen.

first-call.sh
curl https://hub.breign.eu/api/v1/chat/completions \
  -H "Authorization: Bearer $BREIGNHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<providerId>/<modelName>",
    "messages": [{ "role": "user", "content": "Say hello." }]
  }'

Aus dem OpenAI SDK

Nur die Basis-URL ändert sich. Streaming funktioniert genauso.

python
from openai import OpenAI

client = OpenAI(
    base_url="https://hub.breign.eu/api/v1",
    api_key=os.environ["BREIGNHUB_API_KEY"],
)

stream = client.chat.completions.create(
    model="<providerId>/<modelName>",
    messages=[{"role": "user", "content": "Say hello."}],
    stream=True,
)

for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")
typescript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://hub.breign.eu/api/v1",
  apiKey: process.env.BREIGNHUB_API_KEY,
});

const stream = await client.chat.completions.create({
  model: "<providerId>/<modelName>",
  messages: [{ role: "user", content: "Say hello." }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Modelle auflisten

Liefert die Modelle, die die Organisation des Schlüssels erreicht. Die Verfügbarkeit kommt von der Organisation, nicht vom Schlüssel.

models.sh
curl https://hub.breign.eu/api/v1/models \
  -H "Authorization: Bearer $BREIGNHUB_API_KEY"

Embeddings

Ein Batch wird angenommen und aufgeteilt: die Breign-Gateway verarbeitet eine Zeichenkette pro Aufruf, daher begrenzt BreignHUB einen Batch auf 64 und setzt die Ergebnisse in der richtigen Reihenfolge zusammen.

embeddings.sh
curl https://hub.breign.eu/api/v1/embeddings \
  -H "Authorization: Bearer $BREIGNHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<providerId>/<modelName>",
    "input": ["premier texte", "second texte"]
  }'

Was die Gateway nicht unterstützt

Die Breign-Gateway akzeptiert nur eine enge Teilmenge der OpenAI-Anfrage. Felder, die die Antwort verändern würden, werden mit einem 400 abgelehnt, das sie benennt, statt ignoriert zu werden — eine Anfrage zu erfüllen und dabei tools oder response_format zu verwerfen, gäbe Ihnen eine falsche Antwort, die richtig aussieht.

FeldVerhalten
model, messages, max_tokens, temperature, stream, stream_optionsWeitergeleitet
user, metadata, store, service_tier, n: 1Angenommen und ignoriert, aufgeführt im Response-Header X-BreignHub-Ignored-Fields
tools, tool_choice, functions, response_format, top_p, seed, stop, logprobs, presence_penalty, frequency_penalty, logit_biasMit 400 abgelehnt, das Feld wird benannt
temperature > 1Über 1 abgelehnt. OpenAI erlaubt bis 2; stilles Begrenzen würde Ihre Ergebnisse verändern
image / audio content partsAbgelehnt — die Gateway verarbeitet nur Text
role: developerAuf system abgebildet

BreignHUB aus einem Coding-Agenten nutzen

Jedes Werkzeug, das eine OpenAI-kompatible Basis-URL erlaubt, funktioniert. Zwei Beispiele.

opencode

Fügen Sie einen Provider in opencode.json hinzu. Verwenden Sie @ai-sdk/openai-compatible, das auf /v1/chat/completions zielt. Danach /models ausführen und auswählen.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "breignhub": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "BreignHUB",
      "options": {
        "baseURL": "https://hub.breign.eu/api/v1",
        "apiKey": "{env:BREIGNHUB_API_KEY}"
      },
      "models": {
        "<providerId>/<modelName>": {
          "name": "Qwen3.6 35B"
        }
      }
    }
  }
}

export BREIGNHUB_API_KEY=bh-…  ·  opencode  ·  /models

Alle anderen

Continue, Cline, aider, LangChain, das Vercel AI SDK — alle nehmen eine Basis-URL und einen API-Key. Beides setzen, fertig. Sendet ein Werkzeug standardmäßig tools oder response_format, lehnt BreignHUB den Aufruf mit einer Meldung ab, die das Feld benennt; deaktivieren Sie die Funktion im Werkzeug.

Fehler

Fehler nutzen die OpenAI-Hülle. Ein Fehler aus dem Inferenz-Cluster wird ausgepackt statt verschachtelt: die Meldung, die Sie lesen, ist die des Backends.

error.json
{
  "error": {
    "message": ""tools" is not supported: tool calling is not exposed by the Breign gateway.",
    "type": "invalid_request_error",
    "param": "tools",
    "code": "unsupported_parameter"
  }
}

# 401 missing_api_key · 401 invalid_api_key · 400 · 5xx

Schlüssel erstellen

Schlüssel werden im Dashboard erstellt und widerrufen.

Schlüssel erstellen