API Hop

Documentation

Documentation API Hop

Responses multimodal OpenAI

API Responses compatible OpenAI. Cet endpoint utilise `input` au format OpenAI et prend en charge le texte, les URL publiques d’images, les fichiers PDF, les appels d’outils, les options de raisonnement et les paramètres de streaming.

POSThttps://api.apihop.ai/openai/responses

API Responses compatible OpenAI. Cet endpoint utilise input au format OpenAI et prend en charge le texte, les URL publiques d’images, les fichiers PDF, les appels d’outils, les options de raisonnement et les paramètres de streaming.

text
POST https://api.apihop.ai/openai/responses

Authentification

Toutes les requêtes nécessitent une authentification par jeton Bearer.

http
Authorization: Bearer YOUR_API_KEY

Corps

modelstringobligatoirePar défaut: gpt-5.4

Modèles actuellement actifs avec prise en charge de Responses :

  • gpt-5.4
  • gpt-5.5
  • gpt-5.6-sol
  • gpt-5.6-terra
  • gpt-6-astra

Consultez le Catalogue de modèles pour les modèles visibles par la clé API actuelle.

inputstring | object[]

Contenu d’entrée. Obligatoire sauf si un previous_response_id non vide est fourni. Omettre les deux champs ou utiliser un type d’entrée invalide renvoie 400 avant facturation.

Formes prises en charge :

  • Une chaîne, équivalente à une entrée textuelle user.
  • Un tableau d’éléments d’entrée pour l’historique de conversation, les entrées multimodales et les résultats d’appels d’outils.

Chaque objet du tableau d’entrée peut contenir les champs suivants :

typestring

Type d’élément d’entrée.

Valeurs courantes :

  • message : une entrée de message.
  • function_call_output : le résultat d’un appel d’outil de fonction.
rolestring

Rôle lorsque type=message.

Valeurs courantes :

  • developer
  • system
  • user
  • assistant
contentstring | object[]

Contenu du message.

Utilisez un tableau de blocs de contenu pour les requêtes multimodales. Les blocs prennent en charge :

typestring

Type de bloc de contenu.

Actuellement pris en charge :

  • input_text
  • input_image
  • input_file
textstring

Contenu textuel lorsque type=input_text.

image_urlstring

URL publique d’image lorsque type=input_image.

Seules les URL d’images http:// ou https:// accessibles publiquement sont prises en charge. Les URL de données Base64 comme data:image/...;base64,... ne sont pas acceptées.

detailstringPar défaut: auto

Niveau de détail de l’image lorsque type=input_image.

Valeurs courantes :

  • auto
  • low
  • high
file_datastring

URL de données du contenu du fichier lorsque type=input_file. Les PDF peuvent utiliser data:application/pdf;base64,....

filenamestring

Nom du fichier lorsque type=input_file.

instructionsstring

Instructions système ou développeur insérées dans le contexte du modèle.

max_output_tokensinteger

Nombre maximal facultatif de tokens de sortie, sous forme d’entier positif. Omettez ce champ pour utiliser la valeur par défaut du fournisseur pour le modèle choisi. Selon le modèle, ce budget peut inclure le raisonnement et le texte final. Un petit budget peut tronquer la réponse ou être épuisé avant le texte final ; l’augmenter peut accroître le coût.

streambooleanPar défaut: false

Indique si la réponse doit être diffusée en streaming.

  • false : renvoie une réponse complète
  • true : renvoie des événements SSE au format OpenAI Responses
temperaturenumberPar défaut: 1.0

Température d’échantillonnage, généralement de 0 à 2.

top_pnumberPar défaut: 1.0

Paramètre d’échantillonnage par noyau, généralement de 0 à 1.

textobject

Configuration de la sortie textuelle.

text.formatobject

Configuration du format de texte, comme { "type": "text" } ou un schéma JSON.

text.verbositystring

Niveau de détail de la sortie, comme low, medium ou high. La prise en charge dépend du modèle choisi.

toolsobject[]

Définitions d’outils. La disponibilité dépend du modèle choisi et des fonctions disponibles.

tool_choicestring | object

Politique de sélection d’outils.

parallel_tool_callsboolean

Indique si les appels d’outils parallèles sont autorisés.

reasoningobject

Options liées au raisonnement.

includestring[]

Champs supplémentaires à inclure dans la réponse.

prompt_cache_keystring

Clé de cache des consignes permettant la réutilisation du cache.

prompt_cache_retentionstring

Politique de conservation du cache des consignes. Les valeurs acceptées dépendent du modèle choisi et des fonctions disponibles.

safety_identifierstring

Identifiant stable de l’utilisateur final pour les contrôles de sécurité.

storeboolean

Indique si l’état de réponse peut être conservé.

Différences de paramètres entre modèles

  • Le transfert natif compatible OpenAI Responses conserve top_p dans la requête au fournisseur ; validation et échantillonnage dépendent du modèle et du fournisseur choisis. Les contrôles du 2026-09-26 ont accepté top_p: 0.9 pour gpt-5.5, gpt-5.6-sol et gpt-5.6-terra. L’acceptation et le transfert ne prouvent pas un effet d’échantillonnage ni ne garantissent la prise en charge d’autres valeurs, modèles ou requêtes futures. Commencez par une requête minimale.
  • La prise en charge décrite ici concerne uniquement l’endpoint normal /openai/responses. Elle n’implique pas que le même modèle accepte /openai/responses/compact, WebSocket ou previous_response_id avec état.
  • Les cinq modèles GPT ci-dessus n’ont actuellement aucun canal Compact vérifié. Les requêtes Compact sont rejetées avant facturation sans canal explicitement activé. Responses ordinaire et Responses WebSocket restent disponibles.

Exemples de requêtes

Les exemples ci-dessous fournissent input. Une continuation peut omettre input lorsqu’elle fournit un previous_response_id valide et que le canal choisi prend en charge les continuations avec état. Un ID de réponse n’active pas cette capacité sur un canal non compatible. Les résultats d’outils restent des éléments d’entrée valides, y compris function_call_output.

Texte

json
{
  "model": "gpt-5.4",
  "input": "Hello, introduce yourself in one sentence."
}

Paramètres au style Codex CLI

json
{
  "model": "gpt-5.5",
  "input": "Reply with READY only.",
  "reasoning": {
    "effort": "xhigh"
  },
  "store": false,
  "text": {
    "verbosity": "low"
  },
  "stream": true
}

Compréhension d’images

json
{
  "model": "gpt-5.4",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "What is in this image?"
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/cat.png",
          "detail": "high"
        }
      ]
    }
  ]
}

Entrée de fichiers

Utilisez file_data et filename pour envoyer un PDF. file_data doit être une URL de données complète.

json
{
  "model": "gpt-5.4",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Summarize the key points in this PDF."
        },
        {
          "type": "input_file",
          "file_data": "data:application/pdf;base64,JVBERi0xLjQKJc...",
          "filename": "report.pdf"
        }
      ]
    }
  ]
}

Entrée d’images et de fichiers

json
{
  "model": "gpt-5.4",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Give three conclusions based on the image and attachment."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/chart.png",
          "detail": "high"
        },
        {
          "type": "input_file",
          "file_data": "data:application/pdf;base64,JVBERi0xLjQKJc...",
          "filename": "notes.pdf"
        }
      ]
    }
  ]
}

Sortie en streaming

json
{
  "model": "gpt-5.4",
  "stream": true,
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Explain this diagram step by step."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/diagram.png"
        }
      ]
    }
  ]
}

Réponse

Les réponses sans streaming suivent le format OpenAI Responses. Les champs réels peuvent varier selon les capacités du modèle choisi.

idstring

Identifiant unique de la réponse.

objectstring

Type d’objet de réponse, généralement response.

created_atinteger

Horodatage de création.

modelstring

Modèle effectivement utilisé.

outputobject[]

Liste d’éléments de sortie. Les éléments courants comprennent message, function_call et les sorties liées aux outils.

usageobject

Statistiques d’utilisation des tokens, comme input_tokens, output_tokens et total_tokens.

Exemple réussi

json
{
  "id": "resp_123",
  "object": "response",
  "created_at": 1766534400,
  "model": "gpt-5.4",
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "text": "The image shows a cat, and the attachment is a document about pet care."
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 128,
    "output_tokens": 42,
    "total_tokens": 170
  }
}

Réponse en streaming

Avec stream=true, l’endpoint renvoie des événements envoyés par le serveur (SSE).

text
event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":"The image"}

event: response.completed
data: {"type":"response.completed","response":{"id":"resp_123"}}

Lisez les événements jusqu’à response.completed ou la fermeture de la connexion.

Réponse d’erreur

Consultez Codes d’erreur et dépannage pour la référence complète des codes, les différences de protocole et les étapes de diagnostic.

Les erreurs HTTP générées par la plateforme utilisent les champs plats ci-dessous plutôt qu’une enveloppe error. Certaines erreurs fournisseur peuvent conserver leur structure d’origine ; les erreurs dans un flux SSE déjà commencé ne suivent pas cet exemple de réponse HTTP.

json
{
  "code": 40000,
  "message": "Insufficient credit. Required: 30000, Available: 20000",
  "type": "api_error"
}

Remarques

  • L’endpoint Responses utilise input, pas messages. Si votre client envoie uniquement messages, utilisez /openai/v1/chat/completions.
  • L’entrée d’image utilise input_image ; image_url doit être une URL publique http:// ou https://. Les URL de données Base64 ne sont pas acceptées pour les images.
  • L’entrée de fichier utilise input_file. Pour les PDF, utilisez file_data et filename ; file_data doit être une URL complète data:application/pdf;base64,....
  • Les entrées/sorties audio, outils de génération d’images, recherche de fichiers et autres capacités avancées dépendent du modèle choisi et des fonctions disponibles.
  • Les champs de cette page constituent le contrat public actuel des requêtes Responses ; ne supposez pas que des champs non listés sont disponibles.
  • /openai/responses est le chemin public recommandé.
  • /v1/responses suit le même contrat public de requête et de réponse.
  • /compat/v1/responses suit le même contrat public de requête et de réponse.
  • /openai/v1/responses suit le même contrat public de requête et de réponse.