Skip to main content
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.
Cet endpoint est en bêta et disponible pour tous les utilisateurs de l’API. Les modèles OpenAI sont servis nativement : ils se comportent donc comme la Responses API d’OpenAI elle-même. Tous les autres modèles passent par une couche de traduction qui présente certaines lacunes. Lisez Comment Venice traite les demandes et Limitations avant de bâtir dessus.

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

La réponse contient un tableau 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-* sauf openai-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.
Les requêtes vers des modèles OpenAI qui utilisent une fonctionnalité propre à Venice sont servies en mode traduit afin que la fonctionnalité continue de fonctionner. Cela inclut la recherche web Venice (un outil 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 dans input à 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: true exige additionalProperties: false, et json_object exige que le mot « json » figure quelque part dans l’entrée.
  • Les outils de type fonction et tool_choice au 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, shell et local_shell avec 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_content sur les éléments de raisonnement. Renvoyez ces éléments dans input au 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", et input_file avec file_data en ligne.
  • Les modèles Pro (*-pro), qui exécutent automatiquement le mode de raisonnement Pro d’OpenAI.
Le prompt système Venice est désactivé par défaut en mode natif, afin que vos 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éfinissez stream: 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.done transporte 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 instructions sont appliquées sous forme de message système.
  • Les outils personnalisés renvoient des éléments custom_tool_call avec l’input brut. 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 un function_call ordinaire 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 comme high aux 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é.

Ressources associées