Início rápido para usuários do OpenRouter NSFW
Integre nossa API LLM sem censura ao seu código existente atualizando a base URL e a chave de API. Este guia cobre os endpoints padrão compatíveis com OpenAI, streaming e tratamento de restrições para uso direto do desenvolvedor.
URL Base e Autenticação
Substitua o base URL do seu provedor atual por https://api.openrouternsfw.com/v1. A autenticação usa o cabeçalho padrão Authorization: Bearer <key>. Você obtém sua chave imediatamente após entrar via Google ou e-mail na página Obter chave de API. Não é necessário número de telefone, e a chave é exibida apenas uma vez, então copie-a antes de sair da página.
Nosso serviço é uma API independente, não um revendedor de modelos de outros fornecedores. O identificador do modelo que você envia nas requisições é uncensored, que é executado em nossos próprios servidores. É ajustado para responder sem recusas de conteúdo para uso adulto lícito, mas não é GPT, Claude ou qualquer outro modelo de fornecedor nomeado.
Certifique-se de que a biblioteca do seu cliente esteja configurada para usar esta nova base URL. Todas as requisições devem incluir uma chave de API válida no cabeçalho. Se a chave estiver ausente ou inválida, o servidor retornará um erro 401. Se você não tiver crédito pré-pago, receberá um erro 402. Estes são códigos de status HTTP padrão indicando problemas de autenticação ou pagamento, não erros do servidor.
Endpoint de Conclusões de Chat
A funcionalidade principal é fornecida via endpoint POST /v1/chat/completions. Este endpoint aceita um corpo JSON contendo o nome do modelo, o array de mensagens e parâmetros opcionais. Retorna um objeto JSON com o texto gerado, estatísticas de uso de tokens e motivo do término. Esta estrutura é compatível com os SDKs oficiais da OpenAI e a maioria das bibliotecas cliente compatíveis com OpenAI.
Você não precisa escrever clientes HTTP personalizados se preferir usar um SDK. No entanto, você deve atualizar a configuração para apontar para nossa base URL. O exemplo a seguir demonstra uma solicitação de conclusão padrão usando cURL. Esta solicitação envia um prompt para o modelo sem censura e espera uma resposta de texto.
curl https://api.openrouternsfw.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."}]
}'Lembre-se de que esta API serve apenas texto. Não há endpoints para embeddings, geração de imagens, áudio ou vídeo. Se seu aplicativo requer entradas ou saídas multimodais, você precisará lidar com isso separadamente. Nosso serviço foca exclusivamente na geração de texto de alta qualidade com um modelo sem censura.
Integração com SDK Python
Usar o SDK Python simplifica o processo de integração. Inicialize o cliente com a base URL correta e sua chave de API. A biblioteca cuida das requisições HTTP e análise JSON para você. Você pode especificar o ID do modelo como uncensored para garantir que está usando nosso modelo específico.
from openai import OpenAI
client = OpenAI(base_url="https://api.openrouternsfw.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)Este trecho de código mostra como enviar uma mensagem e recuperar a resposta. O cliente lida automaticamente com a conexão e o relatório de erros. Se o servidor retornar um erro, o SDK levantará uma exceção. Você deve tratar essas exceções na lógica do seu aplicativo para fornecer uma melhor experiência ao usuário.
O SDK Python é apenas uma opção. Você pode usar qualquer linguagem que suporte requisições HTTP. A estrutura do endpoint permanece a mesma, independentemente do cliente que você escolher. Esta flexibilidade permite que você integre o modelo sem censura em qualquer fluxo de trabalho existente sem alterações significativas de código.
Uso do SDK Node.js
O SDK Node funciona de forma semelhante à versão Python. Configure o cliente com a base URL e a chave de API, depois chame o método de conclusões de chat. Esta abordagem é ideal para aplicativos do lado do servidor ou serviços de back-end que precisam gerar texto de forma assíncrona.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openrouternsfw.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);Desenvolvedores Node.js podem integrar facilmente esta API em seus projetos existentes. O SDK cuida da serialização e desserialização de dados JSON. Você também pode especificar parâmetros adicionais como temperature ou top_p para controlar a aleatoriedade da saída.
Certifique-se de lidar corretamente com a natureza assíncrona das requisições. Use async/await ou cadeias de Promise para gerenciar os dados de resposta. Isso garante que seu aplicativo permaneça responsivo enquanto aguarda o modelo gerar o texto. O SDK Node é uma escolha confiável para construir serviços de geração de texto escaláveis.
Respostas em Streaming
Ative o streaming definindo o parâmetro stream como true em sua solicitação. O servidor enviará uma série de Eventos Enviados pelo Servidor (SSE) em vez de uma única resposta JSON. Cada evento contém um fragmento parcial do texto gerado.
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)O streaming é útil para aplicativos em tempo real onde você deseja exibir a saída conforme ela é gerada. O último fragmento do stream contém o uso total de tokens para a solicitação. Isso permite que você rastreie os custos com precisão sem aguardar que toda a resposta seja concluída.
Trate os eventos do stream com cuidado para garantir que o texto seja montado corretamente. Concatene os fragmentos na ordem em que são recebidos. O servidor garante que os fragmentos sejam enviados em sequência. Se a conexão for interrompida, você pode precisar repetir a solicitação. O streaming é um recurso poderoso que melhora a experiência do usuário para tarefas de geração de texto.
Limites de Requisição e Janela de Contexto
Cada chave de API é limitada a 300 requisições por minuto e 8 requisições simultâneas. O tamanho do corpo da solicitação é limitado a 8 MB. Se você exceder esses limites, o servidor retornará o código de status 429. Este é um código de status HTTP padrão indicando que você enviou muitas requisições em uma determinada janela de tempo. Você deve implementar backoff exponencial no seu cliente para lidar com esses erros com elegância.
A janela de contexto suporta até 100,000 tokens para o prompt e a conclusão combinados. Não há um limite separado de saída. Se você não especificar o parâmetro max_tokens, a resposta pode ir até o final da janela. Você pode limitar o comprimento da saída definindo max_tokens para um valor menor.
Monitore o uso de tokens para gerenciar seu crédito pré-pago de forma eficaz. Erros e recusas não consomem tokens, então você não é cobrado por solicitações falhas. Isso garante que você pague apenas pela geração de texto bem-sucedida. Fique de olho nos seus limites de requisições para evitar interrupções no seu serviço.
Especificações técnicas
Todos os limites e recursos reais da API em um só lugar — confira antes de recarregar.
| Item | Valor |
|---|---|
| Formato | compatível com OpenAI: qualquer SDK da OpenAI funciona trocando a base URL e a chave |
| Autenticação | Authorization: Bearer YOUR_KEY |
| Endpoints | POST /v1/chat/completions · GET /v1/models |
| Base URL | https://api.openrouternsfw.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) |
| Janela de contexto | 100.000 tokens (entrada + saída) |
| Parâmetros | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| Chamada de funções | sim — tools, tool_choice; resposta com tool_calls, inclusive em streaming; resultados como role: tool |
| Streaming | sim — server-sent events; o último bloco traz o uso de tokens |
| Cabeçalhos | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Tamanho | até 8 MB por requisição |
| Concorrência | 8 requisições ao mesmo tempo por chave |
| Limite de taxa | 300 requisições por minuto por chave |
| Recarga | USDT (TRC20) ou USDC (Base), qualquer valor inteiro de $20 a $500 |
| Validade | crédito pago não expira, sem assinatura |
| 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 |
| Bônus | +5% a partir de $50, +10% a partir de $100, +15% a partir de $200 |
| Preço | $0,15 por 1M tokens de entrada · $0,50 por 1M de saída |
| Conteúdo | conteúdo adulto permitido; conteúdo sexual com menores é recusado |
| Login | Google ou e-mail e senha |
| Chaves | uma chave ativa por conta; uma nova substitui a anterior |
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
Como o modelo sem censura difere dos outros fornecedores?
Nosso modelo é um modelo de pesos abertos executado em nossos próprios servidores, ajustado para responder sem recusas de conteúdo para uso adulto lícito. Não é GPT, Claude, Gemini, Grok, DeepSeek, Qwen, Llama ou qualquer modelo de outro fornecedor. Não fazemos roteamento entre fornecedores; servimos um único endpoint sem censura.
O que acontece se eu exceder o limite de requisições?
Se você exceder 300 requisições por minuto ou 8 requisições simultâneas por chave, o servidor retornará o código de status 429. Este é um código de status HTTP padrão indicando que você enviou muitas requisições em uma determinada janela de tempo. Você deve implementar lógica de backoff no seu cliente para lidar com esses erros.
A API suporta chamada de funções e modo JSON?
Sim, a API suporta chamada de funções (tools, tool_choice) e modo JSON (response_format json_object). Você também pode especificar parâmetros como temperature, top_p, stop, seed, presence_penalty e frequency_penalty para controlar a saída.
Sua chave está a um formulário de distância
Crie uma conta, copie a chave e altere a URL base. Essa é toda a configuração.
Obter chave de API