Apps de roleplay (RisuAI, Agnai, Chub, KoboldAI Lite, Janitor AI)
Conecte os modelos de texto da SpicyAPI ao RisuAI, Agnai, Chub, KoboldAI Lite e Janitor AI. Os campos exatos de cada app, quais modelos servem para roleplay, como lidar com modelos de raciocínio e como limitar o gasto.
Apps de roleplay permitem conversar com personagens, e a maioria deixa você levar o seu próprio modelo de IA por uma conexão compatível com OpenAI. A SpicyAPI fala esse protocolo, então você pode apontar esses apps para ela, escolher qualquer modelo de texto da SpicyAPI e pagar com o seu saldo.
Esta página cobre cinco apps web e desktop: RisuAI, Agnai, Chub, KoboldAI Lite e Janitor AI. Para o SillyTavern, veja SillyTavern. Os apps são feitos por terceiros e mudam as telas; os nomes de campos abaixo vêm do código-fonte publicado e das páginas de ajuda de cada app, e cada seção diz o que foi conferido e o que não foi.
Versão resumida
- Crie uma chave de API separada para o app em spicyapi.ai/console/keys e defina um limite de gasto diário.
- No app, escolha a conexão compatível com OpenAI ou "reverse proxy". Informe
https://api.spicyapi.ai/v1como endereço (o Janitor AI quer o mais longo,https://api.spicyapi.ai/v1/chat/completions), cole a sua chave e defina o modelo como um id de chat terminado em/chat, copiado do catálogo ao vivo. - Defina Max tokens como pelo menos 1.000 para modelos de raciocínio e envie uma mensagem.
O que você precisa
- Uma conta SpicyAPI com saldo. Veja Prepare sua conta e Cobrança.
- Uma chave de API que começa com
sk-spicy-. Veja Autenticação. - Um id de modelo. Os modelos de texto se chamam
<maker>/<model>/chat, escritos aqui comoMODEL_ID_FROM_CATALOG.MODEL_ID_FROM_CATALOGrepresenta um id de modelo de chat que você copia do catálogo ao vivo (GET /api/v1/models); nunca digite o marcador em si. O id precisa ser digitado exatamente, inclusive o/chatno final. A lista completa está em spicyapi.ai/models; com a sua chave,GET https://api.spicyapi.ai/v1/modelstambém a retorna, e os ids de chat são os que terminam em/chat. Veja Catálogo de modelos e schemas.
Qual app usa qual campo
| App | Endereço a informar | Onde vai a chave | Modelo | Quem envia a requisição |
|---|---|---|---|---|
| RisuAI | https://api.spicyapi.ai/v1 (o completo .../v1/chat/completions também funciona) | Key/Password | Request Model, digitado | O servidor do RisuAI no site, o seu computador no app desktop |
| Agnai | https://api.spicyapi.ai/v1 (não o caminho completo) | API Key | Escolhido em um preset, a partir de uma lista obtida da SpicyAPI | O servidor do Agnai |
| Chub | https://api.spicyapi.ai/v1 (não o caminho completo) | Reverse Proxy Key | Lista suspensa obtida da SpicyAPI | O seu navegador |
| KoboldAI Lite | https://api.spicyapi.ai/v1 | Campo API key da conexão OpenAI | Lista suspensa obtida da SpicyAPI | O seu navegador |
| Janitor AI | https://api.spicyapi.ai/v1/chat/completions (o caminho completo) | API Key | Model Name, digitado | Não verificado, veja a seção do Janitor AI |
A diferença entre o endereço curto e o completo importa. Apps que adicionam /chat/completions sozinhos quebram se você o incluir, e o Janitor AI precisa dele escrito por inteiro.
Escolha um modelo
Roleplay pede um modelo que se mantenha no personagem, escreva respostas longas e não recuse pedidos comuns de história. O ranking de roleplay e LLMs classifica os modelos de texto da SpicyAPI nesses pontos e mostra os preços atuais. Consulte-o em vez de confiar em uma lista escrita aqui, porque modelos e classificações mudam.
Cada página de modelo também mostra um rótulo de política de conteúdo (por exemplo, sem restrições, intermediário ou filtrado). Esse rótulo indica com que liberdade o modelo responde; escolha um modelo cujo rótulo combine com as histórias que você quer escrever.
O DeepSeek V4.1 Flash é um bom primeiro modelo para testar: está perto do topo do ranking e é um dos mais baratos. Copie o id dele (termina em /chat) do catálogo ao vivo em spicyapi.ai/models em vez de digitá-lo de memória.
Dois limites que vale conhecer:
- Alguns modelos aceitam no máximo 256 mensagens por requisição. Em um chat muito longo, um app que envia o histórico inteiro pode passar disso. Procure no app a configuração de quanto histórico enviar, ou o tamanho do contexto, e reduza. A página do modelo lista os limites dele.
- Entrada de imagem só funciona com modelos que leem imagens. Um chat de roleplay comum não precisa disso.
Configurações de amostragem
Os apps de roleplay enviam um monte de configurações de amostragem a cada mensagem: temperature, top-p, top-k, min-p, top-a, frequency, presence e repetition penalty. Os modelos diferem quanto às que aceitam.
A SpicyAPI ignora as que o modelo não usa em vez de recusar a mensagem. Ela também ignora n: 1, uma lista de stop vazia e stop strings em um modelo que não tem nenhuma. Quando ignora algo, a resposta traz um cabeçalho X-Spicy-Ignored-Params com os nomes das configurações descartadas, para você ver exatamente o que não teve efeito.
Quando um modelo aceita uma configuração, mas não o valor que você enviou, a SpicyAPI usa o valor aceito mais próximo: uma temperature acima do máximo do modelo vira esse máximo, e uma lista de stop strings maior do que o modelo permite mantém as primeiras entradas. Essas mudanças aparecem em um cabeçalho X-Spicy-Adjusted-Params, por exemplo temperature=1, stop=kept 1 of 3. Assim você pode deixar seus presets habituais como estão.
Campos que não são de amostragem são diferentes: se um app enviar algo que o modelo não conhece de forma alguma, a SpicyAPI ainda responde com um erro 400 que cita o campo.
Modelos de raciocínio e Max tokens
Alguns modelos pensam antes de responder. O raciocínio consome tokens, e esses tokens contam para Max tokens (também chamado de Max output, Response length ou max_new_tokens, conforme o app).
- Defina Max tokens com folga. Se for muito pequeno, digamos 20 ou 200, um modelo de raciocínio pode gastar todo o orçamento pensando e não devolver texto. Você recebe um erro
upstream_faileddizendo que o orçamento de saída foi gasto com raciocínio. Comece com 1.000 ou mais e aumente se as respostas forem cortadas. - Pensar custa dinheiro e tempo. Você paga pelos tokens de raciocínio como por qualquer outra saída, e a primeira palavra chega mais tarde. Alguns modelos aceitam a instrução de pensar menos por meio de
reasoning_effort. Os níveis variam por modelo; um nível que o modelo não oferece é trocado pelo mais próximo que ele oferece, e configurações de raciocínio no estilo OpenRouter (o Agnai envia essas) são traduzidas parareasoning_effort. Apps que têm uma caixa Additional Parameters ou de parâmetros personalizados podem enviá-lo, por exemploreasoning_effortcom um valor menor; a maioria dos apps abaixo não o envia sozinha. - Alguns apps exibem o raciocínio no chat. O Janitor AI o envolve em tags
<think>. O Chub não o mostra de jeito nenhum.
Mantenha o gasto sob controle
Chats de roleplay são longos, e os apps reenviam a conversa inteira a cada mensagem, então o custo por mensagem cresce junto com o chat.
Para cada app, crie uma chave própria no console. Abra Advanced ao criá-la e defina um limite de gasto diário (e um mensal, se quiser). Se o app se comportar mal, entrar em loop ou a chave vazar, o prejuízo para no limite, e você pode revogar só aquela chave sem mexer em mais nada. Uma chave também pode ser restrita a modelos específicos. Veja Autenticação.
Esses apps guardam sua chave nos servidores deles ou no seu navegador. O site do RisuAI, o Agnai e o Janitor AI enviam a sua chave e o seu chat pelos servidores deles; o Chub e o KoboldAI Lite enviam as requisições direto do seu navegador. Uma chave separada e com limite é a precaução certa em todos os casos.
RisuAI
O RisuAI roda em risuai.xyz, como app desktop ou no seu próprio servidor. Conferido no código-fonte do RisuAI (versão 2026.8.250).
Escolha o modelo Custom API
Nas configurações do bot, abra a lista de modelos e escolha Custom API.
Preencha os três campos
- URL (exibido como "Reverse Proxy"):
https://api.spicyapi.ai/v1. O RisuAI adiciona/chat/completionssozinho quando o endereço termina em/v1, e o completohttps://api.spicyapi.ai/v1/chat/completionstambém funciona. - Key/Password: a sua chave
sk-spicy-. Ela é enviada como bearer token. - Request Model: o id do modelo,
MODEL_ID_FROM_CATALOG. O RisuAI não tem lista de modelos para endereços personalizados, então digite-o.
Defina a lista Format como OpenAI Compatible.
Defina Max tokens e envie uma mensagem
Aumente o tamanho máximo da resposta se você escolheu um modelo de raciocínio (veja acima) e converse.
De onde vêm as requisições. No risuai.xyz, o RisuAI normalmente repassa as requisições pelo próprio servidor, então a sua chave e o seu chat passam por ele. O app desktop e um servidor próprio enviam as requisições direto da sua máquina. Só a opção "Force Plain Fetch" do site, escondida entre as configurações não recomendadas, envia as requisições pelo navegador; a SpicyAPI aceita essas também.
Amostragem. As configurações padrão da Custom API do RisuAI enviam frequency, presence e repetition penalty, min-p e top-a. A SpicyAPI ignora as que o modelo não usa, então os padrões funcionam.
Agnai
O Agnai fica em agnai.chat. Conferido no código-fonte do Agnai (branch dev, 06/10/2026). A SpicyAPI não está na lista de provedores nativos do Agnai, então você a adiciona como uma conexão personalizada compatível com OpenAI.
Adicione um provedor
Em Settings, abra a página de gerenciamento de provedores e adicione um provedor do tipo OpenAI Compat (ou Remotely Hosted e depois Other (Generic OpenAI)). Dê qualquer nome.
Preencha o endereço e a chave
- URL:
https://api.spicyapi.ai/v1(ouhttps://api.spicyapi.ai; o Agnai adiciona/v1se faltar). Não informe o caminho completo.../chat/completions, ou o Agnai o duplica. - API Key: a sua chave
sk-spicy-.
Escolha o modelo em um preset
No preset com o qual você conversa, escolha o modelo na lista. O Agnai preenche a lista a partir da lista de modelos da SpicyAPI. Escolha um id terminado em /chat.
De onde vêm as requisições. Com um provedor adicionado assim, quem envia a requisição é o servidor do Agnai, então a sua chave fica guardada no Agnai.
Amostragem. O Agnai sempre envia temperature e top-p, que alguns modelos não aceitam. A SpicyAPI os ignora para esses modelos, então modelos como DeepSeek V4 e Kimi K3 funcionam.
Não recomendado: modos diretos pelo navegador. O Agnai também tem um tipo de conexão Self-Host e uma opção Use Local Requests em presets antigos, que fazem o seu navegador chamar o endereço diretamente. Pelo código-fonte, esses modos adicionam um campo chamado think que a SpicyAPI não aceita, e a SpicyAPI responde 400 para campos que não conhece. Isso não foi testado com a SpicyAPI. Se você receber um 400 aí, volte para a configuração de provedor acima.
Chub
O Chub (chub.ai) envia as requisições direto do seu navegador para o endereço que você informa. Conferido no código de front-end publicado do Chub (build de 28/06/2026); as telas do Chub podem ter mudado desde então. A conexão pelo navegador funciona porque a SpicyAPI permite requisições vindas de páginas web.
Adicione o reverse proxy em Secrets
Abra Secrets, encontre o bloco OpenAI e escolha Reverse Proxy em vez de My Own API Key.
Preencha o endereço e a chave
- Open AI Reverse Proxy:
https://api.spicyapi.ai/v1. O Chub adiciona/chat/completionssozinho, então não o inclua. - Reverse Proxy Key: a sua chave
sk-spicy-.
Pressione Check Proxy. Uma verificação bem-sucedida também carrega a lista de modelos.
Selecione OpenAI / Proxy e um modelo
Em Configuration > Prompt Structure, defina a API como OpenAI / Proxy e escolha um modelo na lista (um id terminado em /chat).
O Chub avisa na própria página de configurações que o seu IP e o histórico do chat podem ser registrados quando você usa um reverse proxy. Esse aviso é do Chub, não da SpicyAPI.
Coisas que o código-fonte mostra e que podem surpreender:
- O Chub para de ler uma resposta em streaming depois de 120 segundos. Um modelo de raciocínio que pensa por muito tempo pode ser cortado; reduza o esforço de raciocínio ou escolha um modelo que responda mais rápido.
- O Chub não exibe o raciocínio do modelo, apenas a resposta.
KoboldAI Lite
O KoboldAI Lite é uma única página web em lite.koboldai.net. Conferido no index.html publicado. Ele chama o endereço diretamente do seu navegador, o que funciona porque a SpicyAPI permite requisições vindas de páginas web.
Escolha a conexão OpenAI
Abra Settings e escolha a conexão OpenAI API (endpoint personalizado).
Informe o endereço e a chave
Coloque https://api.spicyapi.ai/v1 como endereço e a sua chave sk-spicy- no campo de chave. O app remove um /chat/completions no final se você colar um.
Busque a lista de modelos
Use o botão de buscar modelos do app, escolha um id terminado em /chat e defina o tamanho da saída nas configurações de geração.
Deixe "CORS Proxy" desativado. O KoboldAI Lite tem uma opção para passar as requisições por um proxy mantido pelo autor dele. Você não precisa disso para a SpicyAPI, e ativá-la envia a sua chave pelo servidor de outra pessoa.
Amostragem. A configuração de repetição dele é enviada à API como presence penalty. A SpicyAPI a ignora nos modelos que não a usam.
Janitor AI
Não verificado
Não conseguimos confirmar que o Janitor AI funciona com a SpicyAPI. O Janitor AI é de código fechado e é preciso uma conta para testá-lo, então ninguém fez um chat de verdade. O que segue é como as configurações de proxy dele são descritas na central de ajuda do Janitor e no código publicado da página. Trate como algo a experimentar, não como uma promessa.
O recurso de "proxy" do Janitor AI envia o seu chat para um endereço que você escolhe. Segundo a central de ajuda do Janitor, os campos ficam no ícone de engrenagem da página de chat, em API Settings e depois Add Configuration.
Adicione uma configuração
Preencha:
- Config Name: qualquer nome, como
SpicyAPI. - Model Name: o id do modelo, digitado:
MODEL_ID_FROM_CATALOG. - Proxy URL: o endereço completo,
https://api.spicyapi.ai/v1/chat/completions. O Janitor tem um botão "Add /chat/completions" que faz isso por você depois que você informahttps://api.spicyapi.ai/v1. - API Key: a sua chave
sk-spicy-.
Salve e envie uma mensagem
A central de ajuda do Janitor descreve o botão Check Key/Model dele como pouco confiável, então teste com uma mensagem de verdade.
Se o Janitor mostrar um erro de rede ou de conexão, como "A network error occurred", a página do Janitor provavelmente está bloqueando requisições para endereços que não sejam os da OpenAI. A página web do Janitor tem uma política de segurança que permite requisições diretas a apenas um endereço de IA de terceiros, o da OpenAI. Quando o Janitor envia a requisição a partir do seu navegador, o navegador a recusa antes que a SpicyAPI veja qualquer coisa, e a SpicyAPI não pode mudar isso. Se a sua chave não mostra uso no console enquanto esse erro aparece, essa é a causa.
Se isso acontecer, use o SillyTavern ou o RisuAI.
Outros fatos da central de ajuda do Janitor e do código da página:
- Alguns bots do Janitor têm os proxies desativados pelos autores, então um bot pode recusar conversar por um proxy, não importa o que você informe.
- O Janitor mostra o raciocínio do modelo envolvido em tags
<think>. Use um Max tokens maior ou um esforço de raciocínio menor para mantê-lo curto. - O Janitor limita o tamanho de cada mensagem que você digita.
Solução de problemas
| O que você vê | O que fazer |
|---|---|
401 ou "invalid API key" | Copie a chave de novo do console. Uma chave revogada para de funcionar na hora, e precisa ser a chave sk-spicy-, não a senha da conta. |
402 ou "insufficient balance" | Adicione fundos no console ou confira se o limite de gasto diário da chave foi atingido. Veja Cobrança. |
404 ou "model not found" | O id do modelo está errado. Ele deve terminar em /chat e ser escrito como em https://api.spicyapi.ai/v1/models. |
404 no próprio endereço, com um caminho duplicado como /chat/completions/chat/completions | O app adiciona o caminho sozinho. Use https://api.spicyapi.ai/v1 (RisuAI, Agnai, Chub, KoboldAI Lite). Só o Janitor AI precisa do caminho completo. |
400 que cita um campo | O app enviou algo que o modelo não aceita e que não é uma configuração de amostragem. Remova ou desative o campo citado. |
400 sobre o número de mensagens | O histórico do chat é maior que o limite de mensagens do modelo. Reduza o histórico ou o tamanho do contexto no app. |
upstream_failed, "the output budget was spent on reasoning" | Aumente Max tokens ou reduza o esforço de raciocínio do modelo. Veja Modelos de raciocínio e Max tokens. |
| A resposta para no meio da frase | Max tokens está baixo demais ou (no Chub) o limite de 120 segundos foi atingido. |
| "Network error" ou "Failed to fetch" no app, e nenhuma requisição nos logs do seu console | A requisição nunca chegou à SpicyAPI. No Janitor AI, é a página bloqueando o endereço; nos outros, confira se o endereço tem erros de digitação e se o site está acessível. |
429 | Requisições demais ao mesmo tempo. Espere alguns segundos; apps compartilhados podem enviar requisições de muitos usuários a partir de um só endereço. |
Os códigos de erro estão explicados em Erros. Todo erro termina com um request_id; informe-o ao suporte para que a requisição seja localizada com exatidão. Suas requisições também aparecem em Logs no console, a forma mais rápida de saber se uma requisição chegou à SpicyAPI.
SillyTavern
Converse com os modelos da SpicyAPI no SillyTavern pela fonte Custom (OpenAI-compatible) e adicione a extensão gratuita da SpicyAPI para imagens, vídeos e um botão Animate, com cada execução cotada antes.
Bot para Telegram e Discord
Rode o seu próprio bot privado que cria imagens e vídeos, anima imagens e conversa com personagens que você define, pago com o seu saldo da SpicyAPI e com limites de gasto verificados antes de cada cobrança.

