Ce que les gens entendent par API de texte sans censure
Si vous avez recherché une API IA NSFW, vous voulez probablement une chose : un modèle que vous pouvez appeler depuis votre propre code et qui ne s’arrête pas au milieu d’une histoire avec un refus. En espagnol et en portugais, l’abréviation est « IA » (inteligencia artificial, inteligência artificial), c’est pourquoi des requêtes comme « ia nsfw » sont courantes. Le besoin est le même dans toutes les langues : fiction, jeux de rôle et applications de compagnons pour adultes, construites sur un modèle qui respecte le prompt système que vous avez écrit.
Les modèles hébergés grand public sont ajustés pour décliner un large éventail de requêtes. C’est raisonnable pour un assistant général, mais cela brise une application de narration. Le modèle ici est un unique modèle à poids ouverts, exécuté par un prestataire indépendant et ajusté pour répondre sans refus de contenu pour une utilisation adulte légale. Ce n’est pas l’API officielle d’un grand éditeur et ce n’est pas un routeur qui transmet votre appel au modèle de quelqu’un d’autre.
Vous lui parlez de la même manière que vous parlez à OpenAI : JSON sur HTTPS, une clé bearer, un tableau messages. Rien dans votre client n’a besoin de changer, sauf deux chaînes.
Ce à quoi vous appelez réellement
Conservez les faits en un seul endroit avant d'écrire du code.
- URL de base :
https://api.nsfwia.com/v1 - ID du modèle :
uncensored - Authentification :
Authorization: Bearer YOUR_KEY - Endpoints :
POST /v1/chat/completions,POST /v1/responsesetGET /v1/models - Fenêtre de contexte : 100 000 tokens, prompt et complétion confondus
- Fonctionnalités : streaming sur SSE, appel d’outils, mode JSON, et transmission des paramètres temperature, top_p, stop, seed et des pénalités
Il est texte uniquement. Il n’y a pas de génération d’images, d’audio ou de vidéo, ni d’embeddings ni de fine-tuning. Si votre produit en a besoin, associez cette API à d’autres services pour cela.
Envoyez votre première requête
Créez un compte, ouvrez la page clé API et copiez votre clé. Les nouveaux utilisateurs peuvent réclamer 0,50 $ de crédit d'essai gratuit là avec un clic, valable 7 jours. Puis exécutez ceci :
curl https://api.nsfwia.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "system", "content": "You are a novelist writing for adult readers. Stay in character."},
{"role": "user", "content": "Open a noir story set in a rainy port city."}
],
"temperature": 0.9
}'
La même requête avec le SDK Python officiel :
from openai import OpenAI
client = OpenAI(
base_url="https://api.nsfwia.com/v1",
api_key="YOUR_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a novelist writing for adult readers."},
{"role": "user", "content": "Open a noir story set in a rainy port city."},
],
temperature=0.9,
)
print(resp.choices[0].message.content)
Si l’appel retourne du texte, vous avez terminé la configuration. Un 401 signifie que la clé est fausse ou contient un espace parasite. Un 404 signifie généralement que l’URL de base manque /v1.
Streaming et prompts système
Les applications de narration et de chat semblent lentes sans streaming. Définissez stream: true et lisez les événements envoyés par le serveur à mesure qu’ils arrivent. Les données d’utilisation arrivent à la fin du flux.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.nsfwia.com/v1",
apiKey: process.env.NSFW_API_KEY,
});
const stream = await client.chat.completions.create({
model: "uncensored",
stream: true,
messages: [
{ role: "system", content: "You are the narrator of an adult interactive fiction game." },
{ role: "user", content: "Describe the tavern the player just entered." },
],
});
for await (const part of stream) {
process.stdout.write(part.choices[0]?.delta?.content ?? "");
}
Parce que le modèle ne s’oppose pas au genre, le prompt système devient le principal contrôle dont vous disposez. Indiquez le décor, le ton, le point de vue et la longueur souhaités. Placez-y aussi des règles strictes, comme « aucun contenu impliquant des mineurs » ou « restez dans l’histoire ». Un prompt système clair améliore davantage la qualité de la sortie que n’importe quel paramètre d’échantillonnage.
Sortie structurée et outils
Les applications ont souvent besoin de données, pas de prose : une fiche de personnage, un inventaire, une liste de choix pour le joueur. Ajoutez response_format: {"type": "json_object"} et dites dans le prompt quelles clés vous attendez, et la réponse sera un objet JSON que vous pourrez analyser. Pour la logique de jeu, passez tools avec des définitions de fonctions. Lorsque le modèle répond avec tool_calls, exécutez la fonction dans votre code et renvoyez le résultat avec role: "tool". Les deux fonctionnalités fonctionnent pendant le streaming, donc un narrateur peut décrire une scène et appeler une fonction de lancer de dés dans le même tour.
Gardez chaque changement petit lorsque vous réglez la sortie. Modifiez un paramètre à la fois, comme abaisser temperature pour une prose plus stable ou ajouter une pénalité de présence si le modèle se répète, puis comparez les résultats sur le même prompt avec un seed fixe.
Rédaction de prompts en espagnol ou portugais
Rien ne vous empêche d'envoyer le prompt système et les tours utilisateur en espagnol ou en portugais. Certains développeurs conservent le prompt système en anglais et laissent l'utilisateur écrire dans sa propre langue, ce qui maintient les instructions stables tandis que l'histoire reste locale. D'autres écrivent tout dans la langue de l'utilisateur. Essayez les deux sur vos scènes d'exemple et comparez, car nous ne publions pas de benchmarks linguistiques et le bon choix dépend de votre contenu.
Les articles de ce site sont en anglais, mais l’API elle-même ne se soucie pas de la langue dans laquelle se trouve le JSON. Notre article mythes contre faits couvre les idées fausses courantes sur les modèles sans censure, y compris ce que « sans censure » signifie et ne signifie pas.
Limites et coût
| Élément | Valeur |
|---|---|
| Prix d'entrée | 0,15 $ par 1M de tokens |
| Prix de sortie | 0,50 $ par 1M de tokens |
| Clé complète | 8 requêtes simultanées, 300 requêtes par minute |
| Clé d'essai | 2 requêtes simultanées, 60 requêtes par minute |
| Taille maximale du corps de la requête | 8 MB |
Un tour de jeu de rôle typique avec 2 000 tokens input et 500 tokens output coûte 0,0003 $ pour l’input plus 0,00025 $ pour l’output, soit 0,00055 $ au total. Le crédit d'essai gratuit de 0,50 $ couvre donc environ 900 tours de ce type. Les requêtes échouées ou refusées ne sont pas facturées, et le crédit prépayé n'expire jamais. Les recharges vont de 20 $ à 500 $ en crypto (USDT sur TRC20 ou USDC sur Base), avec un bonus de 5 % à partir de 50 $, 10 % à partir de 100 $ et 15 % à partir de 200 $. Les détails complets se trouvent sur la page de tarification.
Si vous dépassez une limite, vous obtenez un HTTP 429. Le code d’erreur rate_limited signifie trop de requêtes par minute, et concurrency signifie trop de requêtes à la fois. Une requête streaming garde sa place jusqu’à la fin du flux, donc fermez les flux que vous ne lisez plus.
Règles qui restent en vigueur
Le service est réservé à une utilisation adulte légale. Le contenu impliquant des mineurs est une limite stricte et n’est jamais acceptable, quelle que soit la formulation. Les prompts ne sont pas utilisés pour l’entraînement. Gardez vos vérifications d’âge, vos écrans de consentement et vos obligations légales locales dans votre propre produit, car l’API vous donne un modèle de texte performant et rien de plus. La référence complète des requêtes se trouve dans la documentation.
