Documentation de l'API OpenRouter
Connectez votre application à notre LLM sans censure via l'interface compatible OpenAI standard. Ce guide couvre l'authentification, les formats de requête et le streaming pour une intégration rapide.
Guide de démarrage rapide : Connectez avec Python
Commencez par installer le SDK officiel et pointez-le vers notre URL de base.
Notre API se comporte comme l'interface OpenAI standard mais se connecte à un seul modèle uncensored. Cette approche élimine la complexité du proxy tout en gardant votre code portable.
- Installez la bibliothèque via pip.
- Définissez votre clé API dans l'environnement.
- Définissez l'URL de base pour notre point de terminaison.
from openai import OpenAI
client = OpenAI(base_url="https://api.apiopenrouter.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)Remplacez la clé placeholder par vos propres informations d'identification. Vous pouvez envoyer des invites simples ou des données structurées complexes.
Authentification et clés
Générez une clé sur le tableau de bord et transmettez-la dans l'en-tête Authorization.
Chaque compte prend en charge une clé active à la fois. Lorsque vous créez une nouvelle clé, l'ancienne cesse de fonctionner immédiatement. Cela simplifie la gestion de la sécurité sans nécessiter une logique de rotation complexe.
curl https://api.apiopenrouter.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top 5 dependencies for a Go web server"}]
}'La requête ci-dessus utilise le schéma Bearer. Assurez-vous que votre clé commence par sk- Et ne contient pas d'espace blanc supplémentaire.
Point de terminaison Chat Completions
Envoyez des messages au /v1/chat/completions point de terminaison utilisant du JSON standard.
Le modèle accepte user et assistant rôles. Vous pouvez configurer temperature, top-p et les séquences d'arrêt pour contrôler le style de sortie. Les réponses retournent l'utilisation des tokens dans le dernier chunk si le streaming est activé.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apiopenrouter.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);Définir max_tokens pour contrôler la longueur de la sortie. Si ce champ est omis, la valeur par défaut est de 2 048 tokens. Le modèle prend en charge jusqu'à 16 000 tokens par requête.
Réponses en streaming
Activez le streaming en définissant stream: true dans le corps de votre requête.
Les détails d'utilisation des tokens n'apparaissent que dans le dernier chunk du flux. Cela permet des mises à jour de l'interface utilisateur en temps réel tout en préservant des données de facturation précises. Les erreurs lors du streaming signalent toujours l'utilisation pour les tokens facturés.
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)Gérez les réponses partielles avec élégance. Le flux se ferme normalement lorsque le modèle termine la génération ou atteint la limite de contexte.
Appel de fonctions et mode JSON
Utiliser response_format: {type: "json_object"} pour des sorties JSON strictes.
Définissez des outils dans le tools tableau et définissez tool_choice pour imposer les appels de fonction. Le modèle renvoie des données structurées adaptées au traitement programmable. Cela fonctionne de manière fiable avec nos poids uncensored.
curl https://api.apiopenrouter.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top 5 dependencies for a Go web server"}]
}'Combinez l'appel de fonctions avec le streaming pour des expériences interactives. Validez la sortie JSON avant de la passer à la logique de votre application.
Limites et quotas
Surveillez votre utilisation par rapport aux limites par clé pour éviter les interruptions.
Chaque clé permet 300 requêtes par minute et 8 requêtes simultanées. La limite de taille du corps de la requête est de 8 Mo. Si vous dépassez ces limites, l'API renvoie un code d'état 429. Les erreurs d'authentification renvoient 401, et un solde insuffisant renvoie 402.
curl https://api.apiopenrouter.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top 5 dependencies for a Go web server"}]
}'La fenêtre de contexte est de 100 000 tokens au total. Les erreurs ne consomment pas de crédit. Les refus pour de légères violations de contenu restent également gratuits.
Questions fréquentes
En quoi l'API openrouter diffère-t-elle d'OpenAI standard ?
Notre API utilise un modèle sans censure optimisé pour le contenu adulte légal et créatif sans refus. Il conserve la même structure de requête et de réponse qu'OpenAI, vous permettant de changer de point de terminaison sans modifier votre code.
Que se passe-t-il si je manque de crédits ?
Les requêtes échouent avec une erreur 402 lorsque votre solde prépayé est nul. Les crédits n'expirent jamais, vous pouvez donc recharger via crypto à tout moment. Les erreurs et les refus ne consomment pas votre solde.
Puis-je utiliser plusieurs clés pour différents projets ?
Chaque compte prend en charge une clé active. La création d'une nouvelle clé invalide automatiquement la précédente. Vous pouvez générer une nouvelle clé instantanément depuis le tableau de bord sans perdre votre historique de facturation.
Récupérer votre clé API
Inscrivez-vous, copiez le jeton, et mettez à jour votre URL de base. C'est toute la configuration.