Documentation
NextChat
Une instance NextChat auto-hébergée accède à Kunavo au moyen des variables qu’elle utilise déjà pour OpenAI : OPENAI_API_KEY contient la clé, BASE_URL l’origine et CUSTOM_MODELS les ID. Aucun fork ni correctif n’est nécessaire.
Trois variables d’environnement — OPENAI_API_KEY, BASE_URL (origine seule) et CUSTOM_MODELS — placent un NextChat auto-hébergé sur Claude et GPT avec une seule clé.
CODE=your-access-password
OPENAI_API_KEY=sk-kn-...
BASE_URL=https://api.kunavo.com
HIDE_USER_API_KEY=1
CUSTOM_MODELS=-all,+claude-sonnet-5@OpenAI,+claude-opus-5@OpenAI,+claude-haiku-4-5@OpenAI,+gpt-5-6-sol@OpenAI,+gpt-5-6-terra@OpenAIBASE_URL doit contenir l’origine sans chemin, sans /v1. La page de documentation ne précise pas le suffixe dans une phrase, mais son propre tableau tranche la question : la valeur par défaut documentée est https://api.openai.com, et non https://api.openai.com/v1 — NextChat ajoute le reste du chemin. Un /v1 ajouté manuellement devient /v1/v1/chat/completions ; le serveur renvoie alors une erreur 404 qui ressemble à un point de terminaison défectueux plutôt qu’à une faute de frappe.OPENAI_API_KEY est défini, le serveur appelle Kunavo avec votre clé, et toute personne qui passe CODE dépense sur votre solde. HIDE_USER_API_KEY=1 est documenté ainsi : « Si vous ne souhaitez pas que les utilisateurs saisissent leur propre clé API, définissez cette valeur sur 1 ». Si vous ne le définissez pas, chaque visiteur peut saisir sa propre clé dans Settings ; c’est la configuration voulue pour une instance partagée.-all et le suffixe @OpenAI ne figurent pas dans le tableau documenté, qui ne couvre que +, - et name=displayName. Ils proviennent du code de collecte des modèles de NextChat, consulté le même jour : -all vide la liste intégrée afin que le sélecteur ne propose pas d’ID que Kunavo refuserait, et @OpenAI associe chaque nouvel ID au fournisseur OpenAI afin qu’il soit envoyé à BASE_URL. Un ID écrit sans ce suffixe reçoit un fournisseur du même nom et ne suit pas le chemin configuré. La casse est à respecter exactement.ENABLE_BALANCE_QUERY non défini : la vérification du solde appelle les routes de facturation du tableau de bord OpenAI, qui ne font pas partie de l’interface compatible avec OpenAI. Votre solde est consultable sur /app/billing.sk-kn-) et ajoutez un crédit à partir de 10 $ — les appels sont payés sur ce solde et les appels échoués ne sont pas facturés. Le tableau de bord s’ouvre ensuite sur la configuration NextChat.Étape par étape
- Créez une clé sur
/app/keyset copiez-la — elle n’est affichée qu’une seule fois. - Définissez
OPENAI_API_KEYsur cette clé etBASE_URLsurhttps://api.kunavo.com. Dans Vercel, il s’agit de variables d’environnement du projet ; dans Docker, de drapeaux-e; en local, elles doivent figurer dans.env.local. - Définissez
CODEsur un mot de passe d’accès, sinon le déploiement sera ouvert à quiconque trouve l’URL, tandis que votre clé sera celle qui paiera. - Indiquez dans
CUSTOM_MODELSles identifiants souhaités, chacun avec le suffixe@OpenAI, en commençant par-allpour supprimer les modèles intégrés. - Redéployez : les variables d’environnement sont lues par le serveur, donc un projet Vercel nécessite un nouveau déploiement et un conteneur doit être redémarré. Modifier la variable seule ne change rien dans une instance en cours d’exécution.
- Ouvrez l’application, sélectionnez l’un de vos identifiants dans le sélecteur de modèles et envoyez un message. Si vous recevez une réponse, les trois variables concordent.
Vérifié avec Page des variables d’environnement de NextChat le 21 septembre 2026. Les paramètres tiers évoluent ; si le nom d’un champ ne correspond plus à ce que vous voyez ici, cette page fait autorité, pas celle-ci.
Vérifiez avant de déboguer le client
Une requête suffit à déterminer si l’échec vient de l’endpoint, de la clé ou du fichier de configuration. Si cette requête renvoie du JSON, la même URL de base et la même clé fonctionnent dans NextChat.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Quel identifiant de modèle saisir dans le champ
Tous les modèles textuels sont accessibles sous forme d’identifiant de modèle — la liste à jour se trouve sur GET /v1/models, et le catalogue avec les prix sur la page des modèles. Les tarifs sont en USD par million de tokens, entrée / sortie.
| Identifiant du modèle | Entrée / sortie sur Kunavo | Où cela s’intègre dans NextChat |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | la conversation de tous les jours — de longues discussions sans surveiller le solde |
claude-opus-5 | $3.50 / $17.50 | la question de la semaine qui mérite le modèle coûteux |
claude-haiku-4-5 | $0.70 / $3.50 | résumer, renommer des discussions et gérer les courts échanges qui dominent une instance partagée |
gpt-5-6-sol | $2.00 / $12.00 | une deuxième famille dans le même sélecteur, avec la même clé |
gpt-5-6-terra | $0.70 / $4.20 | de longs documents collés, pour lesquels la fenêtre de contexte est déterminante |
Questions fréquentes
Comment configurer NextChat pour utiliser un point de terminaison d’API personnalisé ?
Définissez BASE_URL sur l’origine du point de terminaison et OPENAI_API_KEY sur la clé qu’il a fournie, toutes deux comme variables d’environnement sur le déploiement auto-hébergé. La page des variables d’environnement de NextChat indique que BASE_URL « remplace l’URL de base des requêtes à l’API OpenAI » : aucune modification de code n’est donc nécessaire. L’application continue d’utiliser le format de requête OpenAI, mais envoie les requêtes ailleurs. Redéployez ensuite : les valeurs sont lues sur le serveur, et une instance en cours d’exécution ne les récupère pas.
Faut-il ajouter /v1 à la fin de BASE_URL dans NextChat ?
Non. NextChat ajoute lui-même le segment de version et la route, ce qui explique pourquoi la valeur par défaut documentée pour BASE_URL est l’origine seule https://api.openai.com, et non https://api.openai.com/v1. Indiquez https://api.kunavo.com, sans rien ajouter. Ajouter vous-même le suffixe double le chemin et produit une erreur 404, qu’on peut facilement prendre pour un point de terminaison indisponible.
Comment ajouter un modèle personnalisé à la liste de modèles de NextChat ?
CUSTOM_MODELS prend une liste séparée par des virgules : + ajoute un modèle, - en masque un et name=displayName le renomme. Un identifiant inconnu de NextChat est créé immédiatement : +claude-sonnet-5@OpenAI ajoute ainsi cet identifiant au sélecteur. Deux détails sont à reproduire exactement : commencez la liste par -all pour supprimer les identifiants OpenAI intégrés, afin d’éviter une erreur si quelqu’un en sélectionne un, et conservez le suffixe @OpenAI afin que l’identifiant soit acheminé via BASE_URL plutôt que vers un fournisseur portant le nom du modèle.
NextChat doit-il utiliser une clé API côté serveur ou laisser chaque utilisateur saisir la sienne ?
Les deux options sont prises en charge ; le choix détermine qui paie. Une clé dans OPENAI_API_KEY appartient au serveur : chaque visiteur qui passe le mot de passe CODE dépense sur ce solde unique — pratique pour une instance privée, coûteux pour un lien partagé. Si HIDE_USER_API_KEY n’est pas défini, un visiteur peut saisir sa propre clé dans Settings et payer lui-même ; le définir sur 1 supprime ce champ. Dans les deux cas, la clé n’est jamais transmise au navigateur, sauf si l’utilisateur l’y saisit.