Authentification & URL de base
Votre clé API authentifie chaque requête. Générez une clé via le tableau de bord en utilisant Google ou un e-mail ; aucun numéro de téléphone n'est requis. Utilisez cette clé dans le Authorization header. L'URL de base pour toutes les requêtes est HTTPS://api.modelsnsfw.com/v1. Ce point de terminaison fonctionne avec n'importe quel client compatible OpenAI en modifiant simplement l'URL de base et en fournissant votre clé.
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."}]
}'
Point de terminaison Chat Completions
Envoyez du texte et recevez du texte via POST /v1/chat/completions. L'ID du modèle est uncensored. C'est un modèle à poids ouverts ajusté pour l'absence de refus sur le contenu adulte légal. Ce n'est pas GPT, Claude ou le modèle d'un autre fournisseur. Les jetons d'entrée coûtent $0,15 par million ; les jetons de sortie coûtent $0,50 par million. Les erreurs sont gratuites.
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)
Réponses en streaming (SSE)
Activez le streaming en définissant stream: true. L'API retourne des Server-Sent Events (SSE) avec l'utilisation des tokens dans le dernier chunk. C'est idéal pour les interfaces de chat en temps réel. Vous recevez des tokens partiels immédiatement. Cela réduit considérablement la latence perçue pour l'utilisateur.
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);
Appel de fonctions et mode JSON
Utiliser response_format: {"type": "json_object"} pour une sortie structurée. Vous pouvez également définir des outils pour l'appel de fonctions. Le modèle prend en charge temperature, top_p, stop, et seed paramètres. Cela garantit des résultats déterministes lorsque cela est nécessaire. Le mode JSON impose que la sortie soit au format JSON valide.
Limites de débit & Contraintes
Vous êtes limité à 300 requêtes par minute par clé. Seules 8 requêtes peuvent s'exécuter simultanément. Le corps de la requête ne doit pas dépasser 8 Mo. Si vous envoyez trop de requêtes, vous recevez une erreur 429. Les clés invalides renvoient 401. Un crédit insuffisant renvoie 402. Les erreurs lors du traitement ne consomment pas votre crédit prépayé.
Utilisation et facturation des jetons
La fenêtre de contexte est de 100 000 tokens au total. La sortie maximale est de 16 000 tokens par requête. Si max_tokens n'est pas défini, il est par défaut à 2 048. Les crédits sont prépayés et n'expirent jamais. Les recharges sont exclusivement en crypto (USDT/TRC20 ou USDC/Base). Un crédit bonus s'applique pour les recharges plus importantes. Aucun abonnement n'est requis.
Streaming
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)