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.
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.
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="")
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.
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.
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.
| Feld | Verhalten |
|---|---|
| model, messages, max_tokens, temperature, stream, stream_options | Weitergeleitet |
| user, metadata, store, service_tier, n: 1 | Angenommen 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_bias | Mit 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 parts | Abgelehnt — die Gateway verarbeitet nur Text |
| role: developer | Auf 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.
{
"$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": {
"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 · 5xxSchlüssel erstellen
Schlüssel werden im Dashboard erstellt und widerrufen.