RouterShiftRouterShift
Parcourir les modèlesTarifsDocumentation
RouterShiftRouterShiftRouterShift. Infrastructure IA d'entreprise.
Parcourir les modèlesStatutDocumentationConditionsConfidentialitéDPATransparence

Documentation API

AperçuFonctionnalités de la plateformeDémarrage rapideSDK et agentsAuthentificationEffectuer des requêtesLimites de débitFacturation et tarificationAccès privéRèglement en deux devisesGestion des erreurs
Référence API

Aperçu de l'API RouterShift

RouterShift fournit des interfaces compatibles OpenAI, Anthropic et Gemini pour les modèles actifs pour votre clé. Routage, failover, facturation et preuves d’audit sont appliqués derrière la frontière de protocole.

Fonctionnalités clés

  • API compatible OpenAI — remplacement direct pour tout client SDK OpenAI
  • Routage intelligent avec stratégies configurables (pondéré, round-robin, basé sur la latence, basculement)
  • Disjoncteur intégré et limitation de débit pour protéger votre application
  • Cache sémantique pour réduire la latence et les coûts sur les requêtes répétées
  • Journalisation complète, surveillance et analytique des dépenses
  • Support multi-fournisseurs avec basculement automatique en cas d'indisponibilité d'un fournisseur

URL de base

Toutes les requêtes API utilisent l'URL de base suivante. L'API est entièrement compatible avec les bibliothèques clientes OpenAI — changez simplement l'URL de base et utilisez votre clé API RouterShift.

https://api.routershift.com/v1

URL de base compatible Anthropic

Pour le SDK Anthropic ou Claude Code. Note : pas de suffixe /v1 — le SDK ajoute automatiquement /v1/messages.

https://api.routershift.com

Compatibilité OpenAI

Les clients OpenAI, Anthropic et Gemini se connectent généralement en changeant l’URL de base et l’identifiant. Les extensions du protocole natif ne sont pas automatiquement portables : la conversion entre protocoles ne prend en charge que les champs de sémantique équivalente. Consultez OpenAPI pour les interfaces documentées ; les restrictions des routes et modèles restent applicables.

Catégories de modèles prises en charge

GET /v1/models fait autorité pour les modèles disponibles avec votre clé. La disponibilité dépend aussi du produit, de la santé des routes, des permissions, du solde, de la région et de l’accès privé.

Obtenir de l'aide

Si vous rencontrez des problèmes ou avez des questions, consultez les sections ci-dessous pour des guides détaillés. Pour les questions de facturation, contactez le support via la console. Pour les mises à jour de statut en temps réel, visitez la page Statut.

Liste complète des points de terminaison

Le tableau est un index lisible du plan de données public. Le contrat machine est /api/openapi.yaml et la référence interactive /api/docs; les portées de clé restent applicables.

GET/v1/version

Version et compatibilité de l’API de données

GET/v1/models

Liste des modèles

GET/v1/requests/:id

Reçu original : lire les preuves d’exécution et de facturation sans renvoi

GET/v1/requests/:id/result

Résultat audio capturé : lire les résultats originaux pris en charge sans nouvelle génération

POST/v1/chat/completions

Complétions de chat (compatible OpenAI)

POST/v1/contracted/chat/completions

Complétions de chat (compatible OpenAI)

POST/v1/messages

API Messages (compatible Anthropic)

POST/v1/messages/count_tokens

Estimation des tokens Messages (texte, réflexion et outils ; pas un usage natif exact)

POST/v1/models/gemini/:model/generateContent

Génération de contenu Gemini

POST/v1/models/gemini/:model/streamGenerateContent

Génération de contenu en flux Gemini

POST/v1/embeddings

Embeddings de texte

POST/v1/rerank

Reclassement

POST/v1/chat/completions/estimate

Estimation préalable des tokens et du coût

POST/v1/images/generations

Génération d'images

POST/v1/contracted/images/generations

Génération d'images

GET/v1/images/tasks/:id

Tâche d’image : consulter une tâche existante sans relancer la génération

POST/v1/audio/transcriptions

Transcription audio

POST/v1/audio/speech

Synthèse vocale

POST/v1/contracted/audio/speech

Synthèse vocale

POST/v1/tts

Synthèse vocale étendue

POST/v1/transcriptions

Transcription étendue

POST/v1/contracted/transcriptions

Transcription étendue

POST/v1/midjourney/imagine

Génération d'images Midjourney

POST/v1/suno/generate

Génération de musique Suno

POST/v1/video/generations

Tâche de génération vidéo

POST/v1/contracted/video/generations

Tâche de génération vidéo

GET/v1/video/tasks/:task_id

État de la tâche vidéo

POST/v1/chat/completions/async

Tâche asynchrone — Soumettre

GET/v1/chat/completions/async/:task_id

Tâche asynchrone — Vérifier le statut

GET/v1/chat/completions/async/:task_id/result

Tâche asynchrone — Obtenir le résultat

POST/v1/batch

Traitement par lots

GET/v1/batch/:batch_id

État du traitement par lot

GET/v1/batch/:batch_id/results

Téléchargement des résultats du lot

POST/v1/batch/:batch_id/cancel

Annuler un traitement par lot

POST/v1/mcp/

Passerelle d'outils MCP JSON-RPC

GET/v1/mcp/sse

Transport SSE MCP

POST/v1/a2a/

Passerelle JSON-RPC A2A

GET/v1/a2a/sse

Flux d’événements SSE A2A

MéthodeCheminDescription
GET/v1/versionVersion et compatibilité de l’API de données
GET/v1/modelsListe des modèles
GET/v1/requests/:idReçu original : lire les preuves d’exécution et de facturation sans renvoi
GET/v1/requests/:id/resultRésultat audio capturé : lire les résultats originaux pris en charge sans nouvelle génération
POST/v1/chat/completionsComplétions de chat (compatible OpenAI)
POST/v1/contracted/chat/completionsComplétions de chat (compatible OpenAI)
POST/v1/messagesAPI Messages (compatible Anthropic)
POST/v1/messages/count_tokensEstimation des tokens Messages (texte, réflexion et outils ; pas un usage natif exact)
POST/v1/models/gemini/:model/generateContentGénération de contenu Gemini
POST/v1/models/gemini/:model/streamGenerateContentGénération de contenu en flux Gemini
POST/v1/embeddingsEmbeddings de texte
POST/v1/rerankReclassement
POST/v1/chat/completions/estimateEstimation préalable des tokens et du coût
POST/v1/images/generationsGénération d'images
POST/v1/contracted/images/generationsGénération d'images
GET/v1/images/tasks/:idTâche d’image : consulter une tâche existante sans relancer la génération
POST/v1/audio/transcriptionsTranscription audio
POST/v1/audio/speechSynthèse vocale
POST/v1/contracted/audio/speechSynthèse vocale
POST/v1/ttsSynthèse vocale étendue
POST/v1/transcriptionsTranscription étendue
POST/v1/contracted/transcriptionsTranscription étendue
POST/v1/midjourney/imagineGénération d'images Midjourney
POST/v1/suno/generateGénération de musique Suno
POST/v1/video/generationsTâche de génération vidéo
POST/v1/contracted/video/generationsTâche de génération vidéo
GET/v1/video/tasks/:task_idÉtat de la tâche vidéo
POST/v1/chat/completions/asyncTâche asynchrone — Soumettre
GET/v1/chat/completions/async/:task_idTâche asynchrone — Vérifier le statut
GET/v1/chat/completions/async/:task_id/resultTâche asynchrone — Obtenir le résultat
POST/v1/batchTraitement par lots
GET/v1/batch/:batch_idÉtat du traitement par lot
GET/v1/batch/:batch_id/resultsTéléchargement des résultats du lot
POST/v1/batch/:batch_id/cancelAnnuler un traitement par lot
POST/v1/mcp/Passerelle d'outils MCP JSON-RPC
GET/v1/mcp/sseTransport SSE MCP
POST/v1/a2a/Passerelle JSON-RPC A2A
GET/v1/a2a/sseFlux d’événements SSE A2A

Correspondance des protocoles

RouterShift est compatible avec plusieurs protocoles API. Le tableau ci-dessous montre l'URL de base et la configuration SDK pour chacun.

Compatible OpenAI

https://api.routershift.com/v1

Models: <available-model-code>

Authorization: Bearer / x-api-key

Compatible Anthropic

https://api.routershift.com

Models: <available-model-code>

x-api-key: sk-xxx

Gemini natif

https://api.routershift.com/v1

Models: <available-model-code>

Authorization: Bearer

URL de baseExemple de paramètre de modèleEn-tête d'authentification
https://api.routershift.com/v1
SDK OpenAI standard — changez simplement base_url
<available-model-code>Authorization: Bearer / x-api-key
https://api.routershift.com
SDK Anthropic standard — changez simplement base_url
<available-model-code>x-api-key: sk-xxx
https://api.routershift.com/v1
Format natif Gemini, appelez generateContent directement
<available-model-code>Authorization: Bearer

Authentification unifiée

Tous les points de terminaison utilisent la même authentification. Les deux formats d'en-tête fonctionnent de manière identique :

Format compatible OpenAI

Authorization: Bearer sk-xxx

Format compatible Anthropic

x-api-key: sk-xxx

Fonctionnalités de la plateforme

Aperçu de l'API RouterShift

RouterShift fournit des interfaces compatibles OpenAI, Anthropic et Gemini pour les modèles actifs pour votre clé. Routage, failover, facturation et preuves d’audit sont appliqués derrière la frontière de protocole.

RouterShift utilise des portefeuilles prépayés et des prix figés par requête. Les requêtes réussies sont débitées au prix de vente client selon les dimensions de facturation du produit.

Fonctionnalités clés

GET /v1/models fait autorité pour les modèles disponibles avec votre clé. La disponibilité dépend aussi du produit, de la santé des routes, des permissions, du solde, de la région et de l’accès privé.

  • API compatible OpenAI — remplacement direct pour tout client SDK OpenAI
  • Routage intelligent avec stratégies configurables (pondéré, round-robin, basé sur la latence, basculement)
  • Disjoncteur intégré et limitation de débit pour protéger votre application
Ouvrir

Guide de démarrage rapide

Démarrez avec RouterShift en moins de 3 minutes. Suivez les étapes ci-dessous pour effectuer votre premier appel API.

  • 1. Créez un compte
  • 2. Effectuez votre premier appel API
  • 3. Installez un SDK
Ouvrir

Effectuer des requêtes

RouterShift propose le chat, les embeddings, la découverte de modèles et d'autres interfaces prises en charge. Utilisez le format de requête et de réponse de l'interface choisie, compatible OpenAI, Anthropic ou Gemini.

  • Réponses en streaming
  • Requêtes asynchrones
  • Traitement par lots
Ouvrir

Accès privé

L'accès privé réunit BYOK et pools de comptes IA avec contrôle centralisé, tarification flexible et basculement.

  • Intégration BYOK
  • Pools de comptes
  • Basculement sur incident
Ouvrir

Ajouter des outils de modèles à un agent

Ajoutez des outils à un agent via MCP ou utilisez le SDK Python/Node dans votre application : ces accès sont proposés en parallèle. Suivez ces quatre étapes stdio locales et ne placez pas d’identifiants dans une configuration partagée ou un dépôt de code.

  • Créer un répertoire dédié et installer MCP
  • Configurer le client stdio local
  • Redémarrer le connecteur et vérifier dix outils
Ouvrir

Facturation et tarification

RouterShift utilise des portefeuilles prépayés et des prix figés par requête. Les requêtes réussies sont débitées au prix de vente client selon les dimensions de facturation du produit.

  • Modèle de tarification
  • Portefeuille et crédits
  • Facturation et factures
Ouvrir

Guide de démarrage rapide

Démarrez avec RouterShift en moins de 3 minutes. Suivez les étapes ci-dessous pour effectuer votre premier appel API.

1. Créez un compte

Créez un compte si l’auto-inscription est active ou suivez l’invitation et le parcours fournis par votre administrateur.

2. Effectuez votre premier appel API

Créez une clé API nommée et limitez modèles, budget, expiration, plages IP et autres portées au strict nécessaire.

3. Installez un SDK

Interrogez GET /v1/models, vérifiez le prix de vente et les dimensions natives, puis assurez un solde CNY ou USD disponible suffisant.

4. Utilisez le SDK OpenAI avec RouterShift

Remplacez YOUR_API_KEY et YOUR_MODEL_CODE par les valeurs de la console et du catalogue à l’exécution.

curl "https://api.routershift.com/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ROUTERSHIFT_API_KEY" \
  -d '{
  "model": "YOUR_MODEL_CODE",
  "messages": [
    {
      "role": "user",
      "content": "Hello!"
    }
  ],
  "max_tokens": 100
}'

5. Explorez les modèles disponibles

Rapprochez état, latence, usage natif, source de cache et dépenses par date, modèle et clé API; configurez budgets et alertes disponibles.

Intégrations SDK et agents

Utilisez un client compatible standard ou les SDK de données Python et Node.js de RouterShift ; les deux partagent le même contrat d’API actif.

Téléchargements Python 0.3.7 et Node 0.3.7

Les téléchargements à version fixe de cette page correspondent à Python 0.3.7 et Node 0.3.7 et incluent la découverte détaillée des modèles. Python 3.9 ou ultérieur est requis ; Node.js et MCP local exigent Node 20 ou ultérieur. Ces archives ne signifient pas une publication sur npm ou PyPI. Le SDK Node ordinaire ne nécessite pas les dépendances MCP facultatives.

Aucun code source client ni identifiant fournisseur ne sont nécessaires. Indiquez langage/environnement et version du SDK, model_code + operation + mode, paramètres anonymisés, limites des médias et expiration des URL, reprise, budget par devise et concurrence. REST est le contrat d’exécution ; les SDK sont des clients légers facultatifs et MCP local une entrée stdio pour agents. Le SDK propre utilise une origine sans /v1. Un SDK fournisseur peut exiger une adaptation des champs et répétitions ; changer seulement la clé ou l’URL ne garantit pas la compatibilité multimodale. Alignez exemples anonymisés de requête/réponse et résultats attendus. Testez d’abord des réponses synthétiques 200/202, GET en attente, SSE incomplet, envoi inconnu et livraison répétée ; l’acceptation payante exige une autorisation distincte et un budget explicite.

python -m pip install "https://routershift.com/downloads/sdk/routershift-0.3.7-py3-none-any.whl"
Télécharger le wheel PythonTélécharger l’archive Node.jsVoir les sommes SHA-256

Lister les modèles visibles par votre clé API

Exécutez d’abord cette requête en lecture seule et copiez un code de modèle exact dans les exemples ci-dessous. La liste indique ce que la clé peut voir ; elle ne prouve pas que chaque opération ou mode est activé pour ce modèle.

Utilisez la même clé d’exécution pour GET /v1/models?details=1 : aucune tâche, réserve de fonds ou invocation fournisseur ; authentification, journaux et limites restent applicables. Vérifiez routes/modes de details.operations, constraints.status et import_contract.status/reason. Conservez dimensions, conditions, devise, précision, sélecteurs, heure d’observation et semantic_sha256. Un prix de référence n’est pas un contrat exécutable. Des limites absentes/inconnues ne signifient pas des entrées illimitées ; available ne garantit pas les fonds. Ce n’est ni un Schema d’entrée complet ni une projection universelle des contrats hors tokens. models.list() reste la liste ordinaire par défaut ; demandez explicitement les détails avec les méthodes incluses dans le SDK ou REST. Pour constraints, available décrit le sous-ensemble validé de l’opération ; unsupported exige sa documentation spécifique.

Distinguez details.constraints.operations[].scope : reviewed_subset désigne un sous-ensemble validé de l’opération ; finite_admission_opt_in concerne seulement les requêtes à limite finie explicitement activée, pas tout chat ordinaire. parameters n’est pas un Schema d’entrée complet. Si details.admission existe, vérifiez status, profile, /details/admission/required_headers et les limites déclarées d’entrée/sortie ; les modèles inconnus restent unavailable. La découverte n’accorde ni fonds ni plafond tarifaire universel.

Node 0.3.7 inclut listDetails() et l’option details=true de models.list ; Python 0.3.7 inclut models.list(details=True) et list_details(). Ces méthodes de découverte détaillée font partie des paquets de cette version. models.list() conserve la liste ordinaire par défaut ; les anciennes installations ne reçoivent pas automatiquement les nouvelles méthodes.

curl --fail-with-body --connect-timeout 10 --max-time 30 "https://api.routershift.com/v1/models?details=1" \
  -H "Authorization: Bearer $ROUTERSHIFT_API_KEY"

Conversations textuelles

Python, Node et MCP peuvent appeler des modèles de texte. L’agent peut conserver son modèle principal et utiliser RouterShift selon ses besoins. Les autorisations et les frais restent dans la même API.

import os
from routershift import RequestOptions, RouterShift

client = RouterShift(api_key=os.environ["ROUTERSHIFT_API_KEY"])
response = client.chat.completions.create(
    model="YOUR_TEXT_MODEL_CODE",
    messages=[{"role": "user", "content": "Summarize this project in one sentence."}],
    request_options=RequestOptions(max_retries=0),
)
print(response.choices[0].message.content)

Requêtes Omni par HTTP

Cet exemple envoie du son WAV et demande du texte et du son par flux HTTP. Choisissez une route compatible OpenAI validée, avec un mode stream et une voix pris en charge par le modèle. Les modèles limités à SSE exigent stream:true ; routershift_chat accepte aussi cette option. Le SDK préserve les blocs de contenu, l’audio, les modalités, les appels d’outils et les réponses audio. HTTP Omni ne fournit ni WebSocket Realtime ni conversion arbitraire entre protocoles de fournisseurs.

import base64
import os
from pathlib import Path
from routershift import RequestOptions, RouterShift

client = RouterShift(api_key=os.environ["ROUTERSHIFT_API_KEY"])
audio_data = base64.b64encode(Path("/absolute/path/to/sample.wav").read_bytes()).decode()
response = client.chat.completions.create(
    model="YOUR_OMNI_MODEL_CODE",
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "Describe the sound."},
        {"type": "input_audio", "input_audio": {"data": audio_data, "format": "wav"}},
    ]}],
    stream=True,
    modalities=["text", "audio"],
    audio={"voice": "YOUR_MODEL_VOICE", "format": "wav"},
    request_options=RequestOptions(max_retries=0),
)
for chunk in response:
    if chunk.choices:
        delta = chunk.choices[0].delta or {}
        print(delta.get("content", ""), end="")
        if delta.get("audio"):
            print(delta["audio"].get("transcript", ""), end="")

Synthèse vocale

audio.speech appelle /v1/audio/speech. Python renvoie les octets audio ; Node renvoie les octets data et le contentType réel. Choisissez une voix et un format pris en charge. L’audio renvoyé n’est pas enregistré automatiquement dans un fichier local.

import os
from routershift import RouterShift

client = RouterShift(api_key=os.environ["ROUTERSHIFT_API_KEY"])
speech = client.audio.speech(
    model="YOUR_SPEECH_MODEL_CODE",
    input="Welcome to RouterShift.",
    voice="YOUR_MODEL_VOICE",
    response_format="wav",
)
print(len(speech))

Transcription audio

audio.transcribe envoie le fichier audio explicitement choisi en multipart à /v1/audio/transcriptions. Conservez son extension réelle. L’exemple demande JSON et lit text ; les langues et formats dépendent de la route.

import os
from pathlib import Path
from routershift import RouterShift

client = RouterShift(api_key=os.environ["ROUTERSHIFT_API_KEY"])
transcript = client.audio.transcribe(
    model="YOUR_TRANSCRIPTION_MODEL_CODE",
    file=Path("/absolute/path/to/sample.wav").read_bytes(),
    filename="sample.wav",
    response_format="json",
)
print(transcript.text)

Transcrire une URL audio HTTPS

Utilisez audio.transcribe_url en Python, audio.transcribeURL en Node.js ou envoyez du JSON à /v1/transcriptions avec file_url. Le SDK valide l’URL HTTPS sans télécharger l’enregistrement localement. Les onglets Go et Java emploient leurs clients HTTP standard ; RouterShift ne prétend pas fournir de SDK Go ou Java propriétaire.

import os
from routershift import RouterShift

client = RouterShift(api_key=os.environ["ROUTERSHIFT_API_KEY"])
transcript = client.audio.transcribe_url(
    "YOUR_TRANSCRIPTION_MODEL_CODE",
    "https://media.example/recording.wav",
    language="en",
    audio_format="wav",
    response_format="json",
)
print(transcript.text)

Générer des images et consulter les tâches

Utilisez images.generate avec un modèle activé pour la génération d’images. Pour les modèles prenant en charge les images asynchrones, ajoutez async_=True en Python ou async: true en Node.js, puis consultez l’id renvoyé avec images.retrieve. La réponse finale contient data et les URL des images ; une réponse en attente contient id et status.

import os
from routershift import ImageTaskResponse, RouterShift

client = RouterShift(api_key=os.environ["ROUTERSHIFT_API_KEY"])
image = client.images.generate(
    model="YOUR_IMAGE_MODEL_CODE",
    prompt="A quiet garden in watercolor",
)
print(image)
if isinstance(image, ImageTaskResponse):
    print(client.images.retrieve(image.id))

Soumettre une vidéo et consulter son état

videos.create soumet une tâche vidéo et renvoie task_id. Enregistrez-le avant d’appeler videos.retrieve ; une tâche en attente peut ne pas encore avoir de video_url. Les deux SDK proposent videos.poll pour une attente limitée. Le chemin de l’API est /v1/video/generations, avec video au singulier.

Les routes natives vérifiées Seedance et Wan 3.0 acceptent generate_audio : omettez-le pour garder le choix du fournisseur, false pour supprimer la piste audio, true pour l’inclure. Wan le convertit en parameters.audio et active actuellement le son par défaut. Le tarif vidéo Wan reste identique avec ou sans son, sans supplément audio. Les autres routes peuvent refuser ce champ ; une valeur explicite ne doit jamais être supprimée silencieusement.

import os
from routershift import RouterShift

client = RouterShift(api_key=os.environ["ROUTERSHIFT_API_KEY"])
task = client.videos.create(
    model="YOUR_VIDEO_MODEL_CODE",
    prompt="A slow camera movement through a garden",
)
print(task.task_id)
result = client.videos.retrieve(task.task_id)
print(result.status, result.video_url)

Choisir les paramètres selon le modèle

N’envoyez que les paramètres validés pour le modèle et l’opération choisis. Conservez false explicite et seed=0 ; l’omission laisse la valeur par défaut du fournisseur. Ces notes décrivent l’implémentation, pas une disponibilité en production vérifiée.

  • Qwen Image 3.0 : seed, watermark, prompt_extend et enable_thinking sont propres au modèle. prompt_extend_mode accepte direct ou agent ; agent exige l’extension du prompt et ne s’applique pas à l’édition d’image. enable_thinking s’applique uniquement lorsque l’extension du prompt est activée et n’active pas implicitement prompt_extend.
  • Vidéo Wan 3.0 : seed, watermark et prompt_extend sont propres au modèle. generate_audio commande la génération audio ; son caractère facultatif, obligatoire ou non pris en charge dépend du modèle. Les médias file/link exigent prompt_extend=true ou l’omission ; false explicite est refusé.
  • Ark Seedance : la route actuelle de la plateforme n’accepte ni seed ni prompt_extend. Ne réutilisez pas les paramètres Qwen ou Wan entre fournisseurs.

Prise en charge dans le code ne signifie pas déploiement, et déploiement ne signifie pas validation du produit. L’édition avancée, l’extension vidéo, MOV, Draft, HappyHorse, Wan 2.7, Animate et VACE en développement hors ligne ne constituent pas des produits activés. Vérifiez modèle, opération et paramètres avant une requête payante.

Des images de référence à une vidéo avec première image (REST, SDK, MCP)

Cet exemple crée une image à partir de trois références HTTPS sans portrait, puis transmet son URL HTTPS comme image_url pour la première image de la vidéo. Remplacez les deux modèles par des codes visibles pour votre clé dans /v1/models et acceptés séparément pour chaque opération ; la visibilité ne suffit pas. Les 720p et 5 secondes de l’exemple exigent une route vidéo compatible.

Ark : utilisez une route acceptée de retouche Seedream Pro et une route Seedance avec première image. Seul un modèle acceptant trois références peut recevoir cette entrée ; 2048x1152 n’est pas une taille universelle. Les portraits de personnes réelles suivent des règles distinctes ; une exception texte-vers-image liée au même compte n’autorise pas la fusion de trois photos.

Bailian : une route de retouche Qwen Image 3.0 acceptée prend une à trois références et renvoie une URL ; n’attendez pas b64_json et ne présumez pas que le mode image asynchrone est activé. Wan utilise image_url pour la première image. Résolution et durée doivent être acceptées par la route choisie ; une fonction de la console fournisseur ne prouve pas l’activation de la route de la plateforme.

Les onglets décrivent une suite d’étapes, pas des relances automatiques. Avec REST ou MCP, lancez chaque étape séparément. Ignorez la consultation de la tâche image si une URL finale est déjà retournée ; sinon, consultez une seule fois la tâche initiale et ne continuez qu’avec une URL HTTPS exploitable. Conservez le task_id vidéo et consultez une fois cette même tâche ; une tâche en attente peut être revue plus tard.

Les tâches image REST et SDK renvoient id, tandis que les tâches vidéo renvoient task_id. Les résultats MCP locaux exposent structuredContent.task_id lorsqu’un identifiant de tâche existe : vérifiez isError et next_action, puis lisez structuredContent.outputs[].url ou le contenu image MCP joint. Seule une véritable URL HTTPS peut être transmise comme image_url vidéo ; un contenu image joint n’est pas une URL. Ne supposez pas que MCP renvoie le data[0].url de REST.

curl --fail-with-body --connect-timeout 10 --max-time 30 "https://api.routershift.com/v1/models?details=1" \
  -H "Authorization: Bearer $ROUTERSHIFT_API_KEY"

curl --fail-with-body --connect-timeout 10 --max-time 120 -i -X POST "https://api.routershift.com/v1/images/generations" \
  -H "Authorization: Bearer $ROUTERSHIFT_API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"YOUR_ACCEPTED_IMAGE_MODEL_CODE","prompt":"Combine three landscapes into one scene","image":["https://media.example/landscape-1.png","https://media.example/landscape-2.png","https://media.example/landscape-3.png"],"n":1,"response_format":"url"}'

curl --fail-with-body --connect-timeout 10 --max-time 30 -i "https://api.routershift.com/v1/images/tasks/IMAGE_TASK_ID" \
  -H "Authorization: Bearer $ROUTERSHIFT_API_KEY"

Un rejet 400 effectivement reçu diffère d’un délai de transport laissant l’envoi incertain. En cas d’erreur, conservez le code et le message sûrs, X-Request-ID et, s’il existe, l’identifiant de tâche ; n’attendez pas le motif brut du fournisseur et ne renvoyez pas automatiquement un POST facturable. Un échec de consultation rend seulement l’état de la tâche indisponible, sans prouver l’échec de génération. L’expiration de l’attente n’annule ni ne rembourse le travail. Budget, prélèvement et règlement suivent les registres de la plateforme, pas cet exemple ni le prix affiché par un fournisseur.

Ajouter des outils de modèles à un agent

Ajoutez des outils à un agent via MCP ou utilisez le SDK Python/Node dans votre application : ces accès sont proposés en parallèle. Suivez ces quatre étapes stdio locales et ne placez pas d’identifiants dans une configuration partagée ou un dépôt de code.

  1. 1. Créer un répertoire dédié et installer MCP

    Utilisez Node 20 ou ultérieur. Cette installation réservée à MCP ajoute les deux dépendances homologues du protocole ; une installation habituelle du SDK Node n’en a pas besoin.

    mkdir routershift-mcp
    cd routershift-mcp
    npm init -y
    npm install "https://routershift.com/downloads/sdk/routershift-sdk-0.3.7.tgz" @modelcontextprotocol/server@2.0.0 zod@4.6.4
  2. 2. Résoudre le chemin absolu du serveur

    Exécutez cette commande dans le nouveau répertoire. Elle affiche un chemin absolu échappé pour JSON que vous pouvez coller dans le tableau args de la configuration.

    node -p "JSON.stringify(require('node:path').resolve('node_modules/@routershift/sdk/dist/mcp/cli.js'))"
  3. 3. Configurer le client stdio local

    Remplacez le chemin d’exemple, définissez la clé API uniquement dans votre environnement local et conservez l’origine API approuvée sans /v1, identifiants, requête ni fragment. L’onglet Codex utilise sa syntaxe stdio et env_vars documentée.

    {
      "mcpServers": {
        "routershift": {
          "command": "node",
          "args": [
            "/absolute/path/to/your/project/node_modules/@routershift/sdk/dist/mcp/cli.js"
          ],
          "env": {
            "ROUTERSHIFT_API_KEY": "sk-REPLACE_LOCALLY",
            "ROUTERSHIFT_BASE_URL": "https://api.routershift.com"
          }
        }
      }
    }
  4. 4. Redémarrer le connecteur et vérifier dix outils

    Redémarrez ou rechargez le client MCP, confirmez la présence des dix outils, puis appelez d’abord routershift_list_models en lecture seule. N’appelez un outil de modèle facturé que lorsque vous souhaitez soumettre cette opération.

Dix outils sont proposés : routershift_list_models, routershift_estimate_chat, routershift_chat, routershift_generate_image, routershift_create_video, routershift_get_task, routershift_get_request, routershift_speech, routershift_transcribe, routershift_transcribe_url. Choisissez d’abord un modèle adapté à l’opération. Consultez les tâches d’image ou de vidéo avec routershift_get_task, en précisant kind (image ou video) et task_id. Consultez le reçu d’une requête avec routershift_get_request et request_id, en lecture seule ; cela ne soumet ni n’active aucune opération payante. Dans 0.3.7, details:true lit les modèles et contrats détaillés. routershift_estimate_chat observe uniquement une borne supérieure finie d’admission : aucun appel fournisseur, aucune réservation ni exécution automatique ; funds_verified=false. Un devis n’est ni une facture finale ni une autorisation d’exécution.

routershift_chat accepte des références HTTPS d’images et de vidéos ; audio_file lit un chemin absolu WAV/MP3 explicitement choisi, de 16 MiB au maximum. routershift_transcribe lit un fichier local choisi via file_path ; routershift_transcribe_url transmet un file_url HTTPS sans le télécharger. La synthèse vocale et l’audio Omni sont renvoyés de façon intégrée. routershift_generate_image accepte response_format url ou b64_json ; pour une sortie b64_json PNG, JPEG, WebP ou GIF valide et de taille limitée, il renvoie du contenu image MCP natif sans écrire, télécharger ni réhéberger de fichier, et sans copier le Base64 dans du JSON texte. Les données trop volumineuses ou de format inconnu sont explicitement omises ; ne renvoyez pas une requête payante pour récupérer une sortie omise. L’adaptateur ne parcourt pas les répertoires et n’enregistre pas automatiquement les résultats.

L’onglet JSON présente la structure mcpServers courante ; l’onglet TOML présente la syntaxe Codex documentée. Les emplacements de configuration et les autorisations de sous-processus varient selon le client. Les clients exclusivement distants nécessitent un autre transport pris en charge ; ces exemples ne prétendent pas avoir été testés dans toutes les interfaces d’agent.

L’adaptateur MCP local permet d’appeler les API RouterShift de texte, multimodalité, audio et tâches. La passerelle /v1/mcp existante donne accès aux outils externes configurés. Sa configuration HTTP/SSE ne remplace pas la configuration locale des outils de modèles présentée ici.

Accès aux modèles, attente et facturation

Plateformes UGC : soumettre une seule fois, conserver l'identifiant de tâche et le X-Request-ID initial, puis consulter la même tâche. Un identifiant métier ne garantit pas une répétition sûre côté serveur. REST, SDK et MCP partagent tâches et facturation ; changer d'accès ne doit pas relancer une génération incertaine.

Avec import_contract disponible et une opération prise en charge, utilisez endpoint_prefix/request_header (X-RouterShift-Customer-Contract) sur /v1/contracted/... avec la requête complète et semantic_sha256. Ce même en-tête sur /v1 ordinaire n’active pas la protection. Arrêtez-vous si contrat non pris en charge, 404 ou changement du résumé ; ne renvoyez pas sans protection. Le chat protégé exige aussi X-RouterShift-Token-Bound, X-RouterShift-Max-Admission-Quote et X-RouterShift-Quote-Currency avec un contrat fini vérifié d’entrée/sortie/raisonnement. Ne les déduisez pas du résumé ou du contexte. Simulation publique et admission_quote avec bound_proven=false ou funds_verified=false n’autorisent pas une dépense ni un plafond universel.

Séparer soumission, exécution, livraison et facturation. Sans identifiant de tâche, enquêter sans nouveau POST. Un GET en échec rend seulement l'état indisponible. Si la génération est terminée mais le téléchargement échoue, reprendre la livraison du même résultat connu. released et reconciliation_required arrêtent le suivi, sans prouver réussite ou remboursement.

Conservez l’ID original et consultez GET /v1/requests/ORIGINAL_REQUEST_ID pour le reçu. GET /v1/requests/ORIGINAL_REQUEST_ID/result lit uniquement les résultats audio capturés pris en charge ; ce n’est pas un stockage universel. Python 0.3.7 (depuis 0.3.6) audio.retrieve/poll interroge ASR natif 202 ; Node 0.3.7 n’annonce pas de méthodes équivalentes. Ces GET ne soumettent aucune nouvelle génération et ne déclenchent pas de reprise comptable. Sauvegardez sorties synchrones et vrais IDs asynchrones. Séparez envoi inconnu, échec de livraison et règlement en attente ; un délai dépassé n’autorise pas à répéter un POST payant.

Avec receipt.metering.basis=recorded_settlement_context, seules les dimensions enregistrées de requêtes déjà réglées sont exposées. Ce n’est ni un reçu natif du fournisseur, ni une facture, ni une ventilation complète des frais. Conservez les chaînes quantity/unit/pricing_unit_divisor ; les preuves absentes ou non prises en charge restent unavailable. Ne remplacez pas un usage inconnu par zéro, ne déduisez pas les frais finaux et ne déclenchez pas de reprise depuis cette projection en lecture seule.

curl --fail-with-body --connect-timeout 10 --max-time 30 "https://api.routershift.com/v1/requests/ORIGINAL_REQUEST_ID" \
  -H "Authorization: Bearer $ROUTERSHIFT_API_KEY"

curl --fail-with-body --connect-timeout 10 --max-time 30 "https://api.routershift.com/v1/requests/ORIGINAL_REQUEST_ID/result" \
  -H "Authorization: Bearer $ROUTERSHIFT_API_KEY"

Le statut et la liste des conversations asynchrones conservent status et ajoutent execution_status, billing_status, reason_code, next_action et retry_allowed: false. completed signifie que le résultat est disponible, pas que la facturation est réglée ; unknown ne signifie ni gratuité ni remboursement. _billing_status du SDK d’images et billing_status de MCP recopient uniquement l’en-tête réel X-Billing-Status autorisé ; un en-tête absent ou invalide reste sans valeur. Une consultation ne lance pas la reprise de facturation et n’autorise aucun nouvel envoi.

Copiez l’identifiant complet depuis les frais utilisateur ou les journaux de requêtes administrateur, puis recherchez le request_id exact : UTF-8 valide, non vide, 256 octets au maximum, sans espaces ni caractères de contrôle. Les permissions et filtres de période et de modèle restent applicables ; l’absence de résultat ne prouve ni l’absence d’acceptation ni celle de frais. Conservez séparément l’identifiant de soumission initial, celui de tâche et ceux des consultations suivantes. L’export CSV couvre toujours toute la période sélectionnée, pas seulement les lignes filtrées par identifiant.

Contrôler les nouvelles soumissions avec la file et les limites par utilisateur de l'application ; espacer et borner le suivi. Un délai dépassé arrête l'attente locale, pas le fournisseur. Les tests simulés ne certifient pas sa capacité de génération simultanée.

Remplacez YOUR_* par vos codes de modèle, voix ou identifiants de tâche. /v1/models liste les codes visibles par votre clé, sans confirmer le texte, Omni, les images, vidéos, sons ou tous les modes. Vérifiez les entrées, sorties et modes activés du modèle. Aucune compatibilité universelle ou Realtime n’est annoncée.

Le chat/Messages ordinaire du SDK conserve les répétitions automatiques : les envois UGC de chat/Omni doivent utiliser explicitement Python RequestOptions(max_retries=0) ou Node maxRetries=0, redirect=error. Les méthodes multimédias dédiées sans répétition ne couvrent pas toutes les méthodes. Les envois d’images, vidéos, synthèses vocales et transcriptions ne sont pas répétés automatiquement ; le chat MCP envoie aussi une seule fois. Un délai dépassé ou l’arrêt de l’attente n’annule ni ne rembourse le travail et ne rend pas sa répétition sûre. Conservez id pour l’image et task_id pour la vidéo. released et reconciliation_required sont des états finaux, pas une preuve de génération réussie.

Les appels SDK et MCP utilisent la même API, les mêmes prix, mesures d’usage, portefeuille et règlements que les requêtes directes. Ils n’ajoutent aucun solde ni système de facturation distinct. Une URL de résultat ne certifie pas le règlement ; consultez l’état de facturation de l’API, lorsqu’il est disponible, et les données de la console.

Le champ as_of d’une estimation indique l’heure de consultation, pas une durée de prix garanti. Les tâches acceptées sont réglées selon leur contrat tarifaire figé et l’usage réel natif, sans appliquer les mises à jour ultérieures du catalogue ou des prix de la clé. Un tarif figé ne fixe pas le montant final. Un usage absent ou contradictoire exige un rapprochement, pas un montant deviné. Reprenez la tâche d’origine sans relancer une génération avec de nouveaux paramètres.

SDK officiels

Des clients typés pour les modèles, le chat, les messages, les embeddings, les médias et les tâches asynchrones, sans API de session console.

Écosystèmes compatibles

Les clients compatibles OpenAI, Anthropic et Gemini utilisent leur sous-ensemble de protocole pris en charge. Vérifiez préfixe d’URL, champs, lecture des réponses et répétitions ; changer seulement la clé ou l’URL ne garantit pas le multimédia hors chat.

Protocoles d’agents

MCP et A2A fournissent des limites d’interopérabilité stables sans révéler le routage interne.

Versions SDK indépendantes

Les SDK sont publiés indépendamment de la plateforme. Python 0.3.7 et Node 0.3.7 incluent les méthodes de découverte détaillée. Vérifiez les téléchargements à version fixe avec leurs sommes SHA-256 ; ces archives ne signifient ni publication sur npm ou PyPI, ni validation native du modèle. Le contrat OpenAPI actif fait autorité.

import os
from routershift import RouterShift

client = RouterShift(api_key=os.environ["ROUTERSHIFT_API_KEY"])
models = client.models.list()
print([model.id for model in models])
response = client.chat.completions.create(
    model="YOUR_MODEL_CODE",
    messages=[{"role": "user", "content": "Hello"}],
)

Authentification

Toutes les requêtes API nécessitent une authentification via un token Bearer. Vous pouvez générer et gérer des clés API depuis votre tableau de bord.

Format de clé API

Les clés API commencent par sk- suivi d'un identifiant unique. Gardez vos clés API en sécurité et ne les exposez jamais dans du code côté client ou dans le contrôle de version.

En-tête d'autorisation

Incluez votre clé API dans l'en-tête Authorization de chaque requête :

Authorization: Bearer YOUR_API_KEY

Bonnes pratiques de sécurité

  • Ne codez jamais en dur les clés API dans votre code source. Utilisez des variables d'environnement ou un gestionnaire de secrets.
  • Faites tourner régulièrement les clés API depuis le tableau de bord — créez de nouvelles clés et révoquez les anciennes sans interruption de service.
  • Utilisez des clés API distinctes pour les environnements de développement et de production.
  • Définissez des limites d'utilisation et des restrictions IP sur les clés API pour une sécurité supplémentaire.
  • Surveillez l'utilisation des clés dans le tableau de bord pour détecter toute activité inhabituelle.
  • Ne commitez jamais de clés API dans le contrôle de version. Ajoutez les fichiers .env au .gitignore.

Signatures HMAC des webhooks

Les webhooks utilisateur incluent dans X-RS-Signature le condensé hexadécimal HMAC-SHA256 du corps. X-RS-Event et X-RS-Delivery identifient l'événement et la livraison.

Effectuer des requêtes

RouterShift propose le chat, les embeddings, la découverte de modèles et d'autres interfaces prises en charge. Utilisez le format de requête et de réponse de l'interface choisie, compatible OpenAI, Anthropic ou Gemini.

Complétions de chat

Envoyez une requête de complétion de chat avec un nom de modèle, un tableau de messages et des paramètres optionnels comme temperature, max_tokens et top_p. RouterShift route votre requête vers le fournisseur approprié selon votre configuration de routage.

Réponses en streaming

Activez le streaming en définissant stream: true. RouterShift prend en charge les Server-Sent Events (SSE) pour le streaming de tokens en temps réel. Le format de flux est compatible avec la spécification de streaming OpenAI.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.routershift.com/v1",
    api_key=os.environ["ROUTERSHIFT_API_KEY"],
)
stream = client.chat.completions.create(
    model="YOUR_MODEL_CODE",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Requêtes asynchrones

Pour les tâches de longue durée ou le traitement par lots, utilisez le mode asynchrone. Soumettez une requête et interrogez les résultats — utile pour les charges de travail dépassant les limites de délai habituelles.

Traitement par lots

Envoyez un fichier JSONL à POST /v1/batch, puis consultez l'état et les résultats. Les délais et prix dépendent du mode d'exécution et du contrat du modèle ; un lot ne garantit ni réduction ni délai fixe.

Représentations vectorielles

Générez des embeddings vectoriels pour le texte en utilisant le point de terminaison /v1/embeddings. Les embeddings sont utiles pour la recherche sémantique, le clustering et la génération augmentée de récupération (RAG).

Estimation de tokens

Envoyez le corps de la requête de chat à POST /v1/chat/completions/estimate pour estimer les tokens et le coût avant l'appel. L'estimation n'est pas la facturation finale ; celle-ci dépend de l'usage réel et du contrat tarifaire applicable.

Limites et contrôles de requête

Les limites effectives dépendent de la clé API, de la politique client, de la route du modèle et de la capacité du fournisseur. Les en-têtes et la console reflètent la configuration d'exécution.

Limites de débit par défaut

Les clés de plateforme renvoient x-ratelimit-limit-{tps,rpm,tpm,tph} et, pour les limites actives, x-ratelimit-remaining-{tps,rpm,tpm,tph}. Retry-After apparaît uniquement si l’attente peut rétablir la capacité, arrondi à la seconde supérieure ; il ne garantit pas la nouvelle tentative. Sans cet en-tête, vérifiez le quota par demande et la politique. Ne renvoyez jamais automatiquement un POST au résultat inconnu ; utilisez un délai borné et aléatoire seulement si une nouvelle tentative est sûre.

Codes de réponse HTTP

429429 Trop de requêtes — Vous avez dépassé votre limite de débit. Vérifiez l'en-tête Retry-After et reculez.
402402 Paiement requis — Le solde de votre compte est insuffisant. Ajoutez des crédits dans la section Facturation.
403403 Interdit — La clé authentifiée n'est pas autorisée à utiliser ce modèle, cette route ou cette opération. Vérifiez les portées de la clé et la politique client.
503503 Service indisponible — Aucun fournisseur n'est actuellement disponible pour le modèle demandé. Le disjoncteur a peut-être temporairement désactivé tous les fournisseurs.
401401 Non autorisé — En-tête Authorization manquant ou mal formé.
400400 Requête incorrecte — Paramètres de requête invalides. Vérifiez le message d'erreur pour plus de détails.

Facturation et tarification

RouterShift utilise des portefeuilles prépayés et des prix figés par requête. Les requêtes réussies sont débitées au prix de vente client selon les dimensions de facturation du produit.

Modèle de tarification

Le débit utilise le prix de vente client approuvé et fige le modèle, la devise, la version de prix et les dimensions par requête. Le catalogue public montre les prix catalogue à titre comparatif; les coûts fournisseur relèvent du règlement.

Facturation et factures

Rapprochez appels, tokens, dimensions de cache et dépenses par date, modèle et clé API. Factures et remboursements utilisent les preuves de prix conservées côté serveur; une modification ultérieure ne réécrit pas l’historique.

Portefeuille et crédits

Les portefeuilles CNY et USD sont comptabilisés séparément. Le solde disponible exclut déjà les fonds gelés : ne les soustrayez pas deux fois. Le crédit de tolérance personnel et la garantie de la plateforme sont désactivés par défaut et exigent des autorisations et des fonds de garantie distincts. Le crédit engagé et le principal dû ne sont ni du solde disponible ni un accès automatique aux modèles. L’admission exige un contrat de mesure vérifié et un plafond de coût démontré. La progression en direct n’est pas une facture finale ; les résultats ou usages inconnus restent à rapprocher. Les recharges suivent les paiements effectivement reçus.

Forfaits et coupons

Forfaits, promotions, coupons ou plans d’économies n’agissent que si une règle applicable est configurée. Le financement de la remise reste séparé des sommes dues au fournisseur.

Moteur de commission revendeur

Les revendeurs gagnent un pourcentage de la marge plateforme sur chaque requête des utilisateurs invités. Des taux de commission par modèle permettent des programmes partenaires granulaires — par ex., 15% sur GPT-4o, 10% sur Claude. L'attribution est automatique via les liens d'invitation ; le settlement est en temps réel par requête.

Accès privé

L'accès privé réunit BYOK et pools de comptes IA avec contrôle centralisé, tarification flexible et basculement.

Intégration BYOK

Associez vos clés après activation de l'accès privé. Le fournisseur facture votre compte séparément ; les frais RouterShift suivent le forfait et les exonérations applicables. BYOK ne rend pas tout usage gratuit.

Pools de comptes

Connectez des pools externes au moyen d'une passerelle de clés et d'une couche de politiques unifiées.

Mode abonnement

L'accès privé est un service complémentaire facultatif. Avant activation, vérifiez le forfait mensuel ou les frais à l'usage, la devise, le renouvellement et les exonérations. L'API principale reste facturée à l'usage.

Basculement sur incident

Si une source privée est indisponible, les routes admissibles de la plateforme pour le même modèle peuvent être essayées successivement, selon les droits de la clé et de la région. Le prix de vente et les contrôles de solde et budget s'appliquent ; un abonnement privé ou une exonération ne rendent pas ces requêtes gratuites.

Règlement auditable en CNY et USD

Une chaîne de preuves couvrant tarification, débit, partage des revenus, remboursement, paiement et facturation. Un compte achète des modèles locaux et mondiaux : l'expérience client reste en CNY et les coûts étrangers sont réglés nativement.

Devises de vente et de coût séparées

Les offres nationales sont vendues et facturées en CNY ; un coût fournisseur en USD n'impose pas le risque de change au client à chaque requête.

Instantanés de prix et de change

Chaque requête verrouille les versions approuvées du prix et du taux ainsi que les mouvements réels du portefeuille.

Dettes fournisseurs en devise native

La dette reste dans la devise amont, tandis que marge, commission et taxe sont comptabilisées séparément.

Remboursement par le chemin d'origine

Le remboursement inverse les mouvements CNY/USD initiaux ; toute reconversion réelle constate le gain ou la perte de change.

Gestion des erreurs

Comprenez les erreurs API courantes et comment les gérer avec élégance dans votre application.

Structure de réponse d'erreur

Toutes les erreurs suivent le format standard avec un objet error contenant un message, un type, un code et un param (le cas échéant).

{
  "error": {
    "message": "no upstream available",
    "type": "upstream_error",
    "code": "UPSTREAM_UNREACHABLE"
  },
  "request_id": "example-request-id"
}

Stratégie de nouvelle tentative

Respectez Retry-After lorsqu'il est présent. Ne réessayez que les opérations idempotentes ou rejouables en toute sécurité, avec un backoff exponentiel borné et du jitter, puis arrêtez selon le budget d'essais ou de temps de l'application.

Types d'erreurs courants

  • invalid_request_error — Corps de requête mal formé ou paramètres obligatoires manquants.
  • authentication_error — Clé API invalide, expirée ou révoquée.
  • rate_limit_error — Trop de requêtes. Ralentissez et respectez les en-têtes Retry-After.
  • server_error — Problème temporaire du fournisseur ou de la plateforme. Réessayez avec backoff.
  • upstream_error — Aucun fournisseur disponible ou échec d'un appel. Consultez error.code avant de décider de réessayer.
  • content_filter_error — Requête bloquée par les garde-fous ou le filtre de contenu. Examinez le contenu signalé.

Codes d'erreur structurés

Les erreurs d'inférence compatibles OpenAI incluent le champ lisible par machine error.code. Utilisez ce champ pour le traitement programmatique plutôt que le texte du message.

AUTH_INVALIDIdentifiants invalides
AUTH_EXPIREDSession expirée
AUTH_EMAIL_NOT_VERIFIEDEmail non vérifié
AUTH_INSUFFICIENTAccès refusé
WALLET_LOWSolde insuffisant
WALLET_EMPTYPortefeuille vide
RATE_LIMIT_GLOBALLimite de débit dépassée
RATE_LIMIT_KEYLimite de débit de la clé API dépassée
RES_MODEL_NOT_FOUNDModèle non trouvé
UPSTREAM_UNREACHABLEFournisseur upstream inaccessible
UPSTREAM_ERRORErreur du fournisseur upstream
UPSTREAM_TIMEOUTDélai d'attente du fournisseur upstream
INTERNAL_ERRORErreur interne du serveur
error.codeDescription
AUTH_INVALIDIdentifiants invalides
AUTH_EXPIREDSession expirée
AUTH_EMAIL_NOT_VERIFIEDEmail non vérifié
AUTH_INSUFFICIENTAccès refusé
WALLET_LOWSolde insuffisant
WALLET_EMPTYPortefeuille vide
RATE_LIMIT_GLOBALLimite de débit dépassée
RATE_LIMIT_KEYLimite de débit de la clé API dépassée
RES_MODEL_NOT_FOUNDModèle non trouvé
UPSTREAM_UNREACHABLEFournisseur upstream inaccessible
UPSTREAM_ERRORErreur du fournisseur upstream
UPSTREAM_TIMEOUTDélai d'attente du fournisseur upstream
INTERNAL_ERRORErreur interne du serveur

Gestion des délais d'expiration

Choisissez les délais de connexion, de requête et d'inactivité du flux selon la charge et la latence du modèle. Les opérations synchrones, streaming, asynchrones et par lots ne doivent pas partager une valeur fixe.