API do Character AI: Substitua seu cliente em três linhas
Conecte seu chatbot a um LLM sem censura em minutos usando nossa API compatível com OpenAI. Este guia mostra a configuração, requisições básicas e streaming sem complicações de configuração.
https://api.characteraiapi.com/v1
Pré-requisitos
Antes de escrever código, você precisa de uma conta ativa em characteraiapi.com. Visite a página Obter chave de API e cadastre-se apenas com e-mail e senha. Nenhum cartão de crédito é necessário para começar, e novas contas recebem $0,50 em crédito de teste válido por 7 dias. Após o registro, sua chave de API é exibida imediatamente. Mantenha esta chave segura, pois ela autentica todas as requisições ao endpoint. Você também precisará de um SDK de linguagem suportado instalado em seu ambiente de desenvolvimento. O endpoint character ai api aceita parâmetros padrão do OpenAI, então qualquer cliente compatível com OpenAI pode funcionar com alterações mínimas.
Instalar o SDK
Para projetos Python, instale o pacote oficial do OpenAI usando pip. Esta biblioteca lida com a serialização JSON e as requisições HTTP automaticamente. Para aplicações Node.js, use npm para adicionar o pacote openai. Ambas as bibliotecas suportam as funcionalidades de streaming e chamada de ferramentas descritas mais adiante neste guia. Certifique-se de que a versão do seu SDK seja recente o suficiente para suportar Server-Sent Events (SSE) para streaming de tokens em tempo real. Se você estiver usando um cliente HTTP personalizado em vez de um SDK, você deve lidar manualmente com o payload JSON e a análise da stream SSE de acordo com a especificação da API OpenAI.
Autenticação
Toda requisição à API deve incluir sua chave de API no cabeçalho Authorization. Use o formato Bearer YOUR_API_KEY. A URL base para todas as requisições é https://api.characteraiapi.com/v1. Ao usar um SDK, defina a configuração base_url para este valor e forneça sua chave via parâmetro api_key. Se você perder sua chave ou suspeitar de um vazamento, você pode regenerá-la no painel; a chave antiga será revogada imediatamente. Apenas uma chave ativa é permitida por conta. Certifique-se de estar usando a URL base correta, pois requisições ao endpoint padrão do OpenAI falharão com erro 404 ou 401.
Completar Chat Básico
A funcionalidade principal é servida via endpoint /v1/chat/completions. Envie uma requisição POST com o nome do modelo uncensored e seu histórico de mensagens. O modelo responde com saída de texto sem aplicar filtros de conteúdo padrão para conteúdo adulto lícito. Abaixo está um exemplo curl demonstrando uma requisição simples de conclusão de texto.
curl https://api.characteraiapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'
Esta requisição retorna um objeto de conclusão contendo o texto gerado. Você pode ajustar parâmetros como temperature para controlar a aleatoriedade ou max_tokens para limitar o comprimento da saída. O modelo suporta uma janela de contexto de 100.000 tokens, permitindo que um histórico de conversa substancial ou documentos longos sejam processados em uma única requisição.
Respostas em Streaming
Para uma melhor experiência do usuário, ative o streaming definindo stream: true em sua requisição. A API retorna Server-Sent Events (SSE) contendo pedaços parciais de tokens conforme são gerados. Isso reduz a latência percebida para aplicações de chatbot. Use o parâmetro stream_options se você quiser receber as estatísticas finais de uso no último evento. O streaming é particularmente útil para roleplay de personagens em tempo real, onde exibir texto palavra por palavra aumenta a imersão. Certifique-se de que o código do seu cliente lide corretamente com o formato SSE para analisar cada chunk sequencialmente.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Limites de Requisição e Erros
A API impõe um limite de 300 requisições por minuto por chave. Se você exceder esse limite, receberá um erro 429 Too Many Requests. Os corpos das requisições são limitados a 8 MB. Erros comuns incluem 401 para uma chave inválida ou ausente, e 402 se o seu crédito pré-pago estiver esgotado. Você pode recarregar a partir de $10 usando criptomoedas (USDT ou USDC), com créditos bônus disponíveis para depósitos maiores. Ao contrário de alguns provedores, não há taxas ocultas ou bloqueios de assinatura; você paga apenas pelos tokens que consome. A precificação é transparente: $0,25 por 1M de tokens de entrada e $1,00 por 1M de tokens de saída. Certifique-se de que a lógica de tratamento de erros retente as requisições em caso de 429 com recuo exponencial.
from openai import OpenAI
client = OpenAI(base_url="https://api.characteraiapi.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.characteraiapi.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Ficha técnica da API
Uma tabela com cada limite, recurso e preço.
| Item | Valor |
|---|---|
| Formato | compatível com OpenAI: qualquer SDK da OpenAI funciona trocando a base URL e a chave |
| Endpoints | POST /v1/chat/completions · GET /v1/models |
| Autenticação | Authorization: Bearer YOUR_KEY |
| Base URL | https://api.characteraiapi.com/v1 |
| ID do modelo | uncensored |
| Modo JSON | response_format: {"type": "json_object"} |
| Saída máxima | até o restante da janela de 100.000 tokens; max_tokens opcional (sem limite separado) |
| Parâmetros | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| Janela de contexto | 100.000 tokens (entrada + saída) |
| Streaming | sim — server-sent events; o último bloco traz o uso de tokens |
| Chamada de funções | sim — tools, tool_choice; resposta com tool_calls, inclusive em streaming; resultados como role: tool |
| Tamanho | até 8 MB por requisição |
| Cabeçalhos | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Concorrência | 8 requisições ao mesmo tempo por chave |
| Limite de taxa | 300 requisições por minuto por chave |
| Validade | crédito pago não expira, sem assinatura |
| Bônus | +5% a partir de $50, +10% a partir de $100 |
| Recarga | USDT (TRC20) ou USDC (Base), qualquer valor inteiro de $10 a $500 |
| Preço | $0,25 por 1M tokens de entrada · $1,00 por 1M de saída |
| Cobrança | crédito pré-pago pelo uso real; erros e recusas são grátis |
| Teste grátis | $0,50 por 7 dias, sem cartão · Chave de teste: 2 requisições paralelas, 60 por minuto; limites totais (8 e 300) após a primeira recarga |
| Chaves | uma chave ativa por conta; uma nova substitui a anterior |
| Login | Google ou e-mail e senha |
| Conteúdo | conteúdo adulto permitido; conteúdo sexual com menores é recusado |
Códigos de erro
Erros chegam em JSON com um type fixo; requisições com falha ou recusadas não são cobradas.
| Código | Tipo | Significado |
|---|---|---|
400 | bad_request | JSON inválido, mensagens vazias, parâmetro errado ou contexto longo demais |
401 | missing_key · invalid_key · key_revoked | chave ausente, errada ou substituída |
402 | no_credit | sem crédito — recarregue e continue na hora |
403 | content_blocked | conteúdo sexual com menores — recusado, sem cobrança |
404 | not_found | endpoint desconhecido |
413 | request_too_large | corpo acima de 8 MB |
429 | rate_limited · concurrency | acima de 300/min ou 8 em paralelo — aguarde e tente de novo |
503 | upstream_busy | modelo ocupado — tente em alguns segundos |
Perguntas e respostas
Esta é a API oficial do Character.ai?
Não, este é um serviço independente hospedado em characteraiapi.com. Ele serve seu próprio modelo sem censura e não está afiliado à Character.AI ou a qualquer outro grande fornecedor de LLM.
O modelo suporta geração de imagens ou áudio?
Não. A API é apenas para texto. Ela aceita entrada de texto e retorna saída de texto. Não suporta embeddings, ajuste fino ou entradas/saídas multimodais.
Como é definido 'sem censura'?
O modelo não recusa tópicos adultos lícitos, fictícios ou controversos. Ele apenas bloqueia conteúdo sexual envolvendo menores, que é um limite rígido aplicado a todas as requisições.
Sua chave está a um formulário de distância
Crie uma conta, copie a chave, altere a URL base. Essa é toda a configuração.