Inicio rápido para usuarios de OpenRouter NSFW
Integra nuestra API LLM sin censura en tu base de código actual actualizando la URL base y la clave de API. Esta guía cubre los endpoints estándar compatibles con OpenAI, streaming y manejo de restricciones para uso directo por desarrolladores.
URL base y autenticación
Reemplaza la URL base del proveedor actual con https://api.openrouternsfw.com/v1. La autenticación utiliza el encabezado estándar Authorization: Bearer <key>. Obtienes tu clave inmediatamente después de registrarte con Google o correo electrónico en la página Obtener clave de API. No se requiere número de teléfono y la clave se muestra solo una vez, así que cópiala antes de salir de la página.
Nuestro servicio es una API independiente, no un revendedor de modelos de otros proveedores. El identificador de modelo que envías en las peticiones es uncensored, que se ejecuta en nuestros propios servidores. Está ajustado para responder sin rechazos de contenido para uso adulto lícito, pero no es GPT, Claude ni ningún otro modelo de proveedor con nombre.
Asegúrate de que tu biblioteca cliente esté configurada para usar esta nueva URL base. Todas las peticiones deben incluir una clave de API válida en el encabezado. Si falta la clave o es inválida, el servidor devuelve un error 401. Si no tienes crédito prepago, recibes un error 402. Estos son códigos de estado HTTP estándar que indican problemas de autenticación o pago, no errores del servidor.
Endpoint de completados de chat
La funcionalidad principal se proporciona a través del endpoint POST /v1/chat/completions. Este endpoint acepta un cuerpo JSON que contiene el nombre del modelo, el array de mensajes y parámetros opcionales. Devuelve un objeto JSON con el texto generado, estadísticas de uso de tokens y motivo de finalización. Esta estructura es compatible con los SDK oficiales de OpenAI y la mayoría de las bibliotecas cliente compatibles con OpenAI.
No necesitas escribir clientes HTTP personalizados si prefieres usar un SDK. Sin embargo, debes actualizar la configuración para apuntar a nuestra URL base. El siguiente ejemplo demuestra una petición de finalización estándar usando cURL. Esta petición envía un prompt al modelo sin censura y espera una respuesta 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."}]
}'Recuerda que esta API solo sirve texto. No hay endpoints para embeddings, imágenes, audio o generación de video. Si tu aplicación requiere entradas o salidas multimodales, necesitarás manejarlas por separado. Nuestro servicio se enfoca exclusivamente en la generación de texto de alta calidad con un modelo sin censura.
Integración con SDK de Python
Usar el SDK de Python simplifica el proceso de integración. Inicializa el cliente con la URL base correcta y tu clave de API. La biblioteca maneja las peticiones HTTP y el análisis JSON por ti. Puedes especificar el ID del modelo como uncensored para asegurarte de que estás usando nuestro 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 fragmento de código muestra cómo enviar un mensaje y recuperar la respuesta. El cliente maneja automáticamente la conexión y la notificación de errores. Si el servidor devuelve un error, el SDK lanza una excepción. Deberías manejar estas excepciones en la lógica de tu aplicación para proporcionar una mejor experiencia de usuario.
El SDK de Python es solo una opción. Puedes usar cualquier lenguaje que soporte peticiones HTTP. La estructura del endpoint permanece igual independientemente del cliente que elijas. Esta flexibilidad te permite integrar el modelo sin censura en cualquier flujo de trabajo existente sin cambios significativos de código.
Uso del SDK de Node.js
El SDK de Node funciona de manera similar a la versión de Python. Configura el cliente con la URL base y la clave de API, luego llama al método de finalizaciones de chat. Este enfoque es ideal para aplicaciones del lado del servidor o servicios backend que necesitan generar texto de forma así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);Los desarrolladores de Node.js pueden integrar fácilmente esta API en sus proyectos existentes. El SDK maneja la serialización y deserialización de datos JSON. También puedes especificar parámetros adicionales como temperature o top_p para controlar la aleatoriedad de la salida.
Asegúrate de manejar correctamente la naturaleza asíncrona de las peticiones. Usa async/await o cadenas de Promises para gestionar los datos de respuesta. Esto asegura que tu aplicación permanezca receptiva mientras espera que el modelo genere el texto. El SDK de Node es una opción confiable para construir servicios de generación de texto escalables.
Respuestas en streaming
Habilita el streaming estableciendo el parámetro stream en true en tu petición. El servidor enviará una serie de Eventos Enviados por Servidor (SSE) en lugar de una única respuesta JSON. Cada evento contiene un fragmento parcial del texto generado.
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)El streaming es útil para aplicaciones en tiempo real donde deseas mostrar la salida a medida que se genera. El último fragmento del stream contiene el uso total de tokens para la petición. Esto te permite rastrear los costos con precisión sin esperar a que toda la respuesta se complete.
Maneja los eventos del stream cuidadosamente para asegurar que el texto se ensamble correctamente. Concatena los fragmentos en el orden en que se reciben. El servidor garantiza que los fragmentos se envíen en secuencia. Si la conexión se interrumpe, es posible que necesites reintentar la petición. El streaming es una característica poderosa que mejora la experiencia de usuario para tareas de generación de texto.
Límites de peticiones y ventana de contexto
Cada clave de API está limitada a 300 peticiones por minuto y 8 peticiones simultáneas. El tamaño del cuerpo de la petición está limitado a 8 MB. Si superas estos límites, el servidor devuelve un código de estado 429. Este es un código de estado HTTP estándar que indica que has enviado demasiadas peticiones en un intervalo de tiempo determinado. Deberías implementar un retroceso exponencial en tu cliente para manejar estos errores de manera elegante.
La ventana de contexto soporta hasta 100,000 tokens para el prompt y la finalización combinados. No hay un límite de salida separado. Si no especificas el parámetro max_tokens, la respuesta puede extenderse hasta el final de la ventana. Puedes limitar la longitud de la salida estableciendo max_tokens a un valor más bajo.
Monitorea el uso de tokens para gestionar eficazmente tu crédito prepago. Los errores y rechazos no consumen tokens, por lo que no se te cobra por las peticiones fallidas. Esto asegura que solo pagues por la generación de texto exitosa. Vigila tus límites de peticiones para evitar interrupciones en tu servicio.
Especificaciones técnicas
Todos los límites y funciones reales de la API en un solo lugar: revísalos antes de recargar.
| Elemento | Valor |
|---|---|
| Formato | compatible con OpenAI: cualquier SDK de OpenAI funciona cambiando la base URL y la clave |
| Autenticación | Authorization: Bearer YOUR_KEY |
| Endpoints | POST /v1/chat/completions · GET /v1/models |
| Base URL | https://api.openrouternsfw.com/v1 |
| ID del modelo | uncensored |
| Modo JSON | response_format: {"type": "json_object"} |
| Salida máxima | hasta el resto de la ventana de 100.000 tokens; max_tokens opcional (sin límite aparte) |
| Ventana de contexto | 100.000 tokens (entrada + salida) |
| Parámetros | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| Llamadas a funciones | sí: tools, tool_choice; la respuesta trae tool_calls, también en streaming; resultados como role: tool |
| Streaming | sí: server-sent events; el último fragmento incluye el uso de tokens |
| Cabeceras | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Tamaño de petición | hasta 8 MB |
| Concurrencia | 8 peticiones a la vez por clave |
| Límite de peticiones | 300 por minuto por clave |
| Recarga | USDT (TRC20) o USDC (Base), cualquier importe entero de $20 a $500 |
| Caducidad | el crédito pagado no caduca, sin suscripción |
| Facturación | crédito prepago por uso real; errores y rechazos no se cobran |
| Prueba gratis | $0,50 durante 7 días, sin tarjeta · Clave de prueba: 2 solicitudes paralelas, 60 por minuto; límites completos (8 y 300) tras la primera recarga |
| Bono | +5 % desde $50, +10 % desde $100, +15 % desde $200 |
| Precio | $0,15 por 1M tokens de entrada · $0,50 por 1M de salida |
| Contenido | contenido adulto permitido; se rechaza el contenido sexual con menores |
| Acceso | Google o correo y contraseña |
| Claves | una clave activa por cuenta; una nueva reemplaza a la anterior |
Códigos de error
Los errores llegan como JSON con un type fijo; las peticiones fallidas o rechazadas no se cobran.
| Código | Tipo | Significado |
|---|---|---|
400 | bad_request | JSON inválido, mensajes vacíos, parámetro incorrecto o contexto demasiado largo |
401 | missing_key · invalid_key · key_revoked | falta la clave, es incorrecta o fue reemplazada |
402 | no_credit | sin crédito: recarga y sigue al instante |
403 | content_blocked | contenido sexual con menores: rechazado, no se cobra |
404 | not_found | endpoint desconocido |
413 | request_too_large | cuerpo mayor de 8 MB |
429 | rate_limited · concurrency | más de 300/min o 8 en paralelo: espera y reintenta |
503 | upstream_busy | modelo ocupado: reintenta en unos segundos |
Preguntas y respuestas
¿En qué se diferencia el modelo sin censura de otros proveedores?
Nuestro modelo es un modelo de pesos abiertos ejecutado en nuestros propios servidores, ajustado para responder sin rechazos de contenido para uso adulto lícito. No es GPT, Claude, Gemini, Grok, DeepSeek, Qwen, Llama ni ningún otro modelo de otro proveedor. No realizamos enrutamiento entre proveedores; servimos un único endpoint sin censura.
¿Qué sucede si exceda el límite de peticiones?
Si superas 300 peticiones por minuto o 8 peticiones simultáneas por clave, el servidor devuelve un código de estado 429. Este es un código de estado HTTP estándar que indica que has enviado demasiadas peticiones en un intervalo de tiempo determinado. Debes implementar una lógica de retroceso en tu cliente para manejar estos errores.
¿La API admite llamadas a funciones y modo JSON?
Sí, la API admite llamadas a funciones (tools, tool_choice) y modo JSON (response_format json_object). También puedes especificar parámetros como temperature, top_p, stop, seed, presence_penalty y frequency_penalty para controlar la salida.
Tu clave está a un formulario de distancia
Crea una cuenta, copia la clave, cambia la URL base. Esa es toda la configuración.
Obtener clave de API