POST /responses accepte les requêtes au format Responses API d’OpenAI et renvoie des éléments de sortie typés tels que reasoning, message et function_call. Il fonctionne avec tous les modèles de texte Venice et accepte une clé API ou l’authentification par portefeuille x402.
Quand l’utiliser
Utilisez/responses lorsque votre client parle déjà le format Responses, par exemple les agents de code et les SDK construits sur responses.create d’OpenAI. C’est la meilleure façon d’exécuter des agents de type Codex sur les modèles OpenAI via Venice.
Pour les modèles non-OpenAI, /chat/completions reste l’option la plus complète : il prend en charge les sorties structurées, les entrées de fichiers, les modèles E2EE et toutes les options de venice_parameters sur tous les modèles.
Démarrage rapide
output d’éléments typés et un objet usage :
Comment Venice traite les demandes
Venice sert chaque requête selon l’un de deux modes.- Natif. Les requêtes destinées aux modèles OpenAI sont transmises à la Responses API d’OpenAI sans traduction. Cela couvre tous les modèles
openai-*saufopenai-gpt-oss-120b. Les éléments de réponse, les ID, le raisonnement et les événements de stream sont renvoyés exactement tels qu’OpenAI les retourne. - Traduit. Tous les autres modèles, ainsi que
openai-gpt-oss-120b, passent par une couche de traduction : Venice convertit la requête en requête Chat Completions, l’exécute, puis reconvertit le résultat. Tout ce que le format Chat Completions ne peut pas exprimer est ignoré ou rejeté. Consultez Limitations.
web_search, web_search: true ou venice_parameters.enable_web_search), x_search, venice_parameters.character_slug et venice_parameters.enable_web_scraping. Les requêtes contenant des champs que le mode natif ne peut pas servir, listés dans Mode natif, basculent de la même manière.
Vous pouvez contrôler et inspecter le mode à l’aide d’en-têtes :
Les conversations sont sans état
Venice ne stocke pas les réponses, quel que soit le mode. Envoyez la conversation entière dansinput à chaque requête, en y ajoutant les éléments output précédents et les éventuels résultats d’outils.
store est toujours traité comme false. previous_response_id et conversation ne peuvent pas être résolus, car rien n’est stocké. Avec le mode auto par défaut, ces requêtes sont servies en mode traduit, où ces champs sont ignorés. Avec x-venice-responses-mode: native, elles renvoient 400.
Mode natif
Le mode natif prend en charge les fonctionnalités Responses de l’endpoint d’OpenAI lui-même, notamment :instructions, appliquées telles qu’écrites.- Les sorties structurées avec
text.format. OpenAI valide les schémas de manière stricte : un schéma invalide renvoie donc 400. Par exemple,strict: trueexigeadditionalProperties: false, etjson_objectexige que le mot « json » figure quelque part dans l’entrée. - Les outils de type fonction et
tool_choiceau format Responses d’OpenAI{"type": "function", "name": "..."}, ainsi que les appels d’outils parallèles. - Les outils exécutés côté client :
custom(entrée libre),namespace,tool_search,apply_patch,shelletlocal_shellavec un environnement local, ainsi que computer use. - Les résumés de raisonnement, activés par défaut. Les modèles de raisonnement renvoient toujours
encrypted_contentsur les éléments de raisonnement. Renvoyez ces éléments dansinputau tour suivant pour conserver le contexte de raisonnement du modèle. - Le prompt caching avec
prompt_cache_key. Venice limite la portée de la clé à votre compte, de sorte qu’elle ne partage jamais de cache avec d’autres utilisateurs, et renvoie votre clé d’origine dans la réponse. - Les entrées d’images, y compris
detail: "original", etinput_fileavecfile_dataen ligne. - Les modèles Pro (
*-pro), qui exécutent automatiquement le mode de raisonnement Pro d’OpenAI.
instructions s’appliquent sans modification. Définissez venice_parameters.include_venice_system_prompt: true pour l’ajouter.
Les éléments suivants nécessitent un stockage côté serveur ou des ressources hébergées par le fournisseur ; ils ne sont donc pas disponibles nativement :
Ces restrictions s’appliquent également aux outils chargés plus tard dans la conversation via les éléments
additional_tools ou tool_search_output. Un outil de recherche Venice déclaré à cet endroit fait aussi basculer la requête en mode traduit.
Les champs de requête non reconnus sont traités de la même façon : avec auto, la requête est servie en mode traduit, et avec native, elle renvoie 400.
Streaming
Définissezstream: true pour recevoir des server-sent events. Les deux modes terminent le stream par data: [DONE].
En mode natif, les événements sont exactement ceux d’OpenAI, y compris response.reasoning_summary_text.delta pour les résumés de raisonnement et response.function_call_arguments.delta pour les arguments d’outils.
En mode traduit, les événements sont response.created, response.output_item.added, response.content_part.added, response.output_text.delta, response.function_call_arguments.delta, response.content_part.done, response.output_item.done, puis enfin response.completed, response.incomplete ou response.failed. Deux événements diffèrent de ceux d’OpenAI :
- Le texte de raisonnement est streamé sous forme de
response.reasoning.delta, et non via les événements de résumé de raisonnement d’OpenAI. - Lorsqu’une recherche web s’exécute, un événement
response.web_search.donetransporte les résultats de recherche avant que la réponse ne soit streamée.
Paramètres du mode traduit
La recherche web est facturée comme augmentation par recherche, comme sur
/chat/completions.
Quelques comportements du mode traduit à anticiper :
- Les
instructionssont appliquées sous forme de message système. - Les outils personnalisés renvoient des éléments
custom_tool_callavec l’inputbrut. Si un modèle renvoie des arguments d’outil personnalisé mal formés, ou appelle un outil non déclaré dans la requête, l’appel est renvoyé comme unfunction_callordinaire avec les arguments d’origine, afin que votre client puisse signaler une erreur d’outil et continuer. - Pendant le streaming de l’entrée d’un outil personnalisé, son élément d’appel et les éléments suivants peuvent n’arriver qu’une fois l’entrée complète. Le stream envoie des commentaires SSE keep-alive pendant l’attente.
- L’option d’image
detail: "original"est envoyée commehighaux fournisseurs qui ne la prennent pas en charge.
Limitations
Ces lacunes s’appliquent au mode traduit : tous les modèles non-OpenAI,openai-gpt-oss-120b, et les requêtes vers des modèles OpenAI qui utilisent des fonctionnalités propres à Venice. Sauf indication contraire, la requête aboutit quand même et le champ est ignoré.