Documentación

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.

Variables de entorno — configuración del proyecto de Vercel, docker -e o .env.local
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@OpenAI
BASE_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.
Quién tiene la clave es una decisión de implementación, no un valor predeterminado. Si se configura 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.
El prefijo -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.
Kunavo no ofrece modelos de texto a voz ni de voz a texto, así que las funciones de voz de NextChat no tienen aquí ningún modelo con el que funcionar. Deja también 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.
Esta página se elaboró a partir de la documentación de NextChat, no de una prueba en ejecución: Kunavo no ha ejecutado NextChat contra este endpoint, y una página de configuración publicada no es una prueba de compatibilidad. Las completaciones de chat son la interfaz documentada en ambos lados; todo lo demás sigue sin probarse aquí.
¿Aún no tienes una clave? Crea una cuenta de Kunavo, genera una clave (empieza por 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

  1. Cree una clave en /app/keys y cópiela: se muestra una sola vez.
  2. Asigna OPENAI_API_KEY a esa clave y BASE_URL a https://api.kunavo.com. En Vercel, son variables de entorno del proyecto; en Docker, son opciones -e; en local, van en .env.local.
  3. Asigna CODE a 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.
  4. Enumera en CUSTOM_MODELS los ids que quieras, cada uno con el sufijo @OpenAI, y empieza con -all para quitar los valores integrados.
  5. 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.
  6. 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 modeloEntrada / salida de KunavoDónde encaja en NextChat
claude-sonnet-5$1.40 / $7.00el hilo de todos los días: conversaciones largas sin tener que vigilar el saldo
claude-opus-5$3.50 / $17.50la única pregunta semanal que merece el modelo más caro
claude-haiku-4-5$0.70 / $3.50resumir, cambiar el nombre de los chats y esos breves intercambios que predominan en una instancia compartida
gpt-5-6-sol$2.00 / $12.00una segunda familia en el mismo selector, con la misma clave
gpt-5-6-terra$0.70 / $4.20documentos largos pegados, donde la ventana de contexto es la característica decisiva
La facturación es por token desde un saldo prepago, sin cuota mensual; consulta facturación. Con contexto repetido —que constituye la mayor parte de lo que envía un editor o cliente de chat—, la caché de indicaciones cambia más la factura que la elección del modelo.

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í.