NeuVerbinde jeden Agenten mit UberLLM: ein Schlüssel, alle Modelle, zum Listenpreis oder günstiger.
UberLLM

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 (oder image, music, speech, transcription, audio für beide davon, chat, mehrere mit Kommas verbunden) für andere Arten hinzu, oder ?type=all für jedes Modell, zuerst Chat, dann Bild, Video, Musik, Sprache und Transkription. Jeder Eintrag enthält type (chat, image, video, music, speech, transcription), endpoints (die Pfade, die es bedienen) und pricing.
  • 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_vision und supported_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_tokens und pricing.prompt / pricing.completion in 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. false bedeutet, dass es im Moment niemand bedient, sodass eine Anfrage mit no_available_provider abgelehnt 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: true fü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 Feldern available, input_modalities und nsfw)
  • Web: uberllm.dev/#models und eine Seite pro Modell unter uberllm.dev/models/<model id>

Was bei jeder Anfrage passiert

  1. 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.
  2. Es reserviert die geschätzten Kosten von Ihrem Guthaben und leitet die Anfrage weiter.
  3. 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, ignore oder order, oder das Setzen von sort, ersetzt diese Wahl. So funktioniert's: Smart Routing.
  4. 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), ein 429, der bittet, 5 Sekunden oder weniger zu warten, jeder 5xx, 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": true erhä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 mit 503 no_timing_data abgelehnt, und best-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.