LLM-Gateway
Ein LLM-Gateway mit angeschlossener Datenschicht
Drei Basis-URLs, ein Schlüssel, ein Guthaben. Chat-, Bild-, Video- und Entscheidungsmodelle im gewohnten SDK; Suche, Dokumente und Folien aus demselben Guthaben — ab einem Zehntel des offiziellen Anbieterpreises.
10%
Startpreis gegenüber dem offiziellen API-Preis des Anbieters
5,000+
APIs im selben Katalog
Ein Gateway hat meist eine Oberfläche. Dieses hat drei.
Sie teilen sich Konto, Schlüssel und Guthaben, beantworten aber unterschiedliche Fragen und liegen unter verschiedenen Basis-URLs. Zu wissen, welche Sie gerade aufrufen, ist der ganze Trick.
| Oberfläche | Basis-URL | Wofür |
|---|---|---|
| Modell-API | openapi.felo.ai/api/v1 · openapi.felo.ai/api | Ein Sprach-, Bild-, Video- oder Entscheidungsmodell direkt aufrufen |
| Daten-API | openapi.felo.ai/v1/beta | Einen benannten Drittanbieter für Daten oder Suche aufrufen |
| Felo APIs | openapi.felo.ai/v2 | Eigene Felo-Workflows: Suche, Office, Extraktion, Wissen |
Ein Schlüssel deckt alle drei ab. Ein Guthabenkauf erwirbt Serviceguthaben in US-Dollar, und Modellaufruf, Daten-API-Aufruf und Felo-Workflow werden daraus beglichen — kein separates Konto pro Anbieter.
Dokumentation lesenSechs Endpunkte, nicht einer
Alles unter /api/v1 ist ein Modellaufruf, aber die Modellart entscheidet, welcher Endpunkt antworten kann — und jeder Endpunkt liefert sein eigenes Format.
| Endpunkt | Protokoll | Liefert |
|---|---|---|
POST /api/v1/chat/completions | OpenAI Chat Completions | Streaming oder eine Antwort |
POST /api/v1/responses | OpenAI Responses | Streaming oder eine Antwort |
POST /api/v1/messages | Anthropic Messages | Streaming oder eine Antwort |
POST /api/v1/images/generations | OpenAI-Bildumschlag | Eine task_id zum Abfragen |
POST /api/v1/videos/generations | OpenAI-Videoumschlag | Eine task_id zum Abfragen |
POST /api/v1/decisions | Felo-Entscheidungsschema | Typisierte Antworten, kein Streaming |
Die drei Chat-Oberflächen sind native Implementierungen, keine Übersetzungsschicht: Jede streamt Ereignisse im eigenen Protokoll, Sie parsen den Stream also genau wie bisher.
Endpunkt nach Modellart wählen, nicht nach Vermutung
Jedes Modell im Katalog trägt ein model_kind, und die Art bestimmt, welcher Endpunkt es aufrufen kann. Die Suche kostet nichts und liest den lokalen Katalog.
# discover before you call — free, reads the catalog
GET /api/v1/models # every kind, with channels and rates
GET /api/v1/models/{model_id} # one model, in detail
GET /api/v1/videos/models # video_generation only
GET /api/v1/decisions/models # decisions only| model_kind | Endpunkt |
|---|---|
chat | Responses, Chat Completions oder Messages, je nachdem was das Modell unterstützt |
image_generation | POST /api/v1/images/generations |
video_generation | POST /api/v1/videos/generations |
decisions | POST /api/v1/decisions |
Mit ?provider= sehen Sie nur einen Anbieter, mit ?exclude_video_and_decisions=true nur Chat und Bild. Ein Katalogeintrag ist kein Versprechen: Ein Videomodell beantwortet keine Chat-Anfrage, und die API antwortet mit model_kind_mismatch.
Standardroute oder ein Header für den Anbieter
Ein Modell kann von mehreren vorgelagerten Kanälen bedient werden, jeder mit eigenem Anbieter und eigenem veröffentlichten Preis. Ohne Header wählt die Plattform; mit X-Felo-Channel wählen Sie.
# first channel only — no automatic fallback
X-Felo-Channel: claude-cc
X-Felo-Channel: claude-cc,anthropic # ordered selection, not a retry list- Der Wert ist eine geordnete Liste öffentlicher Kanalcodes aus
channels[].codedes Modells, geprüft in der Reihenfolge, in der Sie sie schreiben. - Nur die Anbietergruppe des ersten Kanals wird übermittelt, und es gilt der Preis dieses Kanals.
- Es gibt kein automatisches Failover. Eine Kanalliste ist eine Auswahl, keine Wiederholungsrichtlinie — schlägt ein Anbieter fehl, senden Sie aus Ihrer Anwendung mit einem anderen Kanal erneut.
X-Felo-Channel gilt für alle sechs Generierungsendpunkte oben. Für die Daten-API und die Felo APIs gilt er nicht: Dort geht die Anfrage an den im Request genannten Anbieter.
Was ein Aufruf wirklich kostet
Modellaufrufe werden pro Token abgerechnet — Eingabe, Ausgabe und Cache — mit dem Rabattfaktor des Kanals. Preise stehen zur Lesbarkeit pro 1 Mio. Token, abgerechnet wird aber mit Token-Genauigkeit aus dem aktuellen Preisstand, ein kurzer Request wird also nicht auf eine Million aufgerundet.
- Cache-Preise gelten nur, wenn die Protokollantwort eine Cache-Nutzung meldet; ein Modell ohne diese Meldung rechnet alles zum Eingabepreis ab.
- Websuche, die der Modelldienst tatsächlich ausführt und meldet, kostet $0.01 pro Suche.
- Manche Modelle staffeln nach Promptgröße: Claude Haiku 5.5 kostet $0.10 Eingabe und $0.50 Ausgabe pro 1 Mio. Token bis zu einem Prompt von 100K Token, darüber $0.50 und $2.50 für den gesamten Request.
- Die erste Aufladung beginnt bei $1. Kein Abo, keine Sitzplatzgebühr, keine Mindestbindung — ein ungenutzter Schlüssel kostet nichts.
Daten-API-Aufrufe und Felo-Workflows werden aus demselben Guthaben beglichen, jeweils nach eigener veröffentlichter Grundlage: pro erfolgreichem Request, pro zurückgegebenem Element oder nach tatsächlicher Nutzung.
Preise und GuthabenZwei Grenzen, die gleich aussehen und es nicht sind
Leere Credits ergeben 402 INSUFFICIENT_CREDITS. Zu schnelle Aufrufe ergeben 429 RATE_LIMITED. Warten löst das zweite und nie das erste.
| Status | Code | Was tun |
|---|---|---|
| 401 | UNAUTHORIZED | Schlüssel korrigieren oder neu ausstellen |
| 402 | INSUFFICIENT_CREDITS | Im Abrechnungsbereich der Konsole aufladen und erneut senden |
| 404 | endpunktabhängig | Modell-, Aufgaben- oder Routen-ID prüfen |
| 429 | RATE_LIMITED | Retry-After abwarten, dann erneut versuchen |
| 5xx | CHAT_FAILED, SERVICE_UNAVAILABLE | Mit exponentiellem Backoff und Jitter erneut versuchen |
Dokumentierte harte Limits gibt es heute nur bei /v2/chat. Modellaufrufe können auch vorgelagert begrenzt werden, was als 429 erscheint — lesen Sie X-RateLimit-* und Retry-After, statt Zahlen fest zu verdrahten. Jede Antwort trägt eine request_id, und ein von Ihnen gesendeter X-Request-Id-Header wird zurückgegeben, sodass Ihre Logs und unsere zusammenpassen.
Bild und Video werden im Hintergrund fertig
Beide Generierungsendpunkte liefern eine task_id statt eines Ergebnisses. Senden, abfragen, abholen — und beachten Sie: Sobald eine Aufgabe existiert, kommen die meisten Fehler als 200 mit einem Endstatus, nicht als HTTP-Fehler.
# submit, then poll the task
POST /api/v1/images/generations → task_id
GET /api/v1/images/generations/{id} → status, result
POST /api/v1/videos/generations → task_id
GET /api/v1/videos/generations/{id} → status, resultLesen Sie den Status vor dem Ergebnis: failed und interrupted sind auch Antworten, und error.message nennt den Grund. Ein 402 beim Senden bedeutet, dass die Aufgabe nie angelegt wurde. SuperAgent funktioniert anders — er gibt einen stream_key zurück und schiebt Ereignisse per SSE, es gibt nichts abzufragen.
Basis-URL ändern, Client behalten
Beide SDKs funktionieren unverändert, sobald die Basis-URL hierher zeigt. npx feloapi-cli setup schreibt dieselbe Konfiguration für Claude Code und Codex.
# OpenAI SDK
base_url = "https://openapi.felo.ai/api/v1"
# Anthropic SDK — one level up; the SDK appends /v1/messages
base_url = "https://openapi.felo.ai/api"
# pin a provider (optional)
default_headers = {"X-Felo-Channel": "claude-cc"}Modell-IDs sind zwischen Anbietern nicht identisch. Wählen Sie vor dem Umschalten der Basis-URL aus dem Katalog, sonst antwortet der erste Aufruf mit 404.
Die Hälfte, die ein Gateway Ihnen meist überlässt
Ein LLM-Gateway routet Modellaufrufe. Hier reicht derselbe Schlüssel zusätzlich an einen Katalog mit 5,000+ APIs — der Suchschritt in Ihrem Agenten, die erzeugten Folien und das von ihm gelesene Dokument werden also aus denselben Credits bezahlt, nicht bei drei weiteren Anbietern.
- Search
- PPT Task
- SuperAgent
- Web Fetch
- X Search
- Mindmap
- Landing Page Task
- LiveDoc
- YouTube Subtitling
Daten-API-Aufrufe gehen unter /v1/beta an benannte Anbieter — Tavily, Exa, Apollo und der Rest des Katalogs — jeweils nach eigener veröffentlichter Grundlage.
Wo das Gateway endet
- Kein automatisches Failover zwischen Kanälen — die Wiederholungslogik bleibt in Ihrer Anwendung, bewusst.
- Ein Katalogeintrag ist keine Kompatibilitätsgarantie; jede Modellart hat eine Aufrufoberfläche.
- Für Modellaufrufe ist kein Plattform-Limit dokumentiert, das Limit des vorgelagerten Anbieters gilt aber weiterhin.
- Credits sind vorausbezahlt, nicht erstattbar und nicht auszahlbar — laden Sie auf, was Sie ausgeben wollen.
Sechs Fragen zum LLM-Gateway
Was ist ein LLM-Gateway?
Ein Endpunkt vor vielen Modellanbietern, damit Ihr Code mit einer Basis-URL, einem Schlüssel und einem Guthaben spricht statt mit einem Dutzend Anbieter-SDKs. Ein AI-Gateway tut dasselbe; dieses verkauft zusätzlich die Daten-APIs, die ein Agent braucht.
Kann ich mein OpenAI- oder Anthropic-SDK behalten?
Ja. Chat Completions und Responses haben OpenAI-Form, Messages ist nativ. Die Basis-URLs sind https://openapi.felo.ai/api/v1 und https://openapi.felo.ai/api — eine Ebene höher, weil dieses SDK /v1/messages selbst anhängt.
Woher weiß ich, welches Modell ich aufrufen soll?
GET /api/v1/models listet jede Art mit Kanälen und Preisen; Video- und Entscheidungsmodelle haben eigene Listen. Lesen Sie model_kind und rufen Sie den passenden Endpunkt auf. Ein Listeneintrag heißt nicht, dass jeder Endpunkt das Modell annimmt.
Gibt es ein Failover, wenn ein Anbieter ausfällt?
Nein, und das ist Absicht. Eine Kanalliste ist eine Auswahl, keine Wiederholungsrichtlinie: Nur der erste Kanal wird übermittelt. Failover gehört in Ihre Anwendung, wo Fehler, Budget und der tatsächlich gewünschte Rückfall sichtbar sind.
Was kostet es?
Jedes Modell hat einen Felo-Preis, der bei einem Zehntel des offiziellen Anbieterpreises beginnt, und der festgelegte Kanal bestimmt den gezahlten Preis. Vorausbezahlt, pro Aufruf abgerechnet, erste Aufladung ab $1, kein Abo.
Kann ich auch Bilder, Videos und Daten-APIs aufrufen?
Ja. Ein Schlüssel reicht an Chat-, Bild-, Video- und Entscheidungsmodelle und den API-Katalog mit 5,000+ hinter /v1/beta — alles aus demselben Guthaben.
Testen Sie es mit einem Aufruf
Erstellen Sie einen Schlüssel, laden Sie Guthaben und richten Sie Ihr bestehendes SDK auf eine Basis-URL.