← ThalamusNetwork
API

OpenAI-kompatible API

ThalamusNetwork stellt einen OpenAI-kompatiblen Endpunkt bereit. Bestehende OpenAI-SDKs funktionieren — du änderst nur base_url und den API-Key. Jede Anfrage wird von einem Provider im Netzwerk beantwortet und mit OTH-Token abgerechnet.

Antworten sind KI-generiert; kennzeichne KI-Ausgaben in deiner Anwendung entsprechend (Transparenzpflicht Art. 50 KI-VO).

Endpunkt

POST https://enigmanet.eu/v1/chat/completions

Body und Antwort folgen dem OpenAI-Format (chat.completion). Die Antwort enthält zusätzlich ein enigma-Feld mit job_id, duration_ms und eni_cost.

Authentifizierung

Erstelle einen API-Key unter Profil (Format enk_…) und sende ihn als Bearer-Token:

Authorization: Bearer enk_…

Beispiel — curl

curl https://enigmanet.eu/v1/chat/completions \
  -H "Authorization: Bearer enk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemma3:4b",
    "messages": [{"role": "user", "content": "Hallo!"}]
  }'

Beispiel — Python (openai SDK)

from openai import OpenAI

client = OpenAI(
    base_url="https://enigmanet.eu/v1",
    api_key="enk_…",
)

resp = client.chat.completions.create(
    model="gemma3:4b",
    messages=[{"role": "user", "content": "Hallo!"}],
)
print(resp.choices[0].message.content)

Streaming (SSE)

Mit "stream": true liefert der Endpunkt Server-Sent Events im OpenAI-chat.completion.chunk-Format (kompatibel mit OpenAI-SDKs, LiteLLM, LangChain, Open WebUI). Zusätzlich werden die Orchestrierungs-Schritte live als Content-Deltas gestreamt — Routing, Decomposition, Subtasks, Synthese — bevor die eigentliche Antwort kommt. Jeder Event-Chunk trägt zusätzlich ein maschinenlesbares enigma-Feld ({ event, area, task }). Der Stream endet mit data: [DONE]; der letzte Chunk trägt usage.

curl -N https://enigmanet.eu/v1/chat/completions \
  -H "Authorization: Bearer enk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemma3:4b",
    "stream": true,
    "messages": [{"role": "user", "content": "Analysiere den Markt für E-Bikes."}]
  }'

Python (openai SDK, stream=True):

stream = client.chat.completions.create(
    model="gemma3:4b",
    messages=[{"role": "user", "content": "Analysiere den Markt für E-Bikes."}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta
    if delta.content:
        print(delta.content, end="", flush=True)

Einbau in eine eigene Website oder App (JavaScript-Snippet + Server-Proxy): siehe Streaming-Beispiel.

Modelle

Gib entweder einen Routing-Alias (enigma-auto, enigma-web, enigma-direct — siehe Abschnitt „Routing & Web-Recherche", empfohlen) oder einen echten Modellnamen an (z. B. eines der folgenden).

  • gemma3:4b
  • gemma3:12b-it-q4_K_M
  • deepseek-r1:8b
  • mistral-nemo:12b
  • qwen3:8b

Aktuelle Live-Liste der verfügbaren Modelle: GET https://enigmanet.eu/api/tags

Routing & Web-Recherche

Über das model-Feld steuerst du das Routing. Die Aliase sind der empfohlene Einstieg:

  • enigma-auto — automatische Einstufung (Standard, entspricht dem Weglassen des Feldes).
  • enigma-web — erzwingt Live-Web-Recherche: gesucht, abgerufen, per Cross-Encoder neu geordnet und ausschließlich aus den abgerufenen Quellen beantwortet. Enthalten die Quellen die Antwort nicht, wird das offen gesagt — keine erfundenen Zahlen aus Trainingswissen.
  • enigma-direct — direkte Einzelmodell-Antwort ohne Orchestrierung (am schnellsten).

Für Recherche "stream": true verwenden. Ein Recherche-Lauf dauert je nach Frage länger; im Streaming siehst du die Schritte (Suche, Abruf, Reranking, Synthese) live und der Lauf hat ein großzügiges Zeitbudget. Ohne Streaming gilt ein 120-Sekunden-Limit — für mehrstufige Recherche oft zu knapp.

curl -N https://enigmanet.eu/v1/chat/completions \
  -H "Authorization: Bearer enk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "enigma-web",
    "stream": true,
    "messages": [{"role": "user", "content": "Aktueller Goldpreis pro Unze in USD mit Quelle?"}]
}'

Kosten & Hinweise

  • Jede Anfrage kostet OTH-Token (siehe eni_cost in der Antwort). Tägliches Guthaben gibt es unter Profil.
  • Bei zu geringem Guthaben: HTTP 429. Kein Provider verfügbar: HTTP 503.
  • Streaming ("stream": true) wird unterstützt — SSE im OpenAI-Format inkl. Live-Orchestrierungs-Schritten (siehe Abschnitt „Streaming (SSE)").
  • Maximal 5 API-Keys pro Account.