NouveauBranchez n’importe quel agent sur UberLLM : une clé, tous les modèles, au prix catalogue ou moins.
UberLLM

Erreurs

UberLLM renvoie des enveloppes d'erreur de style OpenAI afin que la gestion des erreurs existante fonctionne sans modification :

{
  "error": {
    "code": "insufficient_credits",
    "message": "Your credit balance is too low to serve this request.",
    "type": "insufficient_credits"
  }
}

Surface d’inférence (/v1/*)

HTTP code Signification Que faire
402 insufficient_credits Votre solde prépayé ne couvre pas la réservation de la requête. Rechargez dans Tableau de bord → Crédits.
402 key_spend_cap_exceeded Cette clé a atteint sa limite de dépenses configurée (quotidienne / mensuelle / sur la durée de vie). Augmentez ou supprimez le plafond de la clé, ou utilisez une autre clé.
400 invalid_request Le corps de la requête n’a pas pu être analysé, ou le modèle a rejeté la requête (le message en indique la raison). Corrigez la requête ; elle n’est pas réessayée.
413 request_too_large Le corps de la requête dépasse 10 Mo (le plus souvent des images envoyées en base64). Envoyez les images sous forme de liens https://, ou raccourcissez la conversation. Rien n’a été facturé.
404 model_not_found L’id model n’est pas disponible. Un préfixe uberllm/ devant fonctionne : uberllm/deepseek/deepseek-v4.1-flash atteint deepseek/deepseek-v4.1-flash. Vérifiez GET /v1/models ; corrigez l’id.
400 context_length_exceeded Le prompt est plus long que ce que le modèle accepte, quel que soit le vendeur. Sur /v1/chat/completions sans liste models, le modèle le plus proche qui l’accepte répond à la place (le model de la réponse le nomme) ; cette erreur survient quand aucun ne le fait, ou sur /v1/messages. Le message donne les deux tailles et nomme des modèles qui l’acceptent. Envoyez moins, ou choisissez un modèle nommé dans le message. Rien n’a été facturé.
400 tools_not_supported La requête envoie tools et le modèle ne peut pas les appeler, quel que soit le vendeur. Même règle de remplacement que ci-dessus. Le message nomme des modèles qui le peuvent. Envoyez-la sans outils, ou choisissez un modèle nommé dans le message. Rien n’a été facturé.
400 max_price_exceeded Personne ne vend le modèle dans votre provider.max_price pour le moment (et aucun modèle dans models ne pourrait le prendre). Augmentez max_price, réessayez plus tard, ou nommez d’autres modèles. Rien n’a été facturé.
400 unsupported_routing_option Une option provider qu’UberLLM ne peut pas appliquer (le message la nomme). Retirez-la ; voir Modèles et routage.
400 invalid_metadata metadata n’est pas un objet contenant jusqu’à 16 valeurs texte. Corrigez les tags ; les nombres doivent être entre guillemets.
400 unknown_capability Un alias best-price: / fastest: ne désigne aucune tâche. Utilisez l’un de chat, image, image-edit, text-to-video, image-to-video, music, speech, transcription.
400 wrong_endpoint Le modèle (ou l’alias) fait une tâche que cette route ne fait pas : un modèle d’image, de vidéo, de musique, de synthèse vocale ou de transcription envoyé à /v1/chat/completions ou /v1/messages, un modèle de chat envoyé à une route média, ou synthèse vocale et transcription interverties. Le message nomme la bonne route. Refusée avant toute exécution ; rien n’est facturé, et l’Activité la répertorie comme refusée. Envoyez-la vers la route nommée dans le message (aussi dans endpoints sur /v1/models/{id}).
503 no_timing_data fastest: a été demandé avant que suffisamment de requêtes aient été mesurées pour comparer les modèles. Utilisez best-price: ou nommez un modèle.
429 rate_limited Cette clé a dépassé sa limite de requêtes par minute, ou la place de marché a continué à limiter le débit après les réessais automatiques. Ralentissez et réessayez avec jitter ; augmentez la limite de débit de la clé.
503 no_available_provider Personne ne peut servir ce modèle pour le moment, même après les réessais automatiques (aucun vendeur, tous les vendeurs en échec ou trop lents à démarrer, ou vos options provider n’ont laissé aucune cible de routage), ou un alias best-price: / fastest: n’a trouvé aucun modèle disponible pour la tâche pour le moment. Le message nomme le modèle ou la tâche. Cela couvre aussi un vendeur dont le propre compte fournisseur a échoué : UberLLM essaie d’autres vendeurs et ne relaie jamais l’erreur de ce vendeur comme si votre clé était erronée. Réessayez sous peu ou choisissez un autre modèle. Rien n’a été facturé.
503 service_unavailable Un problème temporaire du côté d’UberLLM. Réessayez dans quelques minutes.

Les requêtes d’image, de vidéo et de musique ajoutent quelques codes qui leur sont propres (image_required, invalid_image_url (un lien vers une image source qui ne mène pas à une image), max_cost_too_low, idempotency_key_reused, artifact_expired) ; voir Créer une vidéo ou une image.

Une requête de chat refusée ou échouée apparaît dans Tableau de bord → Activité avec le message qui vous a été envoyé. Les réponses de chat, d’image, de vidéo, de musique, de synthèse vocale et de transcription portent un en-tête X-Request-Id avec le même id que sa ligne d’Activité, erreurs comprises.

Les réessais sont effectués pour vous avant qu’une erreur ne soit renvoyée : jusqu’à 4 tentatives, uniquement avant le premier octet de contenu. Voir Modèles et routage.

Réservations et interruptions

UberLLM réserve un coût estimé avant de relayer la requête et règle ensuite selon l’usage réel. Si une requête échoue, est interrompue, ou si vous vous déconnectez en cours de streaming, la réservation inutilisée est libérée — vous n’êtes facturé que pour le contenu réellement produit. Les streams interrompus sont réconciliés à partir d’une estimation du tokenizer et signalés dans Tableau de bord → Activité.

Limitation du débit

Les limitations de débit par clé sont appliquées avec une fenêtre fixe. Sur la surface d'inférence, les vérifications de limitation de débit échouent en mode fermé — si UberLLM ne peut pas vérifier votre limite, la requête est rejetée plutôt que servie sans comptage. Définissez (ou augmentez) la limite de requêtes par minute d'une clé dans Tableau de bord → API keys.

Chaque réponse authentifiée /v1/* contient la fenêtre actuelle de la clé :

En-tête Signification
X-RateLimit-Limit Requêtes que cette clé peut envoyer par minute
X-RateLimit-Remaining Requêtes restantes dans la minute actuelle
X-RateLimit-Reset Quand la fenêtre redémarre (secondes Unix)
Retry-After En cas de 429 de cette limite : secondes à attendre avant de réessayer

Ralentissez lorsque X-RateLimit-Remaining approche 0. Les en-têtes sont omis lorsque la fenêtre ne peut pas être lue.

API Vendeur (/api/v1/seller/*)

Ces codes utilisent les standards REST :

HTTP code Signification
400 invalid_request Échec de la validation (par ex. endpoint_url non-https, prix manquants pour absolute, multiplier en dehors de 0 < m ≤ 1.5). Le message indique le champ concerné.
400 model_not_in_catalog model_id n'est pas un modèle de catalogue connu.
401 unauthorized JWT de tableau de bord manquant ou invalide.
404 seller_not_found Aucun vendeur pour votre organisation — appelez POST /api/v1/seller/register d'abord.
404 offer_not_found Aucune offre avec cet identifiant sous votre vendeur.
409 invalid_status_transition Changement de statut illégal — par ex. reprendre une offre delisted (une offre déréférencée est terminale).

Note : une sonde de validation échouée n'est pas une réponse d'erreur. L'offre est créée/mise à jour avec succès et renvoyée avec status: "paused" et un last_probe_error expliquant pourquoi — corrigez l'endpoint et PATCH-la à nouveau à active pour relancer la sonde. Voir Vendeurs.

Erreurs d'authentification

HTTP Signification
401 En-tête Authorization manquant/invalide. Les clés d'inférence sont Bearer ull_... ; les endpoints de tableau de bord utilisent votre JWT de compte.
403 La clé est valide mais ne dispose pas du scope requis (par exemple, une clé d'inférence seule appelant un endpoint de tableau de bord).