Documentación
NextChat
Una instalación de NextChat autohospedada se conecta a Kunavo mediante las variables que ya tiene para OpenAI: OPENAI_API_KEY contiene la clave, BASE_URL contiene el origen y CUSTOM_MODELS contiene los ID. No hace falta ningún fork ni parche.
Tres variables de entorno — OPENAI_API_KEY, BASE_URL (origen sin más) y CUSTOM_MODELS — colocan un NextChat autoalojado sobre Claude y GPT mediante una sola clave.
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 recibe el origen sin ruta, sin /v1. La página de documentación no lo indica expresamente, pero una de sus filas lo aclara: el valor predeterminado documentado es https://api.openai.com, no https://api.openai.com/v1; NextChat añade el resto de la ruta. Si añades un /v1 manualmente, se convierte en /v1/v1/chat/completions, que devuelve un 404 y parece un endpoint defectuoso, no un error tipográfico.OPENAI_API_KEY, el servidor llama a Kunavo con tu clave, y todos los que superen CODE gastan de tu saldo. HIDE_USER_API_KEY=1 se documenta así: «Si no quieres que los usuarios introduzcan su propia clave API, asigna a este valor 1». Si lo dejas sin configurar, cada visitante puede introducir su propia clave en Settings, que es la opción adecuada para una instancia compartida.-all y el sufijo @OpenAI no aparecen en la tabla documentada, que solo incluye +, - y name=displayName. Se obtuvieron del código de recopilación de modelos del propio NextChat, consultado ese mismo día: -all elimina la lista integrada para que el selector no ofrezca ID que Kunavo vaya a rechazar, y @OpenAI fija cada ID nuevo al proveedor OpenAI para que se envíe a BASE_URL. Si escribes un ID sin ese sufijo, se le asigna un proveedor con su propio nombre y no se sigue la ruta que configuraste. Se debe respetar literalmente el uso de mayúsculas y minúsculas.ENABLE_BALANCE_QUERY sin configurar: la comprobación de saldo llama a las rutas de facturación del panel de OpenAI, que no forman parte de la interfaz compatible con OpenAI. Tu saldo está en /app/billing.sk-kn-) y añade crédito desde $10; las llamadas se pagan con ese saldo y las llamadas fallidas no se facturan. El panel se abre entonces en la configuración de NextChat.Paso a paso
- Cree una clave en
/app/keysy cópiela: se muestra una sola vez. - Asigna
OPENAI_API_KEYa esa clave yBASE_URLahttps://api.kunavo.com. En Vercel, son variables de entorno del proyecto; en Docker, son opciones-e; en local, van en.env.local. - Asigna
CODEa una contraseña de acceso; de lo contrario, cualquiera que encuentre la URL podrá usar el servicio, mientras que el coste se cargará a tu clave. - Enumera en
CUSTOM_MODELSlos ids que quieras, cada uno con el sufijo@OpenAI, y empieza con-allpara quitar los valores integrados. - Vuelve a implementar: el servidor lee las variables de entorno, así que un proyecto de Vercel necesita una implementación nueva y un contenedor necesita reiniciarse. Editar la variable por sí solo no cambia nada en una instancia en ejecución.
- Abre la aplicación, selecciona uno de tus ids en el selector de modelos y envía un mensaje. Si recibes una respuesta, las tres variables coinciden.
Comprobado con Página de variables de entorno de NextChat el 21 de septiembre de 2026. La configuración de terceros puede cambiar; si el nombre de un campo ya no coincide con lo que ves, esa página es la autoridad, no esta.
Verifica antes de depurar el cliente
Una solicitud determina si el fallo está en el endpoint, la clave o el archivo de configuración. Si devuelve JSON, la misma URL base y la misma clave funcionan en 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-..."Qué ID de modelo introducir en el campo
Todos los modelos de texto están disponibles mediante un ID de modelo; la lista activa está en GET /v1/models, y el catálogo con precios está en la página de modelos. Las tarifas son USD por 1M de tokens, entrada / salida.
| ID de modelo | Entrada / salida de Kunavo | Dónde encaja en NextChat |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | el hilo de todos los días: conversaciones largas sin tener que vigilar el saldo |
claude-opus-5 | $3.50 / $17.50 | la única pregunta semanal que merece el modelo más caro |
claude-haiku-4-5 | $0.70 / $3.50 | resumir, cambiar el nombre de los chats y esos breves intercambios que predominan en una instancia compartida |
gpt-5-6-sol | $2.00 / $12.00 | una segunda familia en el mismo selector, con la misma clave |
gpt-5-6-terra | $0.70 / $4.20 | documentos largos pegados, donde la ventana de contexto es la característica decisiva |
Preguntas frecuentes
¿Cómo puedo configurar NextChat para que use un endpoint de API personalizado?
Asigna BASE_URL al origen del endpoint y OPENAI_API_KEY a la clave que te proporcionó, ambos como variables de entorno en la implementación autohospedada. La propia página de variables de entorno de NextChat documenta BASE_URL como «Anular la URL base de las solicitudes a la API de OpenAI», así que no hace falta modificar nada: la aplicación sigue usando el formato de OpenAI y envía las solicitudes a otro destino. Después, vuelve a implementarla: los valores se leen en el servidor, así que una instancia en ejecución no los recoge.
¿BASE_URL de NextChat debe terminar en /v1?
No. NextChat añade el segmento de versión y la ruta, por eso el valor predeterminado documentado de BASE_URL es el origen sin más https://api.openai.com, y no https://api.openai.com/v1. Escribe https://api.kunavo.com y nada más. Si añades tú el sufijo, se duplica la ruta y se produce un 404, que es fácil de confundir con una caída del endpoint.
¿Cómo añado un modelo personalizado a la lista de modelos de NextChat?
CUSTOM_MODELS acepta una lista separada por comas: + añade un modelo, - oculta uno y name=displayName le cambia el nombre. Si NextChat no reconoce un id, lo crea en el momento; por eso, +claude-sonnet-5@OpenAI añade ese id al selector. Conviene copiar exactamente estos dos detalles: empieza la lista con -all para que desaparezcan los ids integrados de OpenAI, en lugar de que se produzca un error si alguien selecciona uno, y conserva el sufijo @OpenAI para que el id se enrute a través de BASE_URL y no a un proveedor que lleve el nombre del modelo.
¿NextChat debe usar una clave de API del servidor o permitir que cada usuario pegue la suya?
Se admiten ambas opciones; la decisión depende de quién paga. Una clave en OPENAI_API_KEY pertenece al servidor, así que cada visitante que supere la contraseña CODE consume de ese único saldo: tiene sentido para una instancia privada, pero puede salir caro en un enlace compartido. Si dejas sin definir HIDE_USER_API_KEY, el visitante puede introducir su propia clave en Settings y pagar sus gastos; si la estableces en 1, ese campo desaparece. En cualquier caso, la clave no llega al navegador salvo que el usuario la escriba allí.