FR ▾
2026-10-30gptsemfiltro.comuncensored
Gptsemfiltro

API LLM sans censure, compatible OpenAI

Obtenir votre clé

Documentation de l'API ChatGPT : guide rapide et premiers appels

La plupart des APIs de chat partagent le format de requête rendu populaire par l'API ChatGPT. Cette page est un guide court pour l'endpoint compatible de ce site, avec des exemples à copier-coller.

Livre de référence ouvert se déployant en tuiles d'endpoints connectés et un cube de serveur, pour la documentation API

Résumé

  1. URL de base https://api.gptsemfiltro.com/v1, authentification par token Bearer, ID du modèle uncensored.
  2. Trois méthodes : complétions de chat, réponses et liste des modèles ; le solde a ses propres endpoints.
  3. Le streaming, l'appel d'outils et le mode JSON sont pris en charge ; le contexte est de 100 000 tokens.
  4. Les erreurs 429 comportent un code : rate_limited ou concurrency.

Ce que couvre cette page

Si vous avez recherché chatgpt api documentation, vous souhaiterez peut-être consulter la documentation officielle d'OpenAI pour ses propres modèles. Cette page est autre chose : une référence de travail pour une API compatible OpenAI hébergée sur ce site. Elle utilise un seul modèle à poids ouverts, uncensored, optimisé pour répondre sans refus de contenu pour un usage adulte légal. Il ne s'agit pas de l'API officielle d'OpenAI ni d'aucun autre fournisseur.

Les formes de requête et de réponse suivent le format OpenAI familier, donc les SDK officiels et la plupart des outils fonctionnent après avoir modifié l'URL de base et la clé. La référence complète se trouve dans la documentation de l'API ; cette page vous donne la version rapide avec des exemples que vous pouvez exécuter.

Bases de connexion et premier appel

Bases de connexion

ÉlémentValeur
URL de basehttps://api.gptsemfiltro.com/v1
AuthentificationAuthorization: Bearer YOUR_KEY
ID du modèleuncensored
Endpoint de chatPOST /v1/chat/completions
Endpoint de réponsesPOST /v1/responses
Liste des modèlesGET /v1/models
SoldeGET /v1/balance ou GET /v1/dashboard/billing/credit_grants
Taille maximale du corps de la requête8 MB
Fenêtre de contexte100 000 tokens, prompt plus complétion

Obtenez une clé sur la page API key. Les nouveaux utilisateurs peuvent réclamer un crédit d'essai de 0,50 $ en un seul clic ; il est valable 7 jours et ne nécessite aucun paiement. Vous pouvez régénérer une clé à tout moment, et les comptes qui ont rechargé leur crédit peuvent détenir jusqu'à 5 clés, les étiqueter et en révoquer n'importe laquelle.

Votre première requête

curl https://api.gptsemfiltro.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "system", "content": "You answer in plain language."},
      {"role": "user", "content": "What is a context window?"}
    ],
    "temperature": 0.7
  }'
from openai import OpenAI

client = OpenAI(base_url="https://api.gptsemfiltro.com/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You answer in plain language."},
        {"role": "user", "content": "What is a context window?"},
    ],
)
print(resp.choices[0].message.content)
print(resp.usage)

La réponse contient choices[0].message.content et un objet usage avec les nombres de tokens de prompt et de complétion.

Paramètres de la requête

Les paramètres que vous utiliserez le plus :

Non disponible : génération d'images, audio ou vidéo, embeddings et fine-tuning. Le service gère uniquement le texte.

Les rôles fonctionnent comme dans le format OpenAI. Un message system définit le comportement pour toute la conversation, les messages user contiennent l'entrée de la personne, les messages assistant contiennent les réponses précédentes et les messages tool retournent les résultats de fonction. L'API ne conserve aucune mémoire entre les appels, donc chaque requête doit inclure l'historique que vous voulez que le modèle voie. Le prompt et la complétion partagent la fenêtre de 100 000 tokens, ce qui signifie qu'un long historique laisse moins de place pour la réponse.

Streaming, appel d'outils et mode JSON

Diffusion en continu

Définissez stream à true et lisez les événements à mesure qu'ils arrivent. Chaque fragment a un petit delta de texte, et l'utilisation arrive à la fin.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.gptsemfiltro.com/v1",
  apiKey: process.env.API_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "List five uses of a context window." }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Une requête en streaming conserve sa place de concurrence jusqu'à la fin du flux, donc fermez les flux dont vous n'avez plus besoin.

Appel d'outils et mode JSON

Déclarez des fonctions avec tools. Lorsque le modèle en veut une, la réponse a tool_calls au lieu de texte. Vous exécutez la fonction et renvoyez le résultat en tant que message avec role: "tool".

import json
from openai import OpenAI

client = OpenAI(base_url="https://api.gptsemfiltro.com/v1", api_key="YOUR_KEY")

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get the weather for a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

messages = [{"role": "user", "content": "What is the weather in Lisbon?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
call = first.choices[0].message.tool_calls[0]

messages.append(first.choices[0].message)
messages.append({
    "role": "tool",
    "tool_call_id": call.id,
    "content": json.dumps({"city": "Lisbon", "temp_c": 21}),
})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)

En production, vérifiez que tool_calls existe avant de le lire, car le modèle peut répondre en texte brut. Pour une sortie structurée sans outils, ajoutez "response_format": {"type": "json_object"} et indiquez dans le prompt que vous voulez du JSON.

Limites, erreurs et en-têtes

LimiteClé complèteClé d'essai
Requêtes simultanées82
Requêtes par minute30060
Taille du corps de la requête8 MB8 MB

Au-delà d'une limite, l'API retourne HTTP 429. Le code d'erreur rate_limited signifie trop de requêtes par minute ; concurrency signifie trop en même temps. En cas de surcharge temporaire, vous obtenez également 429, avec un en-tête Retry-After: 5. Les requêtes échouées ou refusées ne sont pas facturées.

En-têtes de réponse utiles : X-Request-Id (citez-le lors du contact avec support), X-Balance-USD, X-RateLimit-Limit-Requests et X-RateLimit-Limit-Concurrency.

Un petit utilitaire de réessai en Node, qui attend le temps dans Retry-After et recule un peu plus à chaque tentative :

async function chat(messages, tries = 4) {
  for (let n = 0; n < tries; n++) {
    const res = await fetch("https://api.gptsemfiltro.com/v1/chat/completions", {
      method: "POST",
      headers: {
        "Authorization": "Bearer " + process.env.API_KEY,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ model: "uncensored", messages: messages }),
    });
    if (res.status === 429) {
      const wait = Number(res.headers.get("Retry-After") || 5);
      await new Promise(function (r) { setTimeout(r, wait * 1000 * (n + 1)); });
      continue;
    }
    return res.json();
  }
  throw new Error("still rate limited");
}

Adapter le code existant et vérifier votre solde

Adapter le code existant à cet endpoint

Si votre code appelle déjà un endpoint de chat de style OpenAI, la migration est minime. Modifiez ces trois valeurs et laissez le reste :

  1. L'URL de base devient https://api.gptsemfiltro.com/v1.
  2. La clé devient celle de la page des clés API.
  3. Le modèle devient uncensored.

Puis vérifiez sur quoi votre code repose. Tout ce qui est basé sur le texte et de forme conversationnelle se transfère : prompts système, historique, streaming, appels d'outils et mode JSON. Tout le reste n'existe pas ici. Il n'y a pas de génération d'images, pas d'audio ou de vidéo, pas d'embeddings et pas de fine-tuning, donc le code qui appelle ces routes a besoin d'un autre fournisseur.

L'endpoint Responses est également disponible, pour les clients qui préfèrent ce format :

curl https://api.gptsemfiltro.com/v1/responses \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "uncensored", "input": "Summarise what a context window is in one sentence."}'

Testez-le avant de livrer, car différents modèles se comportent différemment sur le même prompt. Les refus, le ton et la longueur peuvent tous changer, donc renvoyez les prompts qui vous intéressent.

Vérification de votre solde depuis le code

Le solde est disponible de trois façons. Chaque réponse inclut l’en-tête X-Balance-USD. Vous pouvez aussi appeler GET /v1/balance, ou l’endpoint de style OpenAI GET /v1/dashboard/billing/credit_grants, que certains tableaux de bord savent déjà lire.

curl https://api.gptsemfiltro.com/v1/balance \
  -H "Authorization: Bearer YOUR_KEY"

Une bonne pratique consiste à lire l’en-tête après chaque appel, à le stocker et à déclencher une alerte lorsqu’il tombe sous un seuil que vous choisissez. Le crédit étant prépayé et n’expire jamais, un solde faible est un signal pour recharger, pas une date limite.

Vue d'ensemble de la tarification

Le coût des entrées est de $0,15 par 1M de tokens et celui des sorties est de $0,50 par 1M de tokens, prélevés sur le crédit prépayé. Exemple : 3 000 tokens d’entrée et 600 tokens de sortie coûtent 3 000 x $0,15 / 1M + 600 x $0,50 / 1M = $0,00045 + $0,0003 = $0,00075. Les recharges sont des montants entiers de $20 à $500 avec des bonus de +5 % à partir de $50, +10 % à partir de $100 et +15 % à partir de $200, payés en USDT (TRC20) ou USDC (Base). Plus de détails sur la page des tarifs. Les prompts ne sont pas utilisés pour l’entraînement.

Liste de contrôle de dépannage pour une première intégration

La plupart des premiers appels échouent pour un nombre limité de raisons. Parcourez-les dans l’ordre avant de suspecter le service.

  1. Statut 401. La clé est absente ou mal tapée. Affichez l’en-tête que votre client envoie réellement et comparez-le avec Authorization: Bearer YOUR_KEY. Si la clé a été collée dans un endroit public, régénérez-la sur la page des clés API ; l’ancienne clé cesse de fonctionner immédiatement.
  2. Statut 404. Le chemin est incorrect. L’URL de base se termine par /v1, et le SDK ajoute /chat/completions lui-même. Si vous appelez l’API en HTTP brut, écrivez le chemin complet.
  3. Une erreur concernant le modèle. Le seul ID de modèle est uncensored. Un nom copié depuis la documentation d’un autre fournisseur ne correspondra pas. GET /v1/models liste ce que la clé peut utiliser.
  4. Une requête très volumineuse échoue. La limite du corps de la requête est de 8 Mo. Les historiques longs sont mieux réduits ou résumés bien avant d’approcher cette taille, et la fenêtre de 100 000 tokens est partagée par le prompt et la complétion de toute façon.
  5. 429 intermittents. Lisez le code d’erreur. concurrency signifie trop d’appels simultanés, donc réduisez le nombre de workers. rate_limited signifie trop de requêtes par minute. Un en-tête Retry-After: 5 signifie une surcharge temporaire, et une courte attente règle le problème.
  6. Réponses coupées. Si vous définissez max_tokens, la réponse s’arrête là et finish_reason indique length. Augmentez le plafond ou supprimez-le.

Conservez la valeur X-Request-Id de toute requête que vous ne parvenez pas à expliquer. C’est le moyen le plus rapide de pointer vers une requête précise lorsque vous contactez le support.

Questions fréquentes

S'agit-il de l'API officielle ChatGPT ?

Non. Il s’agit d’un modèle à poids ouverts hébergé de manière indépendante avec une interface compatible OpenAI. Il n’est pas exploité par OpenAI.

Quels endpoints sont pris en charge ?

POST /v1/chat/completions, POST /v1/responses et GET /v1/models, ainsi que les endpoints de solde à /v1/balance et /v1/dashboard/billing/credit_grants.

Ai-je besoin d'un SDK différent ?

Non. Les SDK officiels OpenAI pour Python et Node fonctionnent après avoir modifié l’URL de base, la clé et le nom du modèle.

Comment vérifier mon crédit restant ?

Lisez l’en-tête X-Balance-USD sur n’importe quelle réponse, ou appelez GET /v1/balance.

Obtenez votre clé API

Inscrivez-vous, copiez la clé et mettez à jour votre URL de base. L’installation est terminée.

Obtenez votre clé