Pointez NextChat vers un endpoint compatible OpenAI personnalisé.

Updated 2026-07-29

NextChat surcharge son hôte API avec une seule variable d'environnement BASE_URL sur les déploiements serveur, ou un endpoint personnalisé dans l'app via Settings sur les clients. Ajoutez des ids du catalogue via CUSTOM_MODELS avec le suffixe @OpenAI et Claude, Gemini et DeepSeek apparaissent dans le même sélecteur de modèle sous une seule clé.

Réponse rapide : BASE_URL, une seule clé, et une liste de modèles.

Sur un déploiement serveur (Vercel, Docker, ou Node nu), trois variables d'environnement font tout le travail. BASE_URL surcharge où vont les requêtes API ; le README la décrit comme « override openai api request base url » avec un défaut de https://api.openai.com, et la valeur se saisit sans /v1 parce que NextChat ajoute lui-même le chemin de requête. OPENAI_API_KEY porte la clé de passerelle. CUSTOM_MODELS contrôle le sélecteur de modèle : plus ajoute un modèle, moins en cache un, -all efface la liste par défaut, et name=displayName renomme une entrée. Le détail qui fait fonctionner les ids multi-fournisseurs est le suffixe de fournisseur. NextChat embarque des chemins de code client séparés pour plusieurs fournisseurs, donc un id claude nu ajouté à CUSTOM_MODELS peut surfacer sous le chemin Anthropic, qui attend une clé et un format de requête différents. Ajouter @OpenAI à l'id, comme dans +claude-sonnet-4-6@OpenAI, épingle le modèle au chemin compatible OpenAI de sorte que la requête va vers votre BASE_URL au format chat-completions standard, quel que soit le fournisseur qui a entraîné le modèle.

BASE_URL=https://api.apisrouter.com        # no /v1
OPENAI_API_KEY=sk-APIsRouter-...
CUSTOM_MODELS=-all,+claude-sonnet-4-6@OpenAI,+gpt-5.5@OpenAI,+deepseek-v4-pro@OpenAI
DEFAULT_MODEL=claude-sonnet-4-6

Comment NextChat résout son endpoint.

NextChat (ChatGPTNextWeb sur GitHub, environ 88 000 étoiles) est l'un des frontends de chat les plus déployés qui existent : une app web légère avec un déploiement Vercel en un clic plus des clients packagés pour iOS, macOS, Android, Windows et Linux. Sa popularité vient exactement du mécanisme que cette page utilise, tout est une surface de configuration, et l'endpoint n'est qu'un réglage de plus. Il y a deux de ces surfaces. Les déploiements serveur lisent les variables d'environnement au build et au démarrage : BASE_URL décide de l'hôte, OPENAI_API_KEY authentifie, et CUSTOM_MODELS façonne le sélecteur pour chaque utilisateur de ce déploiement. Les clients et l'interface web exposent en plus un chemin dans l'app : Settings, Model Provider, choisissez OpenAI, puis remplissez les champs d'endpoint et de clé et listez des ids supplémentaires dans le champ de noms de modèles personnalisés. Le chemin dans l'app stocke les valeurs localement par appareil, ce qui en fait la bonne surface pour un client personnel, tandis que les variables d'environnement sont la bonne surface pour un déploiement utilisé par d'autres personnes. Dans les deux cas, la requête qui quitte NextChat est une chat completion standard contre votre endpoint avec l'id de modèle comme simple chaîne. Avec une passerelle multi-fournisseurs derrière BASE_URL, le même déploiement sert Claude pour les longues réponses, un id Gemini rapide pour les questions rapides, et DeepSeek ou GLM pour le trafic bilingue, tous via la même clé.

Configuration complète : déploiement serveur ou réglages dans l'app.

Pour un déploiement Vercel, réglez les variables dans les paramètres d'environnement du projet et redéployez ; Vercel cuit les valeurs d'environnement au build, donc éditer une variable sans redéployer ne change rien. Pour Docker, passez les mêmes variables avec des flags -e ou un fichier env. La variable CODE mérite d'être réglée sur tout déploiement public, elle verrouille l'accès avec un mot de passe pour que des inconnus ne puissent pas dépenser votre clé. Le chemin dans l'app ne nécessite aucun déploiement. Dans Settings, choisissez le fournisseur OpenAI, remplacez l'endpoint par https://api.apisrouter.com, collez la clé, et ajoutez des ids dans le champ de noms de modèles personnalisés en utilisant la même syntaxe que la variable d'environnement. C'est ainsi que les clients desktop et mobile fonctionnent avec une passerelle, et c'est aussi le moyen le plus rapide de tester des valeurs avant de les valider dans un déploiement serveur. DEFAULT_MODEL choisit sur quoi démarrent les nouveaux chats, ce qui compte plus qu'il n'y paraît sur un déploiement partagé : la plupart des utilisateurs ne changent jamais de modèle, donc l'id par défaut est là où atterrit la majorité de la dépense. Réglez-le délibérément sur le modèle que vous voulez voir porter le trafic occasionnel.

docker run -d -p 3000:3000 \
  -e BASE_URL=https://api.apisrouter.com \
  -e OPENAI_API_KEY=$APISROUTER_API_KEY \
  -e CUSTOM_MODELS="-all,+claude-sonnet-4-6@OpenAI,+claude-haiku-4-5-20251001@OpenAI,+gemini-3.5-flash@OpenAI" \
  -e DEFAULT_MODEL=claude-haiku-4-5-20251001 \
  -e CODE=your-access-password \
  yidadaa/chatgpt-next-web

Choisir des modèles pour le sélecteur.

Comme tout le sélecteur facture via une seule clé, la boucle d'ajustement est observationnelle : faites tourner une semaine, lisez l'usage par modèle dans la console, et remodelez CUSTOM_MODELS autour de ce que les gens ont réellement cliqué plutôt que de ce que vous aviez prédit.

  • Démarrez la liste avec -all. Le sélecteur de base est un long menu exclusivement OpenAI ; l'effacer et ajouter quatre ou cinq ids délibérés donne aux utilisateurs un sélecteur où chaque choix est un choix que vous avez chiffré.
  • Le modèle par défaut porte le déploiement. claude-haiku-4-5-20251001 ou gemini-3.5-flash comme DEFAULT_MODEL garde la majorité occasionnelle des échanges rapide et bon marché, avec des ids plus puissants à un clic.
  • Le travail de longue forme mérite une place frontier. claude-sonnet-4-6 et gpt-5.5 sont les choix vers lesquels les utilisateurs se tournent quand un brouillon ou une analyse compte.
  • Les déploiements bilingues devraient inclure deepseek-v4-pro ou glm-5.2 ; NextChat a une énorme base d'installation sinophone et ces ids conviennent nativement à ce trafic.
  • Les renommages sont de la documentation gratuite : des entrées du style claude-sonnet-4-6=Sonnet (rédaction) rendent le sélecteur auto-explicatif pour les utilisateurs non techniques.

Paiement à l'usage · en dessous du tarif officiel

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModèlePrix officielNotre prix
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Gemini 3.5 Flash$1.50 / $9.00 per M$1.20 / $7.20 per M
GLM-5.2$1.14 / $4.00 per M$1.10 / $4.00 per M

Modes d'échec spécifiques à NextChat.

L'erreur du /v1 va dans la direction opposée à la plupart des outils. NextChat ajoute lui-même le chemin de requête à BASE_URL, donc la valeur appartient sans /v1 ; coller https://api.apisrouter.com/v1 produit des chemins doublés qui font 404. Des outils comme LibreChat attendent le /v1 inclus, ce qui explique exactement pourquoi les gens portent la mauvaise habitude dans les deux directions. Un id Claude qui produit des erreurs sur les clés ou les en-têtes signale le suffixe @OpenAI manquant. Sans lui, NextChat peut router l'id via son chemin Anthropic natif, qui ne consulte jamais BASE_URL pour votre passerelle et attend une authentification au format du fournisseur. Épinglez chaque id de passerelle avec @OpenAI et toutes les requêtes prennent le chemin compatible. Des éditions d'environnement qui ne changent rien sont un problème de redéploiement. Sur Vercel, les variables sont lues au build ; sur Docker, le conteneur doit être recréé. Les réglages dans l'app, à l'inverse, s'appliquent immédiatement mais seulement sur cet appareil, l'autre moitié de la même confusion. CODE et OPENAI_API_KEY sont confondus étonnamment souvent. CODE est le mot de passe d'accès que les utilisateurs saisissent dans l'interface ; la clé est ce que le serveur dépense. Si les utilisateurs signalent une page non autorisée avant que le moindre chat n'ait lieu, c'est CODE ; si les chats échouent contre l'endpoint, c'est la clé.

Qui route NextChat via une passerelle.

  • Les gens qui font tourner un déploiement personnel sur Vercel et veulent une seule clé mesurée derrière plutôt qu'un abonnement par fournisseur.
  • Les petites équipes qui partagent une instance NextChat, utilisant CODE pour le contrôle d'accès et une seule clé de passerelle pour que le journal d'usage serve aussi de rapport de coûts.
  • Les utilisateurs de clients desktop et mobile qui pointent l'endpoint dans l'app vers une passerelle pour atteindre Claude, Gemini et DeepSeek depuis un seul sélecteur sur chaque appareil.
  • Les utilisateurs bilingues qui mélangent des ids GLM et DeepSeek avec Claude et GPT dans un seul déploiement, ce que les silos de fournisseurs natifs rendent maladroit.
  • Les développeurs sans accès à la facturation d'un fournisseur donné. Un accès basé sur la recharge, sans exigence de carte, supprime la dépendance à une inscription par fournisseur.

Vérifiez l'endpoint et déboguez le premier chat.

Prouvez l'endpoint avant de déployer : listez les modèles avec la clé et confirmez que chaque id que vous comptez mettre dans CUSTOM_MODELS apparaît, orthographié exactement. Les ids sont transmis comme des chaînes, donc la sortie /v1/models fait foi pour l'orthographe. Déployez ensuite et envoyez un message par modèle du sélecteur. Un 404 partout est l'erreur du /v1 dans BASE_URL. Un 401 est la clé, soit incorrecte soit absente de l'environnement que le build a réellement utilisé. Une erreur uniquement sur les ids Claude est le suffixe @OpenAI manquant. Un sélecteur qui montre des modèles que vous n'avez jamais ajoutés signifie que CUSTOM_MODELS a perdu son préfixe -all ou que la variable n'a pas atteint le build. Une fois les chats en circulation, la console APIsRouter affiche le modèle par requête, le nombre de tokens et la dépense. Pour un déploiement avec plus d'un utilisateur, cette vue répond à la question que tout administrateur NextChat finit par se poser, quel modèle grignote silencieusement le solde, avec des données plutôt que des suppositions.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

Questions fréquentes

Le BASE_URL de NextChat doit-il inclure /v1 ?

Non. NextChat ajoute lui-même le chemin de requête, donc réglez BASE_URL=https://api.apisrouter.com sans /v1. L'inclure produit des chemins doublés qui font 404. C'est la convention opposée à des outils comme LibreChat, qui attendent le /v1 dans la base URL.

Comment ajouter des modèles Claude ou Gemini à NextChat via un seul endpoint ?

Ajoutez-les dans CUSTOM_MODELS avec le suffixe @OpenAI, par exemple +claude-sonnet-4-6@OpenAI. Le suffixe épingle l'id au chemin de requête compatible OpenAI de sorte qu'il aille vers votre BASE_URL, au lieu des chemins clients natifs Anthropic ou Google de NextChat.

Quelle est la différence entre les variables d'environnement et les réglages dans l'app ?

Les variables d'environnement configurent un déploiement serveur pour chaque utilisateur et exigent un redéploiement pour changer. L'endpoint personnalisé dans l'app sous Settings stocke les valeurs localement par appareil et s'applique immédiatement, ce qui convient aux clients desktop et mobile personnels.

Comment retirer la liste de modèles OpenAI par défaut du sélecteur ?

Démarrez CUSTOM_MODELS avec -all, puis ajoutez des ids explicitement : CUSTOM_MODELS=-all,+claude-sonnet-4-6@OpenAI,+gpt-5.5@OpenAI. Les utilisateurs ne voient alors que les modèles que vous avez délibérément listés et chiffrés.

Que fait la variable CODE ?

Elle définit un ou plusieurs mots de passe d'accès pour le déploiement. Les visiteurs doivent saisir un code avant de discuter, ce qui empêche une URL Vercel publique de dépenser votre clé. Elle n'a aucun rapport avec la clé API elle-même.

Pourquoi changer une variable d'environnement n'a-t-il eu aucun effet ?

NextChat lit les valeurs d'environnement au build ou au démarrage du conteneur. Sur Vercel, éditez la variable et redéployez ; sur Docker, recréez le conteneur. Seuls les réglages dans l'app s'appliquent sans redémarrage, et ceux-ci vivent par appareil.