Venice AI exécute une API d’inférence compatible OpenAI devant les modèles de poids ouvert et tiers, la confidentialité étant gérée au niveau du proxy au lieu d’être boulonnée après coup. Cet atelier vous obtient une clé API de travail, une première completion de chat en curl et Python, les options venice_parameters uniquement à Venice, la génération d’images et deux façons de l’appeler depuis n8n.
Obtenez une clé API
Connectez-vous sur venice.ai, ouvrez Settings → API (venice.ai/settings/api), puis Generate New API Key. Choisissez Inference Only pour les appels de modèle normaux ; Admin n’est que pour les clés qui gèrent d’autres clés. Venice montre la clé complète une fois — copiez-la avec le bouton de copie de la boîte de dialogue, puis stockez-la en tant que variable d’environnement :
export VENICE_API_KEY=your-api-key-here
GET /models fonctionne avec ou sans clé, donc cela ne prouve rien. Vérifiez avec GET /api_keys/rate_limits à la place :
curl --request GET \
--url https://api.venice.ai/api/v1/api_keys/rate_limits \
--header "Authorization: Bearer $VENICE_API_KEY"
Une clé de travail retourne votre niveau, les soldes et data.accessPermitted. Un 401 avec AUTHENTICATION_FAILED signifie généralement une copie partielle, un préfixe Bearer égaré gravé dans la valeur stockée ou un espace arrière.
Votre première demande
L’URL de base est le détail qui entrave les premières tentatives : https://api.venice.ai/api/v1, pas le domaine nu venice.ai.
curl https://api.venice.ai/api/v1/chat/completions \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "venice-uncensored-1-2",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Parce que le endpoint implémente la spécification des complétions de chat OpenAI, le SDK OpenAI standard fonctionne inchangé une fois qu’il pointe sur Venice :
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("VENICE_API_KEY"),
base_url="https://api.venice.ai/api/v1",
)
completion = client.chat.completions.create(
model="zai-org-glm-5",
messages=[{"role": "user", "content": "Why is privacy important?"}],
)
print(completion.choices[0].message.content)
Le guide de migration de Venice encadre le code OpenAI existant comme un changement de deux variables : gardez OPENAI_API_KEY et OPENAI_BASE_URL (certaines bibliothèques lisent toujours OPENAI_API_BASE) et pointez-les sur votre clé Venice et https://api.venice.ai/api/v1. N’importe quel outil qui lit déjà ces deux variables prend Venice sans changement de code.
Choisissez un modèle sans coder en dur un ID
GET /models?type=text énumère les modèles de texte avec la longueur du contexte et un objet model_spec ; omettez type pour le texte uniquement, ou passez type=all pour chaque modalité. Les entrées programmées pour la retraite portent un objet deprecation.
Au lieu d’un ID de modèle brut, vous pouvez envoyer un nom de trait en tant que model. GET /models/traits?type=text retourne le mappage actuel, par exemple default → zai-org-glm-5-2, default_reasoning → kimi-k3, default_code → deepseek-v4-pro-0813. Envoyer "model": "default" résout pour quel que soit le modèle qui détient actuellement ce trait — un rayon de blast plus petit qu’un ID épinglé quand Venice le déprécie.
Paramètres spécifiques à Venice
Le endpoint des complétions de chat accepte un corps OpenAI standard plus un objet supplémentaire, venice_parameters, pour le comportement en dehors de la spécification OpenAI. Avec les SDKs officiels, il se déplace par le paramètre extra_body :
response = client.chat.completions.create(
model="zai-org-glm-5",
messages=[{"role": "user", "content": "Latest developments in AI?"}],
extra_body={
"venice_parameters": {
"enable_web_search": "auto",
"enable_web_citations": True,
}
},
)
Les clés documentées vaut savoir :
| Paramètre | Type | Défaut | Ce qu’il fait |
|---|---|---|---|
enable_web_search |
chaîne | off |
off, on ou auto. Ajoute un coût basé sur l’utilisation selon la page de tarification. |
enable_web_citations |
booléen | false |
Demande au modèle de citer les sources avec exposants (^1^). |
enable_web_scraping |
booléen | false |
Gratte jusqu’à 5 URLs dans le message utilisateur ; remplace la recherche pour cette demande. |
enable_x_search |
booléen | false |
Utilise la recherche native web + X de xAI pour les modèles Grok supportés. |
character_slug |
chaîne | — | Charge une persona de personnage public Venice par son « Public ID ». |
include_venice_system_prompt |
booléen | true |
Si le prompt système par défaut de Venice est ajouté aux côtés du vôtre. |
disable_thinking |
booléen | false |
Sur les modèles de raisonnement supportés, ignore la réflexion et supprime les blocs <think>. |
strip_thinking_response |
booléen | false |
Supprime les blocs <think> hérités du texte de réponse uniquement. |
Les clés inconnues à l’intérieur de venice_parameters sont ignorées, pas rejetées — une clé mal orthographiée retourne un 200 normal avec la fonctionnalité simplement non appliquée. Écrire le prompt système qui va aux côtés du vôtre propre utilise la même technique générale que la ChatGPT prompting cheat sheet.
Par défaut, votre message système est ajouté aux prompts par défaut de Venice, documentés comme accordés pour des réponses non censurées. Définissez "venice_parameters": {"include_venice_system_prompt": false} dans le même corps de demande pour utiliser uniquement votre propre message système, rien de Venice.
Suffixe de fonctionnalité de modèle. Quand un client ne vous laisse choisir qu’une chaîne de modèle, ajoutez les paramètres à l’ID de modèle à la place : "model": "default:enable_web_search=auto&include_venice_system_prompt=false". Même fonctionnalité, forme de chaîne, chaînée avec &.
Streaming
Définissez stream: true pour les événements envoyés par serveur, se terminant par data: [DONE]. stream_options.include_usage ajoute un chunk d’utilisation final :
curl https://api.venice.ai/api/v1/chat/completions \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "zai-org-glm-5",
"messages": [{"role": "user", "content": "One sentence about Venice."}],
"stream": true,
"stream_options": {"include_usage": true}
}'
Si vous définissez aussi venice_parameters.include_search_results_in_stream, documenté comme expérimental, les résultats de recherche arrivent comme le premier chunk émis au lieu d’être en ligne avec le contenu normal.
Génération d’image
La génération d’image est synchrone : une demande, une réponse avec l’image en ligne. POST /image/generate est l’API native avec des paramètres complets ; POST /images/generations est un alias compatible OpenAI pour migrer le code OpenAI image existant. Énumérez d’abord les modèles d’image avec GET /models?type=image pour trouver un ID model valide.
curl -X POST https://api.venice.ai/api/v1/image/generate \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "venice-sd35",
"prompt": "A cinematic photo of a gondola on a canal at blue hour",
"negative_prompt": "blurry, low quality, watermark",
"width": 1024,
"height": 1024,
"format": "webp"
}'
Les champs documentés incluent prompt (obligatoire), width/height pour les modèles basés sur des pixels, aspect_ratio/resolution pour les modèles basés sur des ratios (qwen-image-2, gpt-image-2, nano-banana-2), format (jpeg/png/webp), variants (1–4), return_binary, safe_mode, seed et style_preset. Les familles de modèles se désaccordent sur le dimensionnement : la famille Qwen Image rejette width/height avec un 400 vous disant d’utiliser aspect_ratio à la place. Vérifiez d’abord model_spec.constraints de la liste des modèles.
Limites de taux
Les numéros par défaut par niveau sont documentés en tant que référence, mais Venice dit de traiter l’endpoint de votre propre clé comme faisant autorité :
curl https://api.venice.ai/api/v1/api_keys/rate_limits \
-H "Authorization: Bearer $VENICE_API_KEY"
Les modèles de texte et d’intégration se trouvent en quatre niveaux de taille publiés avec différents plafonds de demandes/tokens par minute ; les modèles d’image, d’agrandissement, d’incrustation, de parole et de transcription ont leurs propres plafonds séparés. Sur un 429, x-ratelimit-reset-requests donne un horodatage Unix (millisecondes) pour quand la fenêtre se libère. Deux budgets supplémentaires s’appliquent indépendamment du niveau : plus de 50 demandes échouées, ou plus de 200 demandes pour une fonctionnalité de modèle non supportée, dans n’importe quelle fenêtre de 30 secondes.
Gestion des données et dépréciation, telle que documentée
La page de confidentialité de Venice décrit le proxy relayant les demandes sur TLS sans stocker le contenu du prompt ou de la réponse pour l’inférence normale. Chaque modèle ajoute alors l’un des quatre modes de confidentialité : Anonymous (identité cachée du fournisseur, contenu toujours visible par lui), Private (zéro rétention appliquée par contrat), TEE (isolé matériellement avec attestation distante) ou E2EE (chiffré à une enclave vérifiée avant qu’il quitte votre client). Venice documente aussi qu’il peut traiter les métadonnées opérationnelles séparément — horodatages, comptages de tokens, facturation, adresse IP — pour l’authentification, la facturation et la prévention des abus. « Nous ne retenons pas le texte du prompt » et « nous ne journalisez rien du tout » sont des affirmations différentes ; vérifiez le mode de confidentialité du modèle que vous appelez.
Sur la dépréciation, Venice documente 7–15 jours de préavis, un avertissement de dépréciation dans les réponses API pendant cette fenêtre et le routage automatique vers un remplacement comparable après le coucher du soleil, ou 410 Gone quand le routage n’est pas possible. Un modèle atteint par un trait comme default_code obtient sa réaffectation de trait automatiquement.
Connectez-le à n8n
La credential OpenAI intégrée de n8n a un champ Base URL (défaut https://api.openai.com/v1) aux côtés de API Key. Ce type de credential unique soutient le nœud OpenAI, le sous-nœud OpenAI Chat Model utilisé par AI Agent, Embeddings OpenAI et LM OpenAI.
- Credentials → Add Credential → OpenAI.
- API Key: votre clé Venice. Organization ID: laissez vide.
- Base URL:
https://api.venice.ai/api/v1. - Enregistrez — n8n teste la credential contre
/modelssur cette URL de base.
Ajoutez un nœud OpenAI Chat Model et attachez cette credential. Son sélecteur de modèle appelle GET /models contre l’URL de base configurée, donc les IDs de modèle Venice se chargent une fois que la credential pointe sur Venice. Un Options → Base URL par nœud override existe aussi, prenant priorité sur la credential, si un workflow doit un endpoint différent. Jumelez le nœud Chat Model avec un nœud AI Agent et un outil comme couvert dans le first n8n workflow lab ; les concepts d’appel d’outils en général sont dans what is agentic AI, et connecter un serveur MCP en tant qu’outil est dans MCP servers explained.
Pour n’importe quoi que le nœud du modèle de chat ne couvre — génération d’image, un appel de streaming brut — utilisez le nœud HTTP Request. Définissez Authentication → Generic Credential Type, puis Generic Auth Type → Bearer Auth et collez uniquement le token (pas le préfixe Bearer) ; n8n construit l’en-tête Authorization: Bearer <token>. Pointez URL sur https://api.venice.ai/api/v1/image/generate, méthode POST :
{
"model": "venice-sd35",
"prompt": "A dark server room with a single glowing rack",
"width": 1024,
"height": 1024,
"format": "webp"
}
Pour l’import curl, les tentatives et le comportement général du nœud HTTP Request, voir le first n8n workflow lab ; pour choisir n8n plutôt qu’un outil d’automatisation SaaS d’abord, voir n8n vs Make vs Zapier.
Pièges
Clés dans le JSON du workflow exporté. n8n stocke les noms et IDs de credential dans le JSON exporté, pas la valeur secrète. Mais un nœud HTTP Request construit à partir d’une commande curl collée peut intégrer directement un en-tête Authorization: Bearer sk-... dans les paramètres du nœud. Lisez le JSON exporté avant de le partager, et préférez Generic Credential Type / Bearer Auth afin que le secret vive dans une credential, pas dans les paramètres.
Coder en dur un ID de modèle qui est déprécié. Un ID épinglé peut retourner 410 Gone après la fenêtre de préavis si Venice ne peut pas l’auto-router. Regardez le champ deprecation sur GET /models, ou appelez un trait comme default afin que la résolution d’alias de Venice absorbe le changement.
venice.ai au lieu de api.venice.ai. Le domaine nu retourne l’HTML de l’application web ou un 404 pour les appels API, pas une erreur JSON — facile à confondre avec une mauvaise clé quand c’est vraiment le mauvais hôte.
Supposant « privé » signifie aucune journalisation de quoi que ce soit. Venice sépare le contenu du prompt/réponse (pas retenu pour l’inférence normale) des métadonnées opérationnelles qu’il dit pouvoir traiter. Le mode de confidentialité est le levier pour le contenu ; ce n’est pas une affirmation de zéro métadonnées.
Typos silencieux dans venice_parameters. Les clés inconnues sont ignorées, pas rejetées. Une enabled_web_search mal orthographiée retourne 200 avec la recherche simplement non appliquée — vérifiez que le comportement a changé, pas juste le code d’état.
FAQ
Quelle URL de base utilise-je pour l’API Venice AI ?
https://api.venice.ai/api/v1, pas venice.ai. Le domaine venice.ai sert l’application web, donc les demandes là-bas retournent une page HTML ou un 404. Pointez le base_url/baseURL de votre SDK OpenAI sur le sous-domaine api, gardez le suffixe /api/v1 et envoyez votre clé en tant que jeton Bearer.
Puis-je utiliser le SDK OpenAI avec Venice AI, ou ai-je besoin d’un client séparé ?
Vous utilisez le même SDK OpenAI. Créez le client avec votre clé Venice API et l’URL de base Venice à la place d’OpenAI. Les complétions de chat, le streaming et les appels d’outils fonctionnent de la même manière ; les options uniquement à Venice se déplacent par le paramètre extra_body du SDK en tant qu’objet venice_parameters.
Que contrôlent réellement les venice_parameters ?
Comportement unique à Venice en dehors de la spécification OpenAI : recherche web intégrée (enable_web_search), citations de sources, grattage d’URL, personas de personnages Venice (character_slug), blocs de réflexion des modèles de raisonnement et si le prompt système par défaut de Venice est ajouté au vôtre (include_venice_system_prompt). Les clés inconnues à l’intérieur de l’objet sont silencieusement ignorées, donc une faute de frappe échoue tranquillement plutôt qu’avec une erreur.
Venice AI garde-t-il mes prompts ?
Selon la documentation de Venice, le proxy relaie les demandes sur TLS sans stocker le contenu du prompt ou de la réponse pour l’inférence normale, et chaque modèle ajoute l’un des quatre modes de confidentialité : Anonymous, Private (zéro rétention appliquée par contrat), TEE (isolé matériellement) ou E2EE (chiffré à une enclave vérifiée). Venice dit qu’il peut toujours conserver les métadonnées opérationnelles, comme les horodatages, les comptages de tokens et les données de facturation, séparés du contenu lui-même.
Puis-je connecter Venice AI à n8n comme modèle de chat ?
Oui. Créez une credential OpenAI dans n8n, collez votre clé Venice dans API Key et définissez Base URL à https://api.venice.ai/api/v1. Cette credential est partagée par le nœud OpenAI, le sous-nœud OpenAI Chat Model, Embeddings OpenAI et LM OpenAI. Pour les appels bruts ou la génération d’images, utilisez plutôt le nœud HTTP Request avec Generic Credential Type → Bearer Auth.
Comment ce guide a été vérifié
Rédigé à la main à partir de la documentation officielle, chaque commande revérifiée, puis relu une seconde fois avant publication. Dernière relecture le .
Sources officielles consultées pour cet article
- docs.venice.ai/api-reference/api-spec
- docs.venice.ai/getting-started/quick-start
- docs.venice.ai/guides/getting-started/generating-api-key
- docs.venice.ai/guides/getting-started/openai-migration
- docs.venice.ai/api-reference/endpoint/chat/completions
- docs.venice.ai/api-reference/endpoint/chat/model_feature_suffix
- docs.venice.ai/api-reference/endpoint/models/list
- docs.venice.ai/api-reference/endpoint/models/traits
- docs.venice.ai/models/image
- docs.venice.ai/guides/media/image-generation
- docs.venice.ai/api-reference/endpoint/image/generate
- docs.venice.ai/api-reference/rate-limiting
- docs.venice.ai/overview/privacy
- docs.venice.ai/overview/deprecations
- docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai
- docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest
- docs.n8n.io/integrations/builtin/credentials/httprequest

