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.
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 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.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.-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.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.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
- Crie uma chave em
/app/keyse copie-a — ela é exibida uma única vez. - Defina
OPENAI_API_KEYcomo essa chave eBASE_URLcomohttps://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. - Defina
CODEcomo uma senha de acesso, ou a implantação ficará aberta a quem encontrar a URL, enquanto sua chave será quem pagará a conta. - Liste os ids desejados em
CUSTOM_MODELS, cada um com o sufixo@OpenAI, começando com-allpara remover os valores integrados. - 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.
- 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 modelo | Entrada / saída da Kunavo | Onde se encaixa em NextChat |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | a conversa do dia a dia — conversas longas sem precisar ficar de olho no saldo |
claude-opus-5 | $3.50 / $17.50 | a única pergunta da semana que merece o modelo mais caro |
claude-haiku-4-5 | $0.70 / $3.50 | resumos, renomeação de conversas e as trocas curtas que predominam em uma instância compartilhada |
gpt-5-6-sol | $2.00 / $12.00 | uma segunda família no mesmo seletor, usando a mesma chave |
gpt-5-6-terra | $0.70 / $4.20 | documentos longos colados, nos quais a janela de contexto é o fator decisivo |
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á.