Autenticación & URL base
Tu clave de API autentica cada solicitud. Genera una clave a través del panel de control usando Google o correo electrónico; no se requiere número de teléfono. Usa esta clave en el Authorization header. La URL base para todas las solicitudes es HTTPS://api.modelsnsfw.com/v1. Este endpoint funciona con cualquier cliente compatible con OpenAI simplemente cambiando la URL base y proporcionando tu clave.
curl https://api.modelsnsfw.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List all available nsfw model tiers and their monthly costs."}]
}'
Endpoint Chat Completions
Envía texto y recibe texto mediante POST /v1/chat/completions. El ID del modelo es uncensored. Es un modelo de pesos abiertos ajustado para sin denegaciones en contenido adulto lícito. No es GPT, Claude ni ningún otro modelo de proveedor. Los tokens de entrada cuestan $0.15 por millón; los tokens de salida cuestan $0.50 por millón. Los errores son gratuitos.
from openai import OpenAI
client = OpenAI(base_url="https://api.modelsnsfw.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)
Respuestas en streaming (SSE)
Habilita la transmisión estableciendo stream: true. La API devuelve Eventos Enviados por Servidor (SSE) con uso de tokens en el último fragmento. Esto es ideal para interfaces de chat en tiempo real. Recibes tokens parciales de inmediato. Esto reduce significativamente la latencia percibida para el usuario.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.modelsnsfw.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);
Llamada de funciones y modo JSON
Usar response_format: {"type": "json_object"} para una salida estructurada. También puedes definir herramientas para la llamada de funciones. El modelo admite temperature, top_p, stop, y seed parámetros. Esto garantiza resultados deterministas cuando sea necesario. El modo JSON obliga a que la salida sea un formato JSON válido.
Límites de Tasa y Restricciones
Estás limitado a 300 solicitudes por minuto por clave. Solo 8 solicitudes pueden ejecutarse simultáneamente. El cuerpo de la solicitud no debe exceder los 8 MB. Si envías demasiadas solicitudes, recibirás un error 429. Las claves no válidas devuelven 401. El crédito insuficiente devuelve 402. Los errores durante el procesamiento no consumen tu crédito prepagado.
Uso de Token y Facturación
La ventana de contexto es de 100.000 tokens en total. La salida máxima es de 16.000 tokens por solicitud. Si max_tokens no está establecido, por defecto es 2.048. Los créditos son prepagados y nunca expiran. Los recargos son solo con criptomonedas (USDT/TRC20 o USDC/Base). Hay crédito de bonificación para recargos más grandes. No se requiere suscripción.
Transmisión
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)