Documentação

Documentação

NextChat

Uma instância do NextChat auto-hospedada acessa a Kunavo por meio das variáveis que já usa para OpenAI: OPENAI_API_KEY contém a chave, BASE_URL contém a origem e CUSTOM_MODELS contém os IDs. Sem fork nem patch.

Três variáveis de ambiente — OPENAI_API_KEY, BASE_URL (origem sem caminho) e CUSTOM_MODELS — colocam um NextChat auto-hospedado em Claude e GPT por meio de uma única chave.

Variáveis de ambiente — configurações do projeto na Vercel, docker -e ou .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 recebe a origem simples, sem /v1. A página da documentação não explica o sufixo em uma frase, mas sua própria linha esclarece: o padrão documentado é https://api.openai.com, não https://api.openai.com/v1 — o NextChat acrescenta o restante do caminho. Um /v1 adicionado manualmente se torna /v1/v1/chat/completions, que retorna um 404 e parece um endpoint com defeito, não um erro de digitação.
Quem controla a chave é uma decisão de implantação, não um padrão. Com OPENAI_API_KEY definido, o servidor chama a Kunavo com sua chave, e todos que passam por CODE gastam do seu saldo. HIDE_USER_API_KEY=1 está documentado como “Se você não quiser que os usuários insiram a própria chave de API, defina este valor como 1” — se deixar essa opção sem definição, cada visitante poderá inserir a própria chave em Settings, que é o formato desejado para uma instância compartilhada.
O prefixo -all e o sufixo @OpenAI não constam na tabela documentada, que abrange apenas +, - e name=displayName. Eles vêm do próprio código de coleta de modelos do NextChat, analisado no mesmo dia: -all limpa a lista integrada para que o seletor não ofereça IDs que a Kunavo rejeitará, e @OpenAI associa cada ID novo ao provedor OpenAI para que seja enviado a BASE_URL. Um ID sem esse sufixo recebe um provedor com o próprio nome e não percorre o caminho configurado. As maiúsculas e minúsculas devem ser mantidas exatamente.
A Kunavo não oferece modelos de conversão de texto em fala nem de fala em texto; portanto, os recursos de voz do NextChat não têm modelos correspondentes aqui. Deixe ENABLE_BALANCE_QUERY sem definição também: a verificação de saldo chama as rotas de cobrança do painel da própria OpenAI, que não fazem parte da interface compatível com OpenAI. Seu saldo fica em /app/billing.
Esta página foi lida na documentação do NextChat, não em uma execução de teste — o Kunavo não executou o NextChat neste endpoint, e uma página de configuração publicada não é um teste de compatibilidade. As conclusões de chat são a superfície documentada em ambos os lados; tudo além disso não foi testado aqui.
Ainda não tem uma chave? Crie uma conta na Kunavo, gere uma chave (ela começa com sk-kn-) e adicione crédito a partir de $10 — as chamadas são pagas com esse saldo, e chamadas malsucedidas não são cobradas. O painel então abre na configuração de NextChat.

Passo a passo

  1. Crie uma chave em /app/keys e copie-a — ela é exibida uma única vez.
  2. Defina OPENAI_API_KEY como essa chave e BASE_URL como https://api.kunavo.com. No Vercel, essas são variáveis de ambiente do projeto; no Docker, são sinalizadores -e; localmente, elas vão em .env.local.
  3. Defina CODE como uma senha de acesso, ou a implantação ficará aberta a quem encontrar a URL, enquanto sua chave será quem pagará a conta.
  4. Liste os ids desejados em CUSTOM_MODELS, cada um com o sufixo @OpenAI, começando com -all para remover os valores integrados.
  5. Faça uma nova implantação — as variáveis de ambiente são lidas pelo servidor, então um projeto Vercel precisa de uma nova implantação e um contêiner precisa ser reiniciado. Editar a variável, por si só, não altera nada em uma instância em execução.
  6. Abra o app, escolha um dos seus ids no seletor de modelos e envie uma mensagem. Se a resposta chegar, as três variáveis estão de acordo.

Verificado em Página de variáveis de ambiente do NextChat em 21 de setembro de 2026. As configurações de terceiros podem mudar; se o nome de um campo aqui já não corresponder ao que você vê, aquela página é a autoridade, não esta.

Verifique antes de depurar o cliente

Uma solicitação determina se a falha está no endpoint, na chave ou no arquivo de configuração. Se isto retornar JSON, a mesma URL base e a mesma chave funcionarão em 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-..."

Qual ID de modelo inserir no campo

Todo modelo de texto pode ser acessado como um ID de modelo — a lista atual está em GET /v1/models, e o catálogo com preços está na página de modelos. As tarifas são em USD por 1 milhão de tokens, entrada / saída.

ID do modeloEntrada / saída da KunavoOnde se encaixa em NextChat
claude-sonnet-5$1.40 / $7.00a conversa do dia a dia — conversas longas sem precisar ficar de olho no saldo
claude-opus-5$3.50 / $17.50a única pergunta da semana que merece o modelo mais caro
claude-haiku-4-5$0.70 / $3.50resumos, renomeação de conversas e as trocas curtas que predominam em uma instância compartilhada
gpt-5-6-sol$2.00 / $12.00uma segunda família no mesmo seletor, usando a mesma chave
gpt-5-6-terra$0.70 / $4.20documentos longos colados, nos quais a janela de contexto é o fator decisivo
A cobrança é por token, usando um saldo pré-pago e sem tarifa mensal — consulte billing. Em contextos repetidos — que representam a maior parte do que um editor ou cliente de chat envia — o cache de prompt altera a conta mais do que a escolha do modelo.

Perguntas frequentes

Como direciono o NextChat para um endpoint de API personalizado?

Defina BASE_URL como a origem do endpoint e OPENAI_API_KEY como a chave emitida por ele, ambas como variáveis de ambiente na implantação auto-hospedada. A própria página de variáveis de ambiente do NextChat documenta BASE_URL como "Substituir a URL base das solicitações à API OpenAI", então não é preciso alterar o código: o app continua usando o formato de comunicação da OpenAI e envia as solicitações para outro lugar. Depois, faça uma nova implantação — os valores são lidos no servidor, então uma instância em execução não os detecta.

O BASE_URL do NextChat precisa terminar com /v1?

Não. O NextChat acrescenta o segmento de versão e a própria rota; por isso, o valor padrão documentado para BASE_URL é a origem sem caminho https://api.openai.com, e não https://api.openai.com/v1. Escreva https://api.kunavo.com e nada mais. Se você mesmo adicionar o sufixo, o caminho ficará duplicado e haverá um erro 404, que pode ser facilmente interpretado como se o endpoint estivesse indisponível.

Como adiciono um modelo personalizado à lista de modelos do NextChat?

CUSTOM_MODELS aceita uma lista separada por vírgulas, na qual + adiciona um modelo, - oculta um modelo e name=displayName altera seu nome de exibição. Um id desconhecido para o NextChat é criado na hora, então +claude-sonnet-5@OpenAI adiciona esse id ao seletor. Dois detalhes devem ser copiados exatamente: comece a lista com -all para que os ids integrados da OpenAI desapareçam, em vez de causarem uma falha quando alguém os selecionar, e mantenha o sufixo @OpenAI para que o id seja encaminhado por BASE_URL, e não para um provedor com o nome do modelo.

O NextChat deve usar uma chave de API do servidor ou permitir que cada usuário cole a própria chave?

As duas opções são compatíveis; a escolha depende de quem paga. Uma chave em OPENAI_API_KEY pertence ao servidor, então cada visitante, após passar pela senha CODE, consome desse mesmo saldo — uma opção razoável para uma instância privada, mas cara para um link compartilhado. Se HIDE_USER_API_KEY não estiver definida, o visitante poderá inserir a própria chave em Settings e pagar pelo próprio uso; se você defini-la como 1, esse campo será removido. Em qualquer caso, a chave não chega ao navegador, a menos que o próprio usuário a digite lá.