Modelle & Routing
UberLLM sendet jede Anfrage an einen verfügbaren Drittanbieter für das von Ihnen angefragte Modell. Wenn der Anbieter fehlschlägt, bevor er mit der Beantwortung beginnt, wird die Anfrage wiederholt, und eine Anfrage, die weiterhin fehlschlägt, wird nicht berechnet. Jede Anfrage wird mit dem berechnet, was der Anbieter in Rechnung gestellt hat, ohne zusätzliche UberLLM-Gebühr, und wird mit ihren Kosten unter Dashboard → Activity aufgeführt. Sie wählen ein Modell, keinen Anbieter.
Modell-IDs
Verwenden Sie die Modell-ID aus dem Katalog, z.B. deepseek/deepseek-v4-flash,
anthropic/claude-sonnet-5 oder z-ai/glm-5.3. Hier ist, was Sie aktuell aufrufen können:
GET https://api.uberllm.dev/v1/models: die Chat-Modelle, an die aktuell eine Anfrage gesendet werden kann, sodass ein Tool, das sein Modellmenü aus dieser Liste füllt (SillyTavern, LibreChat, n8n, Cline), nur Modelle anzeigt, mit denen es chatten kann. Fügen Sie?type=video(oderimage,music,speech,transcription,audiofür beide davon,chat, mehrere mit Kommas verbunden) für andere Arten hinzu, oder?type=allfür jedes Modell, zuerst Chat, dann Bild, Video, Musik, Sprache und Transkription. Jeder Eintrag enthälttype(chat,image,video,music,speech,transcription),endpoints(die Pfade, die es bedienen) undpricing.- Jedes Chat-Modell gibt auch an, was es kann:
context_length,max_output_tokens,input_modalities(image= es liest Bilder),supports_tools,supports_reasoning,supports_visionundsupported_parameters(die Anfragefelder, die es berücksichtigt). Dieselben Fakten finden sich auch unter den Namen von OpenRouter (architecture.input_modalities,top_provider.context_length,top_provider.max_completion_tokensundpricing.prompt/pricing.completionin Dollar pro token), sodass Tools, die für die Liste von OpenRouter entwickelt wurden, unsere unverändert lesen können. GET https://api.uberllm.dev/v1/models/<model id>: ein Modell, mit seinem Preis, seinem Kontext (Chat) und, für ein Medienmodell,parameters: ein JSON Schema des Anfragekörpers (siehe Video oder Bild erstellen).- Jeder Eintrag, in beiden Antworten, enthält außerdem:
available:true, wenn eine Anfrage dafür aktuell bedient werden kann.falsebedeutet, dass es im Moment niemand bedient, sodass eine Anfrage mitno_available_providerabgelehnt würde. Wählen Sie ein anderes Modell oder versuchen Sie es später erneut.input_modalities: was das Modell akzeptiert. Ein Modell, das ein Bild benötigt (Bild zu Video, Referenz zu Video, Bildbearbeitung), listet"image"neben"text"auf; eines, das ein Video akzeptiert (Upscaling), listet"video"auf.nsfw:truefür ein Modell, das für erwachsene oder ungefilterte Inhalte gemacht ist (Lustify, die "ungefilterten" Modelle und ähnliche). Überspringen Sie diese, wenn Ihr Produkt jugendfrei bleiben muss.
- Öffentlich, kein API key erforderlich:
GET https://api.uberllm.dev/api/v1/public/models(mit Preisen und denselben Feldernavailable,input_modalitiesundnsfw) - Web: uberllm.dev/#models und eine Seite pro Modell unter
uberllm.dev/models/<model id>
Was bei jeder Anfrage passiert
- UberLLM prüft, ob das Modell existiert, ob Ihr Prompt in sein Kontextfenster passt und ob es Tools unterstützt, falls Ihre Anfrage diese verwendet.
- Es reserviert die geschätzten Kosten von Ihrem Guthaben und leitet die Anfrage weiter.
- Die Anfrage wird an einen verfügbaren Provider für dieses Modell gesendet. Der Provider wird für jeden Aufruf neu gewählt: der günstigste, der schnell genug für Ihre Prompt-Größe zu antworten beginnt (innerhalb 2x des schnellsten gemessenen oder unter 1 Sekunde). Ein langer gestreamter Prompt geht auch an einen zweiten schnellen Provider, wenn der erste langsam startet; Sie erhalten und bezahlen eine Antwort. Die Benennung von Providern in
provider.only,ignoreoderorder, oder das Setzen vonsort, ersetzt diese Wahl. So funktioniert's: Smart Routing. - Wenn die Antwort abgeschlossen ist, begleicht UberLLM den Preis, den der Marketplace für diesen Aufruf meldet, und gibt den Rest der Reservierung frei.
Automatische Wiederholungsversuche
Wenn ein Aufruf fehlschlägt, bevor Inhalte Sie erreichen, wiederholt UberLLM ihn für Sie. Der Marktplatz findet bei jedem Versuch einen neuen Anbieter und berechnet nichts für einen Aufruf, der fehlschlug, bevor er weitergeleitet wurde, daher kostet Sie ein Wiederholungsversuch nur Zeit.
- Wiederholt: kein Anbieter für das Modell verfügbar (
no_sellers_for_model,no_healthy_sellers), der Marktplatz hatte keine Zeit mehr für die Weiterleitung (route_deadline_exceeded), ein429, der bittet, 5 Sekunden oder weniger zu warten, jeder5xx, ein Verbindungsfehler, ein Anbieter, dessen eigener Provider-Schlüssel oder Konto fehlgeschlagen ist, oder kein erstes Byte rechtzeitig. - Nicht wiederholt: das Modell existiert nicht, die Anfrage ist ungültig, oder ein Abrechnungs- oder Authentifizierungsproblem. Diese werden sofort zurückgegeben.
- Zeitplan: bis zu 4 Versuche, mit Wartezeiten von 0.3 s, 0.9 s, dann 2.7 s dazwischen
(oder dem
Retry-After, den der Marktplatz gesendet hat, falls dieser 5 Sekunden oder weniger beträgt). Wenn niemand das Modell anbietet, kommt die Antwort innerhalb weniger Sekunden zurück. - Warten auf das erste Byte: ein Stream erhält 10 Sekunden (mehr für einen langen Prompt
und mehr für ein Modell, das normalerweise langsam ist); eine Antwort ohne
"stream": trueerhält 85 Sekunden, da nichts ankommt, bevor es vollständig ist. Ein Versuch, der die vollen 85 Sekunden ausschöpft, wird kein zweites Mal abgewartet. Nach 150 Sekunden beginnt kein Wiederholungsversuch mehr.
Sobald das Streaming begonnen hat, wird nichts mehr wiederholt: ein Fehler mitten im Stream beendet den Stream und Ihnen wird nur das berechnet, was produziert wurde.
Wenn jeder Versuch fehlschlägt, erhalten Sie eine Fehlermeldung anstelle einer Antwort, und die Reservierung wird vollständig freigegeben. Die häufigsten sind:
| HTTP | code |
Wann |
|---|---|---|
| 503 | no_available_provider |
Niemand konnte dieses Modell gerade bedienen, selbst nach Wiederholungsversuchen: kein Anbieter, jeder Anbieter schlägt fehl oder ist zu langsam zum Starten, oder Ihre provider Optionen ließen keine Weiterleitung zu. Die Meldung nennt das Modell. Versuchen Sie es in Kürze erneut oder wählen Sie ein anderes Modell. |
| 503 | service_unavailable |
Ein temporäres Problem auf Seiten von UberLLM. Versuchen Sie es in wenigen Minuten erneut. |
| 404 | model_not_found |
Die Modell-ID ist nicht verfügbar. |
Die vollständige Liste finden Sie unter Fehler.
Fallback-Modelle
Senden Sie models mit einer Liste anderer Modell-IDs, die der Reihe nach versucht werden sollen, wenn das erste nicht bereitgestellt werden kann:
{ "model": "deepseek/deepseek-v4-flash",
"models": ["z-ai/glm-5.3", "qwen/qwen3.6-plus"],
"messages": [{ "role": "user", "content": "hi" }] }
Das nächste Modell wird nur versucht, wenn niemand das vorherige Modell gerade bereitstellen kann (no_available_provider), oder niemand es innerhalb Ihrer provider.max_price verkauft.
Ein Anfragefehler (ein fehlerhafter Body, eine unbekannte Modell-ID in einem der Felder) und eine Zahlungsverweigerung (Guthaben, Schlüssel-Limits) werden sofort beantwortet und niemals die Liste weitergegeben. Höchstens 5 Modelle in model und models zusammen. Das model-Feld der Antwort und die Aktivitätszeile benennen das Modell, das geantwortet hat. models funktioniert bei /v1/chat/completions und bei Bild-, Video-, Musik- und Sprachanfragen; /v1/messages und /v1/audio/transcriptions lesen es nicht.
Modell-Aliase
Anstelle einer Modell-ID können Sie benennen, was Sie benötigen, und UberLLM wählt das Modell bei jeder Anfrage aus:
best-price:<job>: das verfügbare Modell mit dem niedrigsten Preis für eine gewöhnliche Anfrage. Ein Chat-Modell wird nach seinem Preis pro Million Tokens verglichen, wobei die Ausgabe dreifach gezählt wird; ein Bildmodell nach einem Bild (ein 1024×1024 Bild, wenn es pro Megapixel bepreist wird); ein Videomodell nach seinem kürzesten Clip; ein Musikmodell nach einem Titel; ein Sprachmodell nach 1K Zeichen; ein Transkriptionsmodell nach einer Minute.fastest:<job>: das Modell mit der niedrigsten Medianzeit über seine erfolgreichen Anfragen auf UberLLM in den letzten 7 Tagen (Zeit bis zum ersten Token für Chat, Zeit bis zur fertigen Datei für Medien), wobei nur Modelle mit mindestens 5 solcher Anfragen gezählt werden. Wenn kein Modell genügend hat, wird die Anfrage mit503 no_timing_dataabgelehnt, undbest-price:funktioniert weiterhin.
Beide wählen nur unter Modellen aus, die gerade verfügbar sind: der Live-Markt zeigt einen gesunden Anbieter dafür, und UberLLMs letzte Anfrage an ihn in den letzten 10 Minuten fand nicht jeden Anbieter beschäftigt oder ausgefallen (die gleiche Regel wie available auf /v1/models). Auf einer Medienroute, wenn das von einem Alias ausgewählte Modell antwortet, dass niemand die Anfrage doch annehmen kann, geht dieselbe Anfrage an das nächste Modell weiter, für das der Alias steht (bis zu 3 Modelle), und das model der Antwort benennt dasjenige, das geantwortet hat. Wenn kein Modell für den Auftrag verfügbar ist, lautet die Antwort 503 no_available_provider und es wird nichts berechnet.
<job> ist eines von chat, image, image-edit, text-to-video, image-to-video, music, speech, transcription. Senden Sie einen Chat-Alias an /v1/chat/completions oder /v1/messages, und einen Medien-Alias an seine Medienroute. Das model-Feld der Antwort benennt das Modell, zu dem es aufgelöst wurde. GET /v1/models/aliases listet jeden Alias auf, der sich gerade auflöst, und sein Modell; GET /v1/models/best-price:chat beschreibt das Modell, für das er steht, mit gesetztem alias.
Routing-Optionen
Das provider-Objekt wird auf /v1/chat/completions gelesen. Eine Option, die UberLLM nicht anwenden kann, wird mit 400 unsupported_routing_option abgelehnt und es wird nichts berechnet, sodass eine Anfrage niemals mit einer stillschweigend verworfenen Einstellung ausgeführt wird.
| Option | Was es bewirkt |
|---|---|
only / allow |
Nur diese Routen oder Anbieter. uberllm (UberLLMs Marktplatz-Route) und seller (eigene Angebote der Verkäufer) wählen zwischen unseren Routen. Jeder andere Name, wie openai oder api.venice.ai, ist ein Anbieter auf dem Marktplatz: Die Anfrage läuft dann über die uberllm-Route, die nur Angebote dieser Anbieter nutzt. |
ignore / deny |
Niemals diese. Routennamen wie oben. Anbieternamen (höchstens 32) werden auf dem Marktplatz abgelehnt, und die Anfrage läuft dann über die uberllm-Route. |
order |
Bevorzugte Reihenfolge. Routennamen ordnen unsere Routen; Anbieternamen legen die Versuchsreihenfolge des Marktplatzes fest. Es macht einen Anbieter niemals berechtigt oder unberechtigt. |
sort |
price (die Standardeinstellung), latency (zuerst der schnellste beobachtete, innerhalb einer Preisspanne) oder uptime (zuerst der zuverlässigste, innerhalb derselben Spanne). throughput ordnet nur unsere eigenen Routen. |
max_price |
Der Höchstbetrag, den Sie pro Million Tokens zahlen, in US-Dollar: { "prompt": 1.0, "completion": 3.0 }. Routen, die darüber liegen, werden übersprungen; die Marktplatz-Route wird für Verkäufer mindestens so weit unter dem Listenpreis des Modells gehalten, wie Ihr Limit es erfordert. Wenn nichts mehr übrig ist, wird die Anfrage mit 400 max_price_exceeded abgelehnt und es wird nichts berechnet. Wenn Sie sowohl prompt als auch completion festlegen, wird eine Anfrage niemals über diese Beträge hinaus für die verwendeten Tokens abgerechnet. |
allow_fallbacks |
false schaltet die automatischen Wiederholungsversuche oben ab; der erste Fehler wird an Sie zurückgegeben. |
data_collection |
Nur "allow" (die Standardeinstellung) wird akzeptiert. |
zdr, require_parameters |
Nur false wird akzeptiert. |
Die Modell-Suffixe :floor und :nitro werden akzeptiert und von der Modell-ID entfernt; :floor sortiert nach Preis und :nitro nach Durchsatz.
Für Bild, Video, Musik und Sprache wird jede Anfrage an einen verfügbaren Drittanbieter für das Modell gesendet. provider.max_price ist der Höchstbetrag, den eine Einheit (Bild, Sekunde, Megapixel, Minute, 1K Zeichen oder Anfrage) kosten darf, als Zahl: { "max_price": 0.05 }; es deckelt auch die Rechnung. Jede andere provider-Option wird für Medien abgelehnt.
Tags
Senden Sie metadata, ein Objekt mit bis zu 16 Textwerten (Schlüssel bis zu 64 Zeichen
ohne Doppelpunkt, Werte bis zu 512), bei jeder Anfrage:
{ "model": "deepseek/deepseek-v4-flash", "messages": [...],
"metadata": { "project": "spring-ads", "run": "42" } }
Die Tags werden mit der Anfrage gespeichert und niemals an einen Anbieter gesendet. Sie erscheinen bei
der Anfrage in Dashboard → Activity, beim Status eines Video- oder Musik-Jobs und im
CSV-Export (Spalte metadata). Filtern Sie Activity nach einem Tag mit
GET /api/v1/usage/activity?tag=project:spring-ads (wiederholen Sie tag, um mehrere zu erfordern);
der CSV-Link übernimmt denselben Filter. Auf /v1/messages wird Anthropic's eigenes
metadata ({"user_id": "…"}) auf die gleiche Weise gespeichert.