{"language":"fr","translation":{"brand":{"name":"Route Key","label":"Plateforme de routage des couts IA"},"nav":{"home":"Home","dashboard":"Console","models":"Modeles","docs":"Docs","blog":"Blog","about":"A propos","privacy":"Confidentialite","terms":"Conditions"},"menus":{"dashboard":{"eyebrow":"eyebrow","title":"title","items":{"overview":"overview","overviewDesc":"Resume quota, depenses et trafic","wallet":"wallet","walletDesc":"Recharger le solde, utiliser des codes et consulter les commandes","apiKeys":"api keys","apiKeysDesc":"Liste des jetons et etat des cles","usageLogs":"usage logs","usageLogsDesc":"Historique des requetes et details de facturation","settings":"settings","settingsDesc":"Preferences du compte et parametres de console"}},"models":{"eyebrow":"eyebrow","title":"title","items":{"catalog":"catalog","catalogDesc":"Texte explicatif pour catalog desc.","pricing":"pricing","pricingDesc":"Texte explicatif pour pricing desc.","routing":"routing","routingDesc":"Texte explicatif pour routing desc.","multimodal":"multimodal","multimodalDesc":"Texte explicatif pour multimodal desc."}},"docs":{"eyebrow":"eyebrow","title":"title","items":{"quickstart":"quickstart","quickstartDesc":"Texte explicatif pour quickstart desc.","compatibility":"compatibility","compatibilityDesc":"Texte explicatif pour compatibility desc.","examples":"examples","examplesDesc":"Texte explicatif pour examples desc.","billing":"billing","billingDesc":"Texte explicatif pour billing desc."}},"blog":{"eyebrow":"eyebrow","title":"title","items":{"savings":"savings","savingsDesc":"Texte explicatif pour savings desc.","routing":"routing","routingDesc":"Texte explicatif pour routing desc.","models":"models","modelsDesc":"Texte explicatif pour models desc.","builders":"builders","buildersDesc":"Texte explicatif pour builders desc."}},"about":{"eyebrow":"Company profile","title":"Brand, team, and positioning","items":{"origin":"Origin","originDesc":"How Route Key started, when it was founded, and how the product evolved.","team":"Team","teamDesc":"Founder background, core members, and practical delivery capability.","position":"Positioning","positionDesc":"What the site does, which services it provides, and the mission behind it.","mission":"Mission","missionDesc":"Why the product exists and the standards it aims to keep."}}},"actions":{"exploreModels":"Explorer les modeles","readDocs":"Lire les docs","copyRequest":"Copier la requete","copyFailed":"Copy failed","getYourKey":"Create API key","copied":"Copie","viewBlueprint":"view blueprint","inspectPricing":"inspect pricing","changeLanguage":"Changer de langue","switchTheme":"Changer de theme","actions":"Actions","openMenu":"Ouvrir le menu","closeMenu":"Fermer le menu","cancel":"Cancel","close":"Close","confirm":"Confirm","clear":"Clear","reset":"Reinitialiser","refresh":"Actualiser","previous":"Precedent","next":"Suivant","search":"Rechercher","done":"Termine"},"hero":{"status":"Telemetrie gateway en direct","fallback":"Donnees demo, pretes pour la synchro backend","kicker":"Relais IA compatible OpenAI","titleA":"Une cle IA.","titleB":"Tous les modeles.","accessibleTitle":"Passerelle API IA compatible OpenAI","definition":"Passerelle API IA compatible OpenAI","description":"Route Key offre aux builders une gateway API compatible pour GPT, Claude, Gemini, DeepSeek, Qwen et plus. Choisissez un modele ou laissez le routage prendre une voie saine et moins chere.","discountBadge":"Remise intelligente","promises":{"aggregate":"Modeles majeurs","discount":"Routes reduites","compatible":"Appels API sans migration"},"liveRequests":"live requests","routedToday":"routed today","avgDecision":"avg decision","protectedSpend":"protected spend"},"support":{"eyebrow":"eyebrow","title":"title","description":"Une passerelle compatible OpenAI pour l’accès aux modèles, les coûts, la santé et la visibilité du trafic."},"contactWidget":{"trigger":"Nous contacter","title":"Nous contacter","intro":"Choisissez le canal adapté à votre demande.","liveChatTitle":"Discuter avec nous","liveChatDescription":"Pour obtenir de l’aide pendant l’utilisation de Route Key.","supportTitle":"Support client","supportDescription":"Pour les demandes de compte, facturation ou assistance technique.","supportSubject":"Support Route Key","close":"Fermer le panneau de contact"},"siteNotice":{"title":"System announcements","loading":"Loading announcement...","empty":"There is no current announcement.","notifications":"Notifications","timeline":"Timeline","dismissToday":"Hide today","close":"Done"},"messageCenter":{"title":"Message center","markAllRead":"Mark all as read","close":"Close","back":"Back to messages","openLink":"Open link","loading":"Loading messages...","empty":"You are all caught up.","types":{"adminMessage":"Admin message","balanceWarning":"Balance alert","securityAlert":"Security alert","supportTicket":"Support ticket","systemAnnouncement":"Announcement","systemErrorAlert":"Critical alert"}},"aboutPage":{"badge":"A propos de Route Key","title":"Une marque concentree sur le routage, le controle et la visibilite de l IA","description":"Route Key propose une interface cyber-moderne sobre pour l acces aux modeles IA.","heroLabel":"Profil de l entreprise","heroCaption":"Histoire de marque, force de l equipe et positionnement produit.","indexLabel":"Plan A propos","backToTop":"Retour en haut","signals":{"story":"Histoire de la marque","team":"Profil de l equipe","positioning":"Positionnement"},"sections":{"story":{"title":"Histoire de la marque","content":["Route Key propose une interface cyber-moderne sobre pour l acces aux modeles IA.","Histoire de marque, force de l equipe et positionnement produit."]},"path":{"title":"Notre parcours","content":["Route Key propose une interface cyber-moderne sobre pour l acces aux modeles IA.","Histoire de marque, force de l equipe et positionnement produit."]},"team":{"title":"Profil de l equipe","content":["Profil de l equipe","Histoire de marque, force de l equipe et positionnement produit."]},"capability":{"title":"Capacites","content":["Capacites","Route Key propose une interface cyber-moderne sobre pour l acces aux modeles IA."]},"positioning":{"title":"Positionnement","content":["Positionnement","Route Key propose une interface cyber-moderne sobre pour l acces aux modeles IA."]},"mission":{"title":"Mission","content":["Mission","Route Key propose une interface cyber-moderne sobre pour l acces aux modeles IA."]}},"mobile":{"imageAlt":"Profil de l entreprise","title":"Marque de controle du routage IA","lead":"Passerelle compacte pour modeles, cout et trafic.","briefTitle":"Signaux de marque en trois couches","routing":"Routing","routingValue":"Cost + health","security":"Security","securityValue":"Key isolation","ecosystem":"Ecosystem","ecosystemValue":"Multi-vendor","storySummary":"Route Key propose une interface cyber-moderne sobre pour l acces aux modeles IA.","capabilitySummary":"Capacites","missionSummary":"Mission","statement":"Histoire de marque, force de l equipe et positionnement produit."}},"illustrations":{"motionEyebrow":"motion eyebrow","motionTitle":"motion title","motionDescription":"Conservez le format de requête de votre SDK pendant que Route Key compare les routes, les prix et la santé des canaux.","motionAlt":"motion alt","routingImageAlt":"routing image alt","pricingImageAlt":"pricing image alt","modelImageAlt":"model image alt","coreLabel":"core label","catalogLabel":"catalog label","policyLabel":"policy label","savingsLabel":"savings label","compatLabel":"compat label","readoutLabel":"readout label"},"footer":{"ariaLabel":"aria label","socialAriaLabel":"Profils sociaux de Route Key","github":"github","contact":"contact","email":"email","privacy":"privacy","terms":"terms","copyright":"copyright {{year}}","restriction":"restriction","refund":"refund"},"command":{"title":"title","subtitle":"subtitle","inbound":"inbound","policy":"policy","selected":"selected","health":"health","routeScore":"route score","costDelta":"cost delta","failover":"failover","streaming":"streaming","accepted":"accepted","evaluated":"evaluated","dispatched":"dispatched"},"mobile":{"eyebrow":"Plateforme de routage des couts IA","title":"Une cle IA. Tous les modeles.","description":"Utilisez GPT, Claude, Gemini, DeepSeek, Qwen et plus via une gateway compatible et reduite.","quickModels":"Modeles","quickDocs":"quick docs","quickBlog":"quick blog","drawerSubtitle":"Plan de controle"},"sections":{"stackEyebrow":"Ce que fait Route Key","stackTitle":"Une couche de controle plus nette pour le trafic API IA","stackDescription":"Un compte, une cle et une facturation. Comparez les prix, routez par cout et latence, gardez le streaming et surveillez l usage depuis la console.","modelsEyebrow":"Matrice des modeles","pricingTitle":"Choisir le modele exact ou router par politique","pricingDescription":"La liste publique affiche fournisseur, contexte, endpoint, prix et posture de latence avant le trafic de production.","developerEyebrow":"Demarrage rapide","developerTitle":"Trois etapes pour passer en ligne"},"cards":{"catalog":"Catalogue de modeles","catalogDesc":"Parcourez fournisseurs, fenetres de contexte, endpoints et sante des modeles.","policy":"Routage par cout","policyDesc":"Routez par prix, latence et disponibilite avant chaque requete.","billing":"Une cle API","billingDesc":"Connectez une fois, utilisez plusieurs fournisseurs et suivez usage et solde.","speed":"Streaming rapide","speedDesc":"Gardez les reponses SSE basse latence avec selection de canal sain.","privacy":"Controles de confidentialite","privacyDesc":"Les cles restent masquees, les logs sont limites a l usage du compte.","failover":"Voies de secours","failoverDesc":"Evitez les routes indisponibles ou cheres sans changer votre code."},"home":{"offer":{"eyebrow":"Offre actuelle","label":"Economies","title":"Acces modele reduit","description":"Les routes sensibles au prix peuvent reduire les couts tout en gardant les formats compatibles."},"speed":{"label":"Decision","title":"Decision de route rapide","description":"La politique gateway choisit un canal sain avant que le flux atteigne votre app."},"privacy":{"title":"Garde-fous confidentialite","value":"Cadre","description":"Les cles API sont masquees, les donnees restent dans la console et les logs ciblent la visibilite usage."},"security":{"title":"Isolation du compte","description":"Tokens, facturation et preferences restent rattaches au compte New API connecte."},"advantagesEyebrow":"Pourquoi les equipes l utilisent","advantagesTitle":"Moins de cout, moins d integration, plus de controle","steps":{"createKey":"Creer une cle","createKeyDesc":"Generez ou copiez un token API depuis Dashboard.","replaceUrl":"Remplacer la base URL","replaceUrlDesc":"Pointez votre SDK vers endpoint compatible Route Key.","sendRequest":"Envoyer la requete","sendRequestDesc":"Choisissez un modele ou laissez le routage prendre une voie saine."},"agentBridge":{"title":"Use Route Key with coding agents","description":"Codex · Claude Code · Gemini CLI · Cursor","action":"Configure agents"},"requestConsole":{"title":"Request console"},"faq":{"eyebrow":"FAQ","title":"Questions courantes avant de router le trafic production","description":"Reponses courtes sur couverture modele, compatibilite, prix, confidentialite et vitesse.","items":{"models":{"q":"Quels modeles puis-je utiliser ?","a":"Route Key expose les modèles activés par le backend de prix, dont GPT, Claude, Gemini, DeepSeek, Qwen et les canaux compatibles. Consultez la page Modèles pour comparer le fournisseur, le contexte, les endpoints, les groupes disponibles et l’identifiant exact avant d’envoyer du trafic de production."},"compatibility":{"q":"Dois-je reecrire mon SDK ?","a":"En général non. Gardez le corps de requête et le code du SDK, remplacez la base URL par l’endpoint compatible Route Key, ajoutez une clé API Route Key et choisissez un identifiant de modèle pris en charge. Commencez par une petite requête sans streaming, puis activez progressivement le streaming, les outils et le contexte long."},"pricing":{"q":"Comment fonctionne la remise ?","a":"La passerelle compare les routes selon le ratio de groupe, les prix des tokens d’entrée et de sortie, le cache, la latence et la santé. Vous pouvez fixer un modèle ou laisser la politique choisir une route saine moins chère. Vérifiez le modèle, les tokens, le groupe et le coût dans les journaux pour mesurer réellement l’économie."},"privacy":{"q":"Que deviennent les cles API et les logs ?","a":"Les clés sont masquées dans la console. Les journaux affichent, selon les contrôles de confidentialité configurés, le statut, le modèle, le coût, les tokens d’entrée et de sortie, la latence et l’heure. Utilisez une clé par application ou agent pour faciliter l’attribution, la rotation et le diagnostic sans partager un accès partout."},"speed":{"q":"Le routage ralentit-il les reponses ?","a":"La décision de routage est prise avant le dispatch et peut éviter un canal indisponible avant l’envoi. Les endpoints streaming conservent les réponses SSE pendant que la passerelle choisit une route saine. Surveillez la latence et les erreurs après le déploiement, puis configurez un fallback explicite pour les incidents fournisseur."},"production":{"q":"Est-ce seulement pour les essais ?","a":"Non. Créez une clé dédiée dans le Dashboard, configurez l’endpoint compatible Route Key, choisissez un identifiant exact et envoyez un test court. Vérifiez quota, modèle, tokens, latence et coût dans les journaux, puis ajoutez streaming, concurrence, retries et fallback par étapes pour garder une intégration observable et réversible."}}}},"labels":{"models":"Modeles","vendors":"Fournisseurs","endpoints":"Endpoints","groups":"Groupes","price":"Prix","context":"Contexte","latency":"Latence","endpoint":"Endpoint","updated":"Mis a jour","connected":"Connecte","demo":"Mode demo","live":"Live","trafficControl":"AI traffic control","perMillionTokens":"/ M tokens","savePercent":"Save {{percent}}%","lanes":"{{count}} lanes"},"auth":{"authMode":"auth mode","login":"Connexion","register":"Inscription","loginTitle":"Connexion au Dashboard","registerTitle":"Creer un compte","forgotTitle":"Recuperer le mot de passe","resetConfirmTitle":"reset confirm title","loginDescription":"Texte explicatif pour login description.","registerDescription":"Texte explicatif pour register description.","forgotDescription":"Texte explicatif pour forgot description.","resetConfirmDescription":"Texte explicatif pour reset confirm description.","username":"Nom utilisateur","usernamePlaceholder":"Saisir username placeholder","usernameRequired":"Username is required.","usernameFormat":"Username can only contain letters, numbers, and underscores.","usernameLength":"Username must be {{min}}-{{max}} characters.","email":"Email","emailAddress":"Email Address","emailOptional":"Email Address (optional)","emailOrUsername":"Email or username","emailOrUsernamePlaceholder":"Enter email or username","emailPlaceholder":"Saisir email placeholder","password":"Mot de passe","passwordPlaceholder":"Saisir password placeholder","passwordRequired":"Password is required.","passwordRuleLength":"8-64 characters.","passwordRuleTypes":"Utilisez un mot de passe fort et varie.","passwordRuleNoEdgeSpaces":"No spaces at the beginning or end.","passwordRuleNoIdentity":"N utilisez pas votre nom d utilisateur ou votre e-mail.","confirmPassword":"Confirmer le mot de passe","repeatPassword":"Repeat password","repeatPasswordPlaceholder":"Type your password again","showPassword":"show password","hidePassword":"hide password","verificationCode":"verification code","verificationCodePlaceholder":"Saisir verification code placeholder","sendCode":"Envoyer le code","codeCooldown":"code cooldown {{seconds}}","signIn":"Se connecter","signInWithEmail":"Sign in with Email","signUpWithEmail":"Sign up with Email","continueWith":"Or continue with","google":"Google","github":"GitHub","signInWithProvider":"Sign in with {{provider}}","signUpWithProvider":"Sign up with {{provider}}","oauthStartFailed":"Unable to start provider login. Please try again.","oauthProcessing":"Securing provider session...","oauthSuccess":"Provider session confirmed.","oauthCallbackTitle":"OAuth handshake","oauthCallbackDescription":"Keep this window open while the console verifies the identity token.","oauthCallbackInvalid":"Invalid OAuth callback parameters.","oauthCallbackFailed":"Provider login failed. Please try again.","forgotPassword":"Mot de passe oublie ?","sendResetEmail":"send reset email","resetEmailCooldown":"reset email cooldown {{seconds}}","confirmReset":"confirm reset","backToLogin":"back to login","generatedPassword":"generated password","copyPassword":"copy password","createAccount":"Creer le compte","needAccount":"need account","haveAccount":"have account","required":"Nom utilisateur et mot de passe requis.","resetEmailRequired":"Ce champ est requis.","emailRequired":"Ce champ est requis.","emailInvalid":"Saisissez une adresse email valide.","captchaImageAlt":"Captcha image","captchaPlaceholder":"Enter captcha","passwordTooShort":"password too short {{min}}","passwordTooLong":"password too long {{max}}","confirmPasswordRequired":"Ce champ est requis.","passwordMismatch":"password mismatch","verificationCodeRequired":"Ce champ est requis.","verificationCodeInvalid":"Operation echouee. Veuillez reessayer. {{length}}","failed":"Authentification echouee. Reessayez.","successTitle":"Connecte","registerReadyTitle":"register ready title","registerReadyLogin":"register ready login","registerDisabled":"Les inscriptions sont actuellement desactivees.","verificationSentTitle":"Operation reussie.","verificationSent":"Operation reussie.","verificationFailed":"Operation echouee. Veuillez reessayer.","resetEmailSentTitle":"Operation reussie.","resetEmailSent":"Operation reussie.","resetEmailFailed":"Operation echouee. Veuillez reessayer.","resetLinkInvalid":"Operation echouee. Veuillez reessayer.","passwordResetSuccessTitle":"Operation reussie.","passwordResetSuccess":"Operation reussie.","passwordResetFailed":"Operation echouee. Veuillez reessayer.","passwordCopiedTitle":"Operation reussie.","passwordCopied":"Operation reussie.","loginSuccess":"La console est prete.","registerVerifyTitle":"Security verification","riskEmbeddedBrowserWarning":"Your embedded browser environment may be blocked by risk control. Open this page in a standard browser and try again.","riskNetworkWarning":"The current network environment is still being rejected by risk control. Change network or try again later.","riskVerifyHint":"Additional verification is required before retrying registration.","riskVerifyTitle":"Risk control verification","securityCheckDescription":"Complete the configured security check to continue.","turnstileLoadFailed":"Cloudflare Turnstile failed to load. Check your network or refresh the page.","turnstileTimeout":"Cloudflare Turnstile timed out. Please retry the verification."},"gameCaptcha":{"completed":"Verification complete","failedRetrying":"Verification failed. Refreshing challenge.","failedRetryingWithReason":"{{reason}}. Refreshing challenge.","instruction":"Drag modules to build a safe path and avoid hazards.","invalidPlacement":"This module cannot be placed there.","loading":"Loading challenge...","loadFailed":"Game verification failed to load.","pathNotReady":"The path is not ready. Adjust the modules and retry.","required":"Complete the game verification first.","secureTransportFailed":"This browser does not support secure verification. Please upgrade and retry.","verifyFailed":"Game verification failed.","verifyPath":"Verify path"},"account":{"menu":"Menu du compte","apiKeys":"Cles API","billing":"Solde et facturation","tickets":"Tickets","settings":"Parametres","logout":"Deconnexion"},"pages":{"docs":{"eyebrow":"Documentation developpeur"},"models":{"eyebrow":"Catalogue de modeles","endpointEyebrow":"Endpoints"},"legal":{"navLabel":"Navigation legale","signalLabel":"Signaux legaux"},"privacy":{"eyebrow":"Politique de confidentialite","title":"Politique de confidentialite","lead":"Comment Route Key traite les donnees de compte, API, usage, facturation et support.","mapLabel":"Sections confidentialite","signals":{"handling":"Donnees","security":"Securite","choices":"Choix"}},"terms":{"eyebrow":"Conditions","title":"Conditions d utilisation","lead":"Acces au service, responsabilite du compte, facturation et obligations.","mapLabel":"Sections des conditions","signals":{"access":"Acces","obligations":"Obligations","commercial":"Commercial"}}},"docsPage":{"title":"Documentation","subtitle":"Guide d integration","breadcrumbLabel":"Breadcrumb","badge":"Documentation","backToTop":"Retour en haut","heading":"Connectez une fois, routez chaque modele.","description":"A Route Key documentation surface for the compatible endpoints: create keys, replace the base URL, choose models, then inspect usage and billing from Dashboard.","search":"Rechercher dans les docs","searchPlaceholder":"Endpoint, categorie, methode...","itemCount":"{{count}} items","modelsIndexed":"modeles indexes","endpointCount":"{{count}} endpoints","modelEndpoints":"endpoints API de modeles","providerCategories":"categories fournisseurs","modelApiGroup":"model APIs","referenceDescription":"Utilisez Route Key avec des formats compatibles OpenAI, Anthropic, Gemini, Qwen, DeepSeek, Grok et MiniMax.","commonErrors":"Erreurs courantes","baseUrl":"Configuration Base URL","categories":{"quickstart":"Quick Start","concepts":"Concepts cles","models":"Choisir un modele","reference":"API Reference"},"quickstart":{"createKey":"Create a key","createKeyDesc":"Open Dashboard \u003e API Keys, create or copy a token, and keep the full key private.","setBaseUrl":"Set baseURL","setBaseUrlDesc":"Point your SDK or HTTP client to the Route Key relay URL while keeping familiar request bodies.","pickModel":"Pick a model","pickModelDesc":"Start with a low-cost chat model, then compare pricing, groups and endpoints on the Models page.","verifyLogs":"Verify logs","verifyLogsDesc":"After the first request, check Usage Logs for model, token, latency and cost confirmation."},"quickstartCheck":"First integration checklist","checks":{"key":"Use Authorization: Bearer sk-xxxx","baseUrl":"Replace only the provider base URL","logs":"Confirm the call in Usage Logs"},"concepts":{"apiKey":"Cle API","apiKeyDesc":"Cle API","baseUrl":"Base URL","baseUrlDesc":"Route Key conserve les formats OpenAI et change seulement la destination.","modelName":"Nom du modele","modelNameDesc":"Le modele reste dans le payload et le backend resout le routage.","billing":"Usage et facturation","billingDesc":"Couts, jetons et latence apparaissent dans les logs."},"modelDefaults":"Model defaults","modelDefaultsDesc":"Choisir un modele","fromPricing":"From /api/pricing","routingAdvice":"Routing posture","routingLevels":{"0":"Start with low-cost chat","1":"Raisonnement ou code","2":"Usage et facturation"},"recommendations":{"general":"Chat general","generalHint":"Chat general","reasoning":"Raisonnement ou code","reasoningHint":"Raisonnement ou code","longContext":"Long context","longContextHint":"Use when prompts carry large documents or long conversation history."},"referenceList":"{{count}} endpoints","endpointDetails":"Endpoint details","authentication":"Authentification","parameters":"Parametres","response":"Reponse","example":"Example","codeExamples":"Code examples","requestExample":"Exemple de requete","responseExample":"Exemple de reponse","curlExample":"Exemple cURL","name":"Name","type":"Type","required":"Requis","descriptionLabel":"Description","yes":"Oui","no":"Non","noParameters":"Aucun parametre requis.","authBearer":"Authorization: Bearer sk-your-key","authRealtime":"Authorization: Bearer sk-your-key","authSession":"Requires the browser session created by /api/user/login.","authCookieOptional":"Public pricing can usually be read without login; authenticated deployments may require cookies.","contentType":"Content-Type","authorizationHeader":"Authorization","authHeaderHelp":"Add this value to the HTTP request headers.","noAuthRequired":"-","endpointContext":"Contexte endpoint","coreConceptsDescription":"Concepts cles","commonErrorsDescription":"Les echecs viennent souvent de l authentification, du modele, du quota ou du format.","notes":"Notes","notesCompatible":"Use the same request shape as the matching provider API when the backend channel is enabled.","errors":{"authenticationTitle":"Authentification","unauthorizedDesc":"Authentification","accessTitle":"Usage et facturation","modelDesc":"Le modele reste dans le payload et le backend resout le routage.","quotaTitle":"Usage et facturation","quotaDesc":"Couts, jetons et latence apparaissent dans les logs.","payloadTitle":"Erreurs courantes","payloadDesc":"Les echecs viennent souvent de l authentification, du modele, du quota ou du format."},"markdownDocs":{"quickstart":"# Demarrage rapide\n\nUtilisez Route Key comme relais compatible pour les API de modeles courantes.\n\n1. Creez ou copiez une cle API depuis la console.\n2. Remplacez la base URL du fournisseur par l URL relais Route Key.\n3. Gardez le corps de requete habituel et choisissez un modele pris en charge.\n4. Verifiez le premier appel dans les logs d usage.\n\n## Configuration compatible SDK OpenAI\n\n```ts\nimport OpenAI from 'openai'\n\nconst client = new OpenAI({\n apiKey: 'sk-your-key',\n baseURL: 'https://api.routekey.ai/v1',\n})\n```\n","concepts":"# Concepts essentiels\n\nComprenez la cle API, la base URL, le nom du modele, puis le suivi usage et facturation avant de depanner une integration.\n","models":"# Choisir un modele\n\nCommencez par un endpoint a faible risque, puis passez a un modele plus puissant ou multimodal si necessaire.\n","errors":"# Erreurs courantes\n\nLes premiers echecs viennent souvent de l authentification, du nom de modele, du quota ou de la forme de requete.\n","referenceOverview":"# Reference API\n\nAppelez les services de modeles avec des formats compatibles avec les API officielles des fournisseurs.\n","openai":"# Endpoints compatibles OpenAI\n\nCes routes couvrent les modeles, chat completions, Responses, images, video, audio, embeddings, moderation, realtime et Codex.\n","anthropic":"# Endpoints Anthropic\n\nClaude utilise le format Messages avec messages, max_tokens, system, tools et stream.\n","gemini":"# Endpoints Gemini\n\nLes routes Gemini prennent en charge generateContent et les taches video via le relais compatible.\n","qwen":"# Endpoints Qwen\n\nLes routes Qwen couvrent chat, Responses, images, embeddings et rerank.\n","deepseek":"# Endpoints DeepSeek\n\nDeepSeek prend en charge chat completions compatibles OpenAI et completions texte.\n","grokXai":"# Endpoints Grok / xAI\n\nLes routes Grok couvrent chat, Responses, images et video.\n","minimax":"# Endpoints MiniMax\n\nMiniMax couvre chat, images et synthese vocale via des endpoints relais compatibles.\n","xunfei":"# Endpoints Xunfei Spark\n\nSpark utilise une route chat completions compatible OpenAI pour les conversations texte.\n"},"endpointCopy":{"openai-models":{"title":"Lister les modeles","format":"Modeles compatibles API officielle","description":"Liste les modeles disponibles."},"openai-chat":{"title":"Creer une completion chat","format":"OpenAI Chat Completions","description":"Cree une reponse de modele depuis l historique de conversation."},"openai-responses":{"title":"Creer une reponse","format":"OpenAI Responses","description":"Cree une reponse au format Responses API."},"openai-images":{"title":"Generation d images","format":"OpenAI Images","description":"Cree des images selon les capacites du modele amont."},"openai-video":{"title":"Creer une video","format":"Tache OpenAI Sora","description":"Soumet une tache video geree par le relais."},"openai-audio-speech":{"title":"Creer une voix","format":"OpenAI Audio","description":"Convertit le texte en audio."},"openai-embeddings":{"title":"Creer des embeddings","format":"OpenAI Embeddings","description":"Cree des embeddings pour recherche et similarite."},"openai-moderations":{"title":"Creer une moderation","format":"OpenAI Moderations","description":"Modere le texte en entree."},"openai-realtime":{"title":"Connexion realtime","format":"OpenAI Realtime WebSocket","description":"Ouvre une session WebSocket realtime."},"anthropic-messages":{"title":"Creer un message","format":"Anthropic Messages","description":"Cree une reponse au format Claude Messages."},"gemini-generate":{"title":"Generer du contenu","format":"Gemini natif","description":"Cree du texte ou des reponses multimodales via Gemini."},"gemini-images":{"title":"Generation d images Gemini","format":"Gemini image natif","description":"Cree des images via Gemini multimodal."},"gemini-video":{"title":"Tache video Gemini / Veo","format":"Adaptateur Gemini","description":"Soumet des taches video Gemini/Veo."},"ali-chat":{"title":"Qwen chat completion","format":"Compatible Ali officiel","description":"Appelle les modeles Qwen chat."},"ali-responses":{"title":"Qwen Responses","format":"Ali Responses","description":"Appelle Qwen via le format Responses."},"ali-images":{"title":"Qwen Image","format":"Ali Image","description":"Appelle les modeles image Ali."},"ali-embeddings":{"title":"Qwen Embeddings","format":"Ali Embeddings","description":"Cree des embeddings Ali."},"ali-rerank":{"title":"Qwen Rerank","format":"Ali Rerank","description":"Reclasse les documents candidats."},"xunfei-chat":{"title":"Spark chat completion","format":"Compatible Xunfei officiel","description":"Appelle les modeles Xunfei Spark."},"deepseek-chat":{"title":"DeepSeek chat completion","format":"Compatible DeepSeek officiel","description":"Appelle les modeles chat DeepSeek."},"deepseek-completions":{"title":"DeepSeek completion","format":"Compatible DeepSeek officiel","description":"Appelle DeepSeek au format completions texte."},"xai-chat":{"title":"Grok chat completion","format":"Compatible xAI officiel","description":"Appelle les modeles chat Grok."},"xai-responses":{"title":"Grok Responses","format":"xAI Responses","description":"Appelle Grok via le format Responses."},"xai-images":{"title":"Generation d images Grok","format":"Adaptateur image xAI","description":"Cree des images avec Grok."},"xai-video":{"title":"Modele video Grok","format":"Entree video xAI","description":"Soumet des taches video Grok."},"minimax-chat":{"title":"MiniMax chat completion","format":"Route MiniMax compatible OpenAI","description":"Appelle les modeles chat MiniMax."},"minimax-images":{"title":"Generation d images MiniMax","format":"Adaptateur image MiniMax","description":"Cree des images avec MiniMax."},"minimax-audio":{"title":"Voix MiniMax","format":"Adaptateur TTS MiniMax","description":"Convertit le texte en voix MiniMax."},"codex-responses":{"title":"Codex Responses","format":"Codex Responses","description":"Appelle Codex via le format Responses."},"codex-responses-compact":{"title":"Codex Responses compact","format":"Codex compact Responses","description":"Appelle les modeles Codex compacts."}},"endpointFeatures":{"audio":{"title":"Audio","description":"Audio"},"anthropic":{"title":"Messages","description":"Claude Messages"},"chat":{"title":"Chat","description":"Chat"},"codex":{"title":"Codex","description":"Codex Responses"},"completions":{"title":"Completions","description":"Text completions"},"embeddings":{"title":"Embeddings","description":"Embeddings"},"gemini":{"title":"Generation de contenu","description":"Generation de contenu"},"images":{"title":"Images","description":"Images"},"models":{"title":"Modeles","description":"Modeles"},"moderations":{"title":"Moderation","description":"Moderation"},"realtime":{"title":"Temps reel","description":"Temps reel"},"rerank":{"title":"Rerank","description":"Rerank"},"responses":{"title":"Responses","description":"Responses API"},"videos":{"title":"Video","description":"Video generation"}},"params":{"model":"Nom du modele","messages":"Chat","input":"Input","instructions":"Instructions","tools":"Tools","stream":"Temps reel","maxOutputTokens":"Max output tokens","prompt":"Prompt","n":"Count","size":"Size","quality":"Quality","responseFormat":"Response format","inputReference":"Reference input","seconds":"Seconds","voice":"Voice","speed":"Speed","encodingFormat":"Encoding format","dimensions":"Dimensions","contents":"Generation de contenu","generationConfig":"Generation config","safetySettings":"Safety settings","query":"Query","documents":"Documents","topN":"Top N","temperature":"Temperature","topP":"Top P","maxTokens":"Max tokens","system":"System"},"responseFields":{"data":"Data","id":"ID","object":"Object","choices":"Choices","usage":"Usage","output":"Output","created":"Created","status":"Status","progress":"Progress","binary":"Binary","results":"Results","events":"Events","type":"Type","content":"Content","candidates":"Candidates","usageMetadata":"Usage","model":"Nom du modele","size":"Size"},"reference":{"modelsTitle":"List Models","modelsDesc":"Lists OpenAI-style models available through the relay.","modelsResponse":"Result array or provider-compatible model data.","pricingTitle":"List Pricing","pricingDesc":"Reads model ratios, groups, vendors, and supported endpoint types from the pricing endpoint.","pricingResponse":"Pricing records and group metadata used by the Models page.","userTitle":"Current User","userDesc":"Returns the logged-in user for Dashboard personalization.","userResponse":"Current account profile, quota and usage fields.","compatibleDesc":"OpenAI-compatible {{endpoint}} endpoint routed through compatible channels.","providerResponse":"Provider-compatible response body.","chatTitle":"Create Chat Completion","responsesTitle":"Create Response","messagesTitle":"Create Message","imagesTitle":"Create Image","audioTitle":"Create Audio","embeddingsTitle":"Create Embedding","moderationsTitle":"Create Moderation"}},"modelsPage":{"title":"Comparer les prix des API IA","backToTop":"Back to top","description":"Comparez les coûts API de GPT, Claude, Gemini, DeepSeek, Grok, Qwen et d'autres modèles avant de router le trafic via Route Key.","pricingGuideEyebrow":"Guide des prix AI API","pricingGuideTitle":"Comparez le coût des tokens avant le trafic de production","pricingGuideIntro":"Le prix d’une API IA dépend des tokens d’entrée, de sortie, du cache, du groupe de facturation et de l’endpoint. Comparez ces signaux dans un même catalogue avant de choisir une route.","catalogEyebrow":"Ressources de comparaison","catalogTitle":"Continuer vers les comparatifs de prix","catalogIntro":"Utilisez le catalogue en direct pour les signaux actuels, puis ouvrez les guides pour comparer les prix ou préparer l’intégration.","pricingFaqEyebrow":"FAQ sur les prix des API IA","pricingFaqTitle":"Questions fréquentes sur le coût des modèles","pricingFaqAriaLabel":"FAQ sur les prix des API IA","pricingGuideIllustrationAlt":"Illustration des prix et du routage des modèles IA","modelIndexTitle":"Index complet des identifiants de modèles","modelIndexSummary":"Parcourir les {{count}} identifiants disponibles","modelIndexDescription":"Développez cet index pour consulter tous les identifiants renvoyés par le catalogue de prix. Sélectionnez un identifiant pour filtrer le tableau en direct.","pricingConcepts":{"inputOutputTitle":"Prix de l’entrée, de la sortie et du cache","inputOutputDescription":"Les tokens d’entrée couvrent le prompt et le contexte; les tokens de sortie couvrent le contenu généré. Vérifiez aussi le tarif du cache pour les contextes répétés.","billingTitle":"Facturation par token ou par requête","billingDescription":"La plupart des modèles sont facturés par token, tandis que certains endpoints utilisent une unité ou des frais par requête.","ratioTitle":"Ratio de groupe et ratio de modèle","ratioDescription":"Le ratio de groupe applique un multiplicateur de compte ou de canal; le ratio du modèle applique son ajustement propre.","providerTitle":"Comparer GPT, Claude, Gemini, DeepSeek et Qwen","providerDescription":"Utilisez les filtres de fournisseur et la recherche pour comparer les familles prises en charge dans le même catalogue.","endpointTitle":"Choisir le bon endpoint","endpointDescription":"Vérifiez que l’endpoint prend en charge chat, responses, embeddings, images ou audio selon votre requête.","selectionTitle":"Méthode pratique de sélection","selectionDescription":"Commencez par la qualité, puis comparez coût, contexte, latence et santé. Testez un échantillon avant le routage à grande échelle."},"pricingGuideLinks":"Continuez avec la documentation développeur ou le guide d’intégration pour envoyer votre première requête.","integrationGuideLink":"Guide d’intégration","filters":"Filtres","vendor":"Fournisseur","group":"Groupe","billing":"Facturation","tags":"Tags","endpoint":"Endpoint","context":"Contexte","search":"Rechercher des modeles","searchPlaceholder":"Rechercher modele, fournisseur, tag, endpoint...","currency":"Devise","unit":"Unite de jetons","ratio":"Ratios","cardView":"Vue cartes","tableView":"Vue tableau","resultSummary":"result summary {{shown}} {{total}}","activeFilters":"active filters {{count}}","pageSize":"Taille de page","copyModel":"Copier le nom du modele","noDescription":"L’endpoint de tarification n’a fourni aucune description du modèle.","input":"Entree","output":"Sortie","cache":"Cache","officialPrice":"Officiel","groupRatio":"Ratio de groupe","modelRatio":"Ratio de modele","completionRatio":"completion ratio","cacheRatio":"Ratio cache","usedGroup":"Groupe utilise","perRequest":"Par requete","perToken":"Par jeton","priceBasis":"par 1 M de tokens","allVendors":"Tous les fournisseurs","allGroups":"Tous les groupes","allBilling":"Toute facturation","allTags":"Tous les tags","allEndpoints":"Tous les endpoints","model":"Modele","actions":"Actions","pagination":"pagination {{start}} {{end}} {{total}}","groupPricing":"Tarifs par groupe","selectGroupPreview":"Choisir un groupe pour previsualiser le prix","selectGroupPreviewDescription":"Le meme modele peut exister dans plusieurs groupes de compte. Choisissez un groupe; les prix ci-dessous suivent son ratio.","activeRatio":"Ratio actif","closeDetails":"Fermer les détails du modèle","basicInfo":"Informations de base","notAvailable":"Non disponible","emptyTitle":"Aucun modele correspondant","emptyDescription":"Modifiez la recherche ou reinitialisez les filtres."},"integrationGuide":{"heroTitle":"Connecter les apps et les agents de code","heroDescription":"Utilisez une clé API Route Key et une passerelle compatible pour vos applications, SDK et outils de code.","beforeKicker":"Avant de commencer","beforeTitle":"Préparer une connexion API sûre et reproductible","beforeDescription":"Route Key utilise un format compatible OpenAI. La plupart des SDK ont besoin d'une base URL, d'une clé API et d'un ID de modèle pris en charge.","apiKeyTitle":"Créer et protéger votre clé API","apiKeyDescription":"Créez une clé depuis le Dashboard, nommez-la clairement et utilisez une clé par application ou outil. Conservez-la dans une variable secrète et ne la publiez jamais dans le code ou les journaux.","requestValuesTitle":"Comprendre les trois valeurs de la requête","requestValuesDescription":"La base URL sélectionne la passerelle, le jeton Bearer authentifie la requête et l'ID du modèle sélectionne un modèle activé. Utilisez l'ID exact de la page Modèles.","accessTitle":"Confirmer l’accès avant le déploiement","accessDescription":"Vérifiez le solde ou le quota, le groupe du modèle et la compatibilité de l’endpoint. Une courte requête non streamée isole rapidement les erreurs.","stepOneKicker":"Étape 01","stepOneTitle":"Connecter votre application IA","stepOneDescription":"Trois valeurs suffisent pour envoyer votre première requête compatible.","baseUrl":"Base URL","authorization":"Autorisation","model":"Modèle","modelDescription":"Choisissez un ID activé exact dans Modèles.","firstRequest":"Première requête fonctionnelle","verifyKicker":"Vérifier la connexion","verifyTitle":"Confirmer la réponse et consulter les journaux","verifyDescription":"Une réponse HTTP valide confirme la base URL, le modèle, le format et le quota. Gardez le premier test court et déterministe.","verifyStepOne":"Envoyez une courte requête avec une petite limite de sortie et vérifiez la réponse ou le flux.","verifyStepTwo":"Notez l’ID du modèle et l’endpoint qui ont répondu afin de reproduire la configuration.","verifyStepThree":"Ouvrez les journaux et vérifiez la requête, les tokens, la latence et le coût.","verifyStepFour":"Ajoutez progressivement le streaming, les outils, le contexte long et la concurrence.","authErrorTitle":"Erreurs d’authentification 401 ou 403","authErrorDescription":"Vérifiez le préfixe Authorization: Bearer, les espaces, l’état de la clé et la base URL /v1.","modelErrorTitle":"Modèle introuvable ou indisponible","modelErrorDescription":"Copiez l’ID activé depuis Modèles et confirmez son groupe et son endpoint.","quotaErrorTitle":"Erreurs de quota, solde ou débit","quotaErrorDescription":"Vérifiez le portefeuille, les limites et les journaux. Réduisez la concurrence ou la sortie pour le test.","stepTwoKicker":"Étape 02","stepTwoTitle":"Configurer un agent de code","stepTwoDescription":"Utilisez une clé dédiée par outil et copiez le profil correspondant.","agentSetup":"Configuration compatible Route Key","officialDocs":"Docs officielles","officialDownload":"Téléchargement officiel","agentCheckKey":"Créez une clé API Route Key dédiée.","agentCheckModel":"Choisissez un modèle activé dans Modèles.","agentCheckLogs":"Redémarrez l’outil et vérifiez les journaux.","operationalKicker":"Checklist opérationnelle","operationalTitle":"Garder chaque intégration maintenable","operationalDescription":"La compatibilité OpenAI réduit la migration, mais une intégration fiable demande une clé par outil, un modèle testé et une base URL en configuration.","docsLink":"Lire la documentation développeur","modelsLink":"Comparer les modèles pris en charge","faq":{"sdkQuestion":"Puis-je utiliser un SDK OpenAI existant ?","sdkAnswer":"Généralement oui. Conservez le format du SDK, définissez la base URL Route Key /v1 et utilisez une clé API Route Key.","keyQuestion":"Faut-il partager une clé entre plusieurs outils ?","keyAnswer":"Non. Une clé par application ou agent facilite les journaux et la rotation sans interrompre les autres intégrations.","costQuestion":"Où analyser une différence de coût ?","costAnswer":"Comparez le modèle, le ratio de groupe, les tokens, l’endpoint et l’heure dans les journaux, puis consultez le catalogue de prix."}},"dashboard":{"title":"Console","subtitle":"Console New API","console":"Console","overview":"Vue d ensemble","overviewDesc":"Resume quota, depenses et trafic","wallet":"Portefeuille","walletDesc":"Recharger le solde, utiliser des codes et consulter les commandes","apiKeys":"Cles API","apiKeysDesc":"Liste des jetons et etat des cles","usageLogs":"Logs d usage","usageLogsDesc":"Historique des requetes et details de facturation","session":"Session","guest":"Compte invite","syncing":"Synchronisation","accountData":"account data","usageStatistics":"Statistiques d usage","resourceConsumption":"Consommation des ressources","performanceMetrics":"Indicateurs de performance","balance":"Solde","historicalUsage":"Usage historique","periodRequests":"period requests","statisticalRequests":"statistical requests","periodCost":"period cost","statisticalTokens":"statistical tokens","averageRpm":"RPM moyen","averageTpm":"TPM moyen","modelAnalytics":"Analyse des modeles","modelAnalyticsDesc":"Texte explicatif pour model analytics desc.","quotaDistribution":"Cout","callTrend":"Tendance","trendPeak":"Pic","trendTotal":"Total","trendPoints":"{{count}} points","unknownModel":"unknown model","noUsageData":"Aucune donnee recente","apiInfo":"Informations API","apiInfoEmpty":"api info empty","walletBalance":"Solde du portefeuille","walletUsed":"wallet used","walletRedeem":"Code de redemption","walletRedeemDesc":"Texte explicatif pour wallet redeem desc.","walletRedeemPlaceholder":"Saisir wallet redeem placeholder","walletRedeemAction":"wallet redeem action","walletRedeemSuccess":"Operation reussie.","walletRedeemFailed":"Operation echouee. Veuillez reessayer.","walletRedeemAdded":"wallet redeem added {{value}}","walletPaymentMethod":"Methode de paiement","walletPaymentDesc":"Texte explicatif pour wallet payment desc.","walletNoPaymentMethods":"wallet no payment methods","walletMinTopup":"wallet min topup {{value}}","walletMinTopupHint":"Please enter the recharge amount, starting from {{value}} USD.","walletAmount":"wallet amount","walletWaffoAuto":"wallet waffo auto","walletEstimated":"wallet estimated","walletEstimating":"wallet estimating","walletPayAction":"wallet pay action","walletPayConfirmTitle":"Confirm {{asset}} recharge","walletPayConfirmAction":"Confirm and continue","walletPayConfirmCancel":"Back to edit","walletPayConfirmDesc":"Use the {{network}} network and transfer exactly to the address and amount shown on the payment page. Do not round, underpay, overpay, or deduct exchange withdrawal fees. Only one pending {{asset}} order is kept within 30 minutes.","walletPayFailed":"Operation echouee. Veuillez reessayer.","walletRedirecting":"wallet redirecting","walletPaymentOpened":"wallet payment opened","walletRequestFailed":"Operation echouee. Veuillez reessayer.","walletNoPaymentLink":"wallet no payment link","walletUsdtReminderTitle":"{{asset}} recharge notice","walletUsdtConfirmExactAmount":"Please confirm that you will use the {{network}} network and transfer exactly to the address and amount shown on the payment page.","walletUsdtConfirmNetwork":"Network","walletUsdtReminderAmount":"Do not round, underpay, or overpay. Pay exchange withdrawal fees separately and do not deduct them from the payable amount.","walletUsdtReminderSupport":"If the amount does not match, the recharge may not be credited automatically. If it is not credited, keep the TxID and contact support.","walletUsdtConfirmPendingLimit":"After submission, this account can keep only one pending {{asset}} order within 30 minutes.","walletUsdtConfirmNoCancel":"The order cannot be cancelled manually. It will be credited automatically after successful payment, or timeout automatically after 30 minutes if unpaid.","walletHistory":"Historique de recharge","walletHistoryDesc":"Texte explicatif pour wallet history desc.","walletSearchOrder":"Rechercher un numero de commande","walletNoOrders":"wallet no orders","walletPaid":"wallet paid","walletHistoryWindow":"wallet history window","walletHistoryWindowDesc":"Texte explicatif pour wallet history window desc.","orderNo":"order no","paymentMethod":"payment method","walletStatus":{"success":"Operation reussie.","pending":"pending","failed":"Operation echouee. Veuillez reessayer.","expired":"expired"},"settings":"Parametres","settingsDesc":"Preferences du compte et parametres de console","tickets":"Tickets","ticketsDesc":"Track support tickets and payment issues","copyFailed":"Copy failed","settingsEmpty":"settings empty","emailBinding":"email binding","emailBindingDesc":"Texte explicatif pour email binding desc.","currentEmail":"current email","notBound":"not bound","changeEmail":"change email","bindEmail":"Bind Email","emailAddress":"Email Address","emailBindDesc":"Bind an email address to your account.","emailBindChangeDesc":"Current email: {{email}}. Enter a new email to change.","emailBindEmailPlaceholder":"Enter your email","verificationCode":"Verification Code","verificationCodePlaceholder":"Enter code","emailBindCooldown":"{{seconds}}s","emailBindEmailInvalid":"Please enter a valid email address.","emailBindCodeRequired":"Please enter the verification code.","emailBindCodeSent":"Verification code sent","emailBindCodeSentDesc":"Please check your email for the verification code.","emailBindCodeSendFailed":"Failed to send verification code.","emailBound":"Email bound successfully","emailBoundDesc":"Your account email binding has been updated.","emailBindFailed":"Failed to bind email.","accountSecurity":"account security","accountSecurityDesc":"Texte explicatif pour account security desc.","changePassword":"Changer le mot de passe","changePasswordDesc":"Texte explicatif pour change password desc.","currentPassword":"Mot de passe actuel","currentPasswordPlaceholder":"Saisir current password placeholder","newPassword":"new password","newPasswordPlaceholder":"Saisir new password placeholder","confirmNewPassword":"confirm new password","confirmNewPasswordPlaceholder":"Saisir confirm new password placeholder","passwordRequired":"Ce champ est requis.","passwordSameAsCurrent":"password same as current","passwordChanged":"Operation reussie.","passwordChangedDesc":"Texte explicatif pour password changed desc.","passwordChangeFailed":"Operation echouee. Veuillez reessayer.","preferences":"preferences","preferencesDesc":"Texte explicatif pour preferences desc.","languagePreference":"Preference de langue","languagePreferenceDesc":"Texte explicatif pour language preference desc.","notificationSettings":"Parametres de notification","notificationSettingsDesc":"Texte explicatif pour notification settings desc.","notificationMethod":"notification method","emailNotification":"email notification","webhookNotification":"webhook notification","barkNotification":"bark notification","gotifyNotification":"gotify notification","notificationEmail":"notification email","notificationEmailPlaceholder":"Saisir notification email placeholder","balanceWarningThreshold":"balance warning threshold","balanceWarningThresholdDesc":"Texte explicatif pour balance warning threshold desc.","webhookUrl":"Webhook URL","webhookUrlPlaceholder":"https://example.com/webhook","webhookSecret":"Webhook Secret","webhookSecretPlaceholder":"Enter secret key","barkUrl":"Bark Push URL","barkUrlPlaceholder":"https://api.day.app/yourkey/{{title}}/{{content}}","barkUrlDesc":"Template variables: {{title}}, {{content}}","gotifyUrl":"Gotify Server URL","gotifyUrlPlaceholder":"https://gotify.example.com","gotifyToken":"Gotify Application Token","gotifyTokenPlaceholder":"Enter application token","gotifyPriority":"Message Priority","settingsValidationFailed":"Check settings","settingsSaveFailed":"Settings save failed","settingsSaveFailedDesc":"Failed to update settings. Please try again.","balanceWarningThresholdInvalid":"Balance warning threshold must be greater than 0.","notificationEmailInvalid":"Enter a valid notification email address.","webhookUrlRequired":"Webhook URL is required.","webhookUrlInvalid":"Enter a valid HTTP or HTTPS Webhook URL.","barkUrlRequired":"Bark push URL is required.","barkUrlInvalid":"Enter a valid HTTP or HTTPS Bark push URL.","gotifyUrlRequired":"Gotify server URL is required.","gotifyUrlInvalid":"Enter a valid HTTP or HTTPS Gotify server URL.","gotifyTokenRequired":"Gotify application token is required.","gotifyPriorityInvalid":"Gotify priority must be between 0 and 10.","privacySettings":"Parametres de confidentialite","privacySettingsDesc":"Texte explicatif pour privacy settings desc.","acceptModelsWithoutPricing":"accept models without pricing","acceptModelsWithoutPricingDesc":"Texte explicatif pour accept models without pricing desc.","recordRequestIp":"record request ip","recordRequestIpDesc":"Texte explicatif pour record request ip desc.","logoutDesc":"Texte explicatif pour logout desc.","settingsSaved":"Parametres enregistres","languageSaved":"Preference de langue mise a jour.","notificationSaved":"Parametres enregistres.","privacySaved":"Parametres enregistres.","save":"Enregistrer","searchTokens":"Rechercher un nom de jeton","searchTokenKey":"Rechercher une cle","searchLogs":"Rechercher un nom de modele","startTime":"Heure de debut","endTime":"Heure de fin","allTypes":"Tous les types","modelNamePlaceholder":"Saisir model name placeholder","groupPlaceholder":"Saisir group placeholder","searchTokenName":"search token name","tokenNamePlaceholder":"Saisir token name placeholder","requestId":"request id","requestIdPlaceholder":"Saisir request id placeholder","timing":"timing","tokenBreakdown":"token breakdown","details":"details","search":"Rechercher","addToken":"Ajouter un jeton","copySelectedTokens":"copy selected tokens","deleteSelectedTokens":"delete selected tokens","selectAllTokens":"select all tokens","selectToken":"select token {{name}}","editToken":"edit token","deleteToken":"delete token","enableToken":"enable token","disableToken":"disable token","saveToken":"save token","tokenEditorDesc":"Texte explicatif pour token editor desc.","tokenGroupPlaceholder":"Saisir token group placeholder","tokenMetadataLoadFailed":"Failed to load available groups or models.","groupRatioLabel":"Ratio {{ratio}}","remainAmount":"remain amount","expiredTime":"expired time","expiredTimePlaceholder":"Saisir expired time placeholder","expiredTimeSelectPlaceholder":"Select date","unlimitedQuota":"unlimited quota","unlimitedQuotaDesc":"Texte explicatif pour unlimited quota desc.","crossGroupRetry":"Cross-group retry","crossGroupRetryDesc":"Allow New API to retry through another group when smart fallback is available.","addModelLimit":"Add","availableModels":"Available models","availableModelsPlaceholder":"Select/Search/Add available models, empty means no restrictions.","modelLimits":"model limits","modelLimitsPlaceholder":"Saisir model limits placeholder","modelNoMatches":"No matching models.","modelSearchPlaceholder":"Search or add a model","modelSelectedCount":"{{count}} selected","allowIps":"allow ips","allowIpsPlaceholder":"Saisir allow ips placeholder","ipWhitelist":"IP whitelist","ipWhitelistPlaceholder":"Single IP (e.g. 192.168.1.1) or CIDR format (e.g. 192.168.1.0/24), multiple entries separated by commas.","tokenNameRequired":"Ce champ est requis.","tokenQuotaRequired":"Ce champ est requis.","tokenExpiredInvalid":"Operation echouee. Veuillez reessayer.","tokenActionSuccess":"Operation reussie.","tokenActionFailed":"Operation echouee. Veuillez reessayer.","tokenCreated":"Operation reussie.","tokenUpdated":"Operation reussie.","tokenDeleted":"Operation reussie.","tokenEnabled":"Operation reussie.","tokenDisabled":"Operation reussie.","tokenBatchCopied":"Operation reussie. {{count}}","tokenBatchDeleted":"Operation reussie. {{count}}","selectTokenFirst":"select token first","confirmDeleteToken":"confirm delete token","confirmBatchDeleteTokens":"confirm batch delete tokens {{count}}","name":"name","key":"key","group":"group","quota":"quota","used":"Utilise","remain":"remain","status":"status","actions":"Actions","copyKey":"Copier la cle","hideKey":"Masquer la cle","keyCopied":"Cle copiee.","moreActions":"More actions","showKey":"Afficher la cle","unlimited":"unlimited","enabled":"Active","disabled":"Desactive","unknown":"Inconnu","loading":"Chargement des donnees...","noTokens":"Aucune cle API trouvee","statQuota":"stat quota","statTokens":"stat tokens","time":"time","type":"type","model":"model","token":"Jeton","prompt":"prompt","completion":"completion","cost":"Cout","latency":"latency","recharge":"recharge","consume":"consume","manage":"manage","system":"system","error":"error","refund":"refund","noLogs":"Aucun log d usage trouve","authGateEyebrow":"Plan de controle securise","authGateTitle":"Acces au compte requis","authGateCopy":"Connectez-vous pour consulter solde, jetons, logs et reglages.","signIn":"Sign in","all":"All","optional":"Optional","page":"Page","basicInfo":"Basic info","billing":"Billing","billingProcess":"Billing process","cacheSummary":"Cache summary","cacheTokens":"Cache tokens","category":"Category","channelTest":"Channel test","completedTime":"Completed time","confirmPassword":"Confirm password","contact":"Contact","content":"Content","controlSettings":"Control settings","copied":"Copied","copyAddress":"Copy address","createTicket":"Create ticket","createdTime":"Created time","currentSelection":"Current selection","dateYear":"Year","dateMonth":"Month","dateDay":"Day","dateHour":"Hour","dateMinute":"Minute","downstreamError":"Downstream error","duration":"Duration","emptyData":"No data","info":"Info","input":"Input","invite":"Invite","inviteRewardTransfer":"Invite reward transfer","ip":"IP","log":"Log","logDetails":"Log details","logId":"Log ID","noGroupsMatched":"No groups matched","noTickets":"Aucun ticket trouve","noTicketsMobileDesc":"Envoyez un ticket pour les problemes de paiement, compte ou API.","nonStream":"Non-stream","onlineTopup":"Online top-up","otherDetails":"Other details","output":"Output","quotaPolicy":"Quota policy","reason":"Reason","reasoningEffort":"Reasoning effort","rechargeAmount":"Recharge amount","refundAmount":"Refund amount","rejectReason":"Reject reason","request":"Request","requestPath":"Request path","runtime":"Runtime","searchGroup":"Search group","selectGroup":"Select group","sendCode":"Send code","spend":"Spend","stream":"Stream","submitSupportTicket":"Envoyer un ticket support","support":"Support","timeFirstWord":"Time","tokenIdentityDesc":"Name the token and choose its account group.","tokenModelScopeDesc":"Limit the models this token can call, or leave empty for no restriction.","tokenNetworkScopeDesc":"Restrict token access by IP address or CIDR when needed.","tokenQuotaPolicyDesc":"Set quota, expiration, and retry behavior for this token.","tokens":"Tokens","uploadAttachment":"Upload attachment","upstreamModel":"Upstream model","upstreamModelUpdateNotifyEnabled":"Model update notification","upstreamModelUpdateNotifyEnabledDesc":"Notify this account when upstream model availability changes.","username":"Username","warning":"Warning","agencyReward":"Agency reward","asyncRetryRebalance":"Async retry rebalance","attachment":"Attachment","attachments":"Attachments","walletRecords":"Wallet records","walletBuiltinExistingOrder":"Pending {{asset}} order exists","walletBuiltinExistingOrderDesc":"Only one pending {{asset}} order can be kept within {{minutes}} minutes. Complete the current order or wait for it to expire.","walletBuiltinTxInvalid":"Enter a valid {{asset}} transaction hash.","walletPaymentSubmitted":"Payment submitted","walletPaymentSubmittedDesc":"We will check the payment status after the transfer is confirmed.","walletPaymentSuccess":"Payment confirmed","walletPaymentSuccessDesc":"The top-up has been credited to your account.","walletPaymentPending":"Payment pending","walletPaymentPendingDesc":"Waiting for the payment network to confirm this order.","walletPaymentTimeoutDesc":"This payment order has expired. Create a new order to continue.","walletPaymentQrCreated":"Payment order created","walletPaymentQrCreatedDesc":"Scan or open the payment page to complete the order.","walletPaymentAmount":"Payment amount","walletPaymentQrTitle":"Complete payment","walletPaymentQrDesc":"Scan the QR code or open the payment app, then complete the exact payment.","walletPaymentCheckPaid":"Check payment","walletPaymentOpenApp":"Open payment app","walletPaymentPendingTitle":"Payment pending","walletBuiltinPaying":"On-chain payment","walletBuiltinPayingTitle":"Complete {{asset}} payment","walletBuiltinReceiveAddress":"Receive address","walletBuiltinQrHint":"Scan with a wallet app that supports {{network}}.","walletBuiltinPaymentAmount":"Payment amount","walletBuiltinPaymentNetwork":"Payment network","walletBuiltinRemainingTime":"Remaining time","walletBuiltinOrderNo":"Order no.","walletBuiltinExpiresAt":"Expires at","walletBuiltinBuyCrypto":"Buy crypto","walletBuiltinStrictTitle":"Pay the exact amount","walletBuiltinStrictDesc":"Use the selected network and transfer the exact amount shown. Do not round, underpay, overpay, or deduct exchange withdrawal fees.","walletBuiltinTxTitle":"Submit transaction hash","walletBuiltinTxDesc":"After transfer, paste the wallet transaction hash so support can match the payment if needed.","walletBuiltinTxLabel":"Transaction hash","walletBuiltinTxPlaceholder":"Enter TxID / transaction hash","walletBuiltinSubmitTx":"Submit TxID","ticketFetchFailed":"Failed to load tickets.","ticketDetailFailed":"Failed to load ticket details.","ticketAttachmentLimit":"You can upload up to {{count}} attachments.","ticketAttachmentTooLarge":"Each attachment must be no larger than {{size}}MB.","ticketAttachmentUploadFailed":"Failed to upload attachment: {{name}}","ticketAttachmentDisabled":"Attachment upload is disabled.","ticketAttachmentHint":"Select files, or paste files from the clipboard directly into the text box to upload automatically.","ticketReplyRequired":"Please enter a reply.","ticketReplyFailed":"Failed to send reply.","ticketReplySuccess":"Reply sent.","ticketCloseFailed":"Failed to close ticket.","ticketClosed":"Ticket closed.","ticketReopenFailed":"Failed to reopen ticket.","ticketReopened":"Ticket reopened.","ticketCreateFailed":"Failed to submit ticket.","ticketCreated":"Ticket submitted.","ticketCreatedDesc":"Support will follow up in the ticket thread.","ticketWriteBlocked":"Ticket writing is currently disabled.","ticketCloseConfirm":"Close this ticket? You can reopen it later if needed.","ticketRequired":"Please complete the required ticket fields.","ticketContactPlaceholder":"Email, Telegram, or another contact method","ticketPaymentRepairTitle":"Self-service recharge repair","ticketPaymentRepairDesc":"If you completed an on-chain transfer, enter the order number and transaction hash. The system will try automatic repair before creating a manual ticket.","ticketPaymentRepairEnable":"I completed the transfer. Try automatic repair first.","ticketPaymentRepairRequired":"Please complete the recharge repair fields.","ticketPaymentRepairSuccess":"Recharge repaired","ticketPaymentRepairSuccessTitle":"Recharge repaired","ticketPaymentRepairSuccessDesc":"The payment was matched and credited automatically.","ticketPaymentRepairFallbackTitle":"Manual ticket created","ticketPaymentRepairFallback":"Automatic repair did not pass, so a manual ticket was created. Reason: {{reason}}","ticketRechargeChain":"Recharge chain","ticketRechargeChainPlaceholder":"Select the transfer chain","ticketRechargeOrderNo":"Recharge order No.","ticketTxHash":"Transaction hash","ticketTxHashPlaceholder":"Enter the transaction hash from your wallet or block explorer","pagination":"pagination {{page}} {{pages}} {{total}}"},"supportTicket":{"ticket":"Ticket","detailTitle":"Ticket detail","detailDesc":"Inspect the ticket and reply.","emptyReplies":"No replies yet","internalNote":"Internal","status":{"open":"Open","pending":"Pending","closed":"Closed"},"filters":{"all":"All"},"fields":{"keyword":"Keyword","status":"Status","category":"Category","ticketNo":"Ticket No.","title":"Title","priority":"Priority","lastReply":"Last reply","actions":"Actions","createdAt":"Created at","contact":"Contact","relatedLogId":"Log ID","relatedOrderNo":"Order No."},"placeholders":{"keyword":"Ticket No., title, log ID, order No.","reply":"Enter reply"},"sections":{"support":"Support","timeline":"Timeline","conversation":"Conversation","nextStep":"Next step","reply":"Reply","meta":"Meta","ticketInfo":"Ticket info"},"actions":{"search":"Search","reset":"Reset","detail":"Detail","close":"Close","reopen":"Reopen","sendReply":"Send reply","uploadAttachment":"Upload attachment","closeTicket":"Close ticket","submitTicket":"Submit ticket"},"attachments":{"hint":"Select files or paste files into the text box to upload."}},"topup":{"support":{"submitTicket":"Submit support ticket","defaultTicketTitle":"Recharge issue for order {{orderNo}}","recordTicketContent":"Please review this recharge order.\nOrder No.: {{orderNo}}\nPayment: {{paymentMethod}}\nAmount: {{amount}}\nStatus: {{status}}"}},"language":{"en":"Anglais","fr":"Francais","ja":"Japonais","ko":"Coreen","ru":"Russe","vi":"Vietnamien"},"theme":{"light":"Clair","dark":"Sombre"}}}
Provider: OpenAI-compatible
Base URL: https://api.routekey.ai/v1
API key: YOUR_ROUTEKEY_API_KEY
Model: <route-key-model>
Créez une clé API Route Key dédiée.
Choisissez un modèle activé dans Modèles.
Redémarrez l’outil et vérifiez les journaux.
Checklist opérationnelle
Garder chaque intégration maintenable
La compatibilité OpenAI réduit la migration, mais une intégration fiable demande une clé par outil, un modèle testé et une base URL en configuration. Modeles.
Créez une clé depuis le Dashboard, nommez-la clairement et utilisez une clé par application ou outil. Conservez-la dans une variable secrète et ne la publiez jamais dans le code ou les journaux.
Comprendre les trois valeurs de la requête
La base URL sélectionne la passerelle, le jeton Bearer authentifie la requête et l'ID du modèle sélectionne un modèle activé. Utilisez l'ID exact de la page Modèles. Modeles.
Confirmer l’accès avant le déploiement
Vérifiez le solde ou le quota, le groupe du modèle et la compatibilité de l’endpoint. Une courte requête non streamée isole rapidement les erreurs.
Confirmer la réponse et consulter les journaux
Envoyez une courte requête avec une petite limite de sortie et vérifiez la réponse ou le flux.
Notez l’ID du modèle et l’endpoint qui ont répondu afin de reproduire la configuration.
Ouvrez les journaux et vérifiez la requête, les tokens, la latence et le coût.
Ajoutez progressivement le streaming, les outils, le contexte long et la concurrence.
Erreurs d’authentification 401 ou 403
Vérifiez le préfixe Authorization: Bearer, les espaces, l’état de la clé et la base URL /v1.
Modèle introuvable ou indisponible
Copiez l’ID activé depuis Modèles et confirmez son groupe et son endpoint.
Erreurs de quota, solde ou débit
Vérifiez le portefeuille, les limites et les journaux. Réduisez la concurrence ou la sortie pour le test.
Puis-je utiliser un SDK OpenAI existant ?
Généralement oui. Conservez le format du SDK, définissez la base URL Route Key /v1 et utilisez une clé API Route Key.
Faut-il partager une clé entre plusieurs outils ?
Non. Une clé par application ou agent facilite les journaux et la rotation sans interrompre les autres intégrations.
Où analyser une différence de coût ?
Comparez le modèle, le ratio de groupe, les tokens, l’endpoint et l’heure dans les journaux, puis consultez le catalogue de prix.