Documentation API Hop
Chat Completions commun
API de chat unifiée pour changer de modèle textuel avec le paramètre `model`. Le format de requête est compatible avec OpenAI Chat Completions.
https://api.apihop.ai/v1/chat-completionsAPI de chat unifiée pour changer de modèle textuel avec le paramètre model. Le format de requête est compatible avec OpenAI Chat Completions.
Claude Sonnet 4.6 (claude-sonnet-4-6) est pris en charge par le fournisseur amont, mais n’est actuellement pas publié sur RequestBeam. Il ne constitue pas un modèle d’intégration par défaut actif. Avant tout appel, confirmez votre accès avec votre propre réponse de GET https://api.apihop.ai/v1/models.
Cet endpoint renvoie par défaut une réponse JSON complète. Définissez explicitement stream: true pour obtenir le streaming SSE.
POST https://api.apihop.ai/v1/chat-completionsAuthentification
Toutes les requêtes nécessitent une authentification par jeton Bearer.
Authorization: Bearer YOUR_API_KEYSi l’authentification échoue, vérifiez :
- Que la clé API est correcte
- Que la clé est valide pour cette URL de base API
- Que l’en-tête de requête est correctement orthographié
- Qu’un proxy ne réécrit pas l’en-tête d’autorisation
Corps
modelstringobligatoirePar défaut: gpt-5.4ID des modèles textuels documentés (confirmez l’accès avec GET https://api.apihop.ai/v1/models) :
- OpenAI:
gpt-5.4,gpt-5.5,gpt-5.6-sol,gpt-5.6-terra,gpt-6-astra - Anthropic:
claude-fable-5,claude-fable-5-1,claude-opus-4-6,claude-opus-4-7,claude-opus-4-8,claude-opus-5,claude-opus-5-5,claude-sonnet-5,claude-sonnet-5-5 - DeepSeek:
deepseek-v4-flash,deepseek-v4-pro,deepseek-v4.1-flash
(V4.1 Flash est un ID distinct, disponible uniquement après déploiement et activation ; consultez GET https://api.apihop.ai/v1/models).
- Gemini:
gemini-3.6-flash,gemini-3.7-flash,gemini-3.8-flash,gemini-3.5-flash-lite,gemini-4-argon(après déploiement et activation) - Kimi:
kimi-k3 - MiniMax:
minimax-m3
Consultez le Catalogue de modèles pour la liste complète et les modèles visibles par la clé actuelle. Utilisez votre propre réponse de GET https://api.apihop.ai/v1/models comme source de disponibilité actuelle. Consultez les guides DeepSeek, Gemini, Kimi et MiniMax pour les conseils de sélection et exemples propres à chaque famille.
messagesobject[]obligatoireMessages du chat. Chaque message doit inclure :
role:system,userouassistantcontent: contenu du message
Exemple :
[
{"role": "system", "content": "You are a helpful Python tutor."},
{"role": "user", "content": "How should I learn programming?"}
]Limites d’échantillonnage propres au modèle : gpt-6-astra n’accepte pas les anciens champs temperature, top_p ou top_logprobs ; omettez-les même si un ancien client les inclut. Le Playground GPT-6 Astra de RequestBeam masque aussi les anciens contrôles d’échantillonnage et de pénalités. claude-sonnet-5 a rejeté top_p lors d’une vérification d’intégration documentée ; omettez-le aussi pour ce modèle. Transmettre un champ optionnel via un proxy ne prouve pas sa prise en charge par le modèle du fournisseur.
temperaturenumberPar défaut: 1.0Température d’échantillonnage. Les clients compatibles OpenAI utilisent souvent de 0 à 2, mais le modèle choisi décide de la validation finale.
max_tokensintegerNombre 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 ; les valeurs par défaut et limites maximales varient selon le modèle et la configuration amont.
Selon le modèle, le budget peut inclure les tokens de raisonnement et le texte final. Un petit budget peut provoquer finish_reason: "length", tronquer la réponse ou être épuisé avant le texte final. L’augmenter peut accroître le coût.
max_completion_tokensintegerAlternative de compatibilité facultative à max_tokens, avec les mêmes considérations de budget. Un modèle peut n’accepter qu’un de ces champs ; commencez donc avec un corps minimal lors d’un changement de modèle. Omettez les deux pour utiliser la valeur par défaut du fournisseur.
streambooleanPar défaut: falseIndique si la réponse doit être diffusée en streaming.
true: renvoie des événements envoyés par le serveur (SSE)false: renvoie une réponse complète
top_pnumberPar défaut: 1.0Paramètre d’échantillonnage par noyau. Les clients compatibles OpenAI utilisent souvent de 0 à 1 ; le modèle choisi effectue la validation finale.
frequency_penaltynumberPar défaut: 0Pénalité de fréquence. Les clients compatibles OpenAI utilisent souvent de -2.0 à 2.0 ; le modèle choisi effectue la validation finale.
presence_penaltynumberPar défaut: 0Pénalité de présence. Les clients compatibles OpenAI utilisent souvent de -2.0 à 2.0 ; le modèle choisi effectue la validation finale.
stopstring | arraySéquence d’arrêt ou tableau de séquences d’arrêt. Le modèle choisi détermine le nombre accepté et le comportement.
nintegerPar défaut: 1Nombre de réponses à générer. Utilisez un nombre comme 1, pas une chaîne entre guillemets.
Différences de paramètres entre modèles
Les modèles textuels actuels acceptent les requêtes de chat minimales avec et sans streaming, mais l’acceptation et les effets des paramètres optionnels varient selon le modèle et son implémentation de compatibilité.
La dernière vérification du 2026-09-26 a accepté claude-fable-5 avec temperature: 0 et renvoyé du texte. Elle a rejeté claude-sonnet-5 avec top_p: 0.9, avec HTTP 400 et top_p is deprecated. Omettez top_p pour ce modèle. L’acceptation ne démontre ni effet sur l’échantillonnage ni garantie pour d’autres modèles ou requêtes ultérieures ; ne supposez pas que tous les paramètres d’échantillonnage sont pris en charge.
Les contrôles OpenAI du 2026-09-26 ont accepté stop pour gpt-5.6-sol et gpt-5.6-terra. L’acceptation peut évoluer avec le fournisseur et ne prouve pas qu’une séquence d’arrêt est effective.
Le transfert natif de chat compatible OpenAI conserve top_p et stop dans la requête au fournisseur. Une route convertissant Chat en Responses conserve top_p mais ne transmet pas stop. Transmettre un champ ne prouve ni sa prise en charge amont ni son effet ; aucun des deux ne bénéficie d’une garantie globale sur toutes les routes.
Commencez par une requête minimale lors d’un changement de modèle, puis vérifiez séparément l’échantillonnage, les séquences d’arrêt et les paramètres avancés d’outils. Pour les séquences d’arrêt, examinez le texte réel et le motif de fin, pas seulement le statut HTTP. HTTP 200 ne prouve pas un effet d’échantillonnage. Les budgets de sortie doivent couvrir le raisonnement et le texte final.
Exemple de requête
{
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "Hello, introduce yourself briefly."
}
],
"stream": false
}Réponse
idstringIdentifiant unique de la réponse.
objectstringType d’objet, généralement chat.completion ou chat.completion.chunk pour le streaming.
createdintegerHorodatage Unix de création.
modelstringIdentifiant du modèle renvoyé dans la réponse.
choicesarrayChoix générés, comprenant contenu du message, index et motif de fin.
usageobjectStatistiques d’utilisation des tokens.
Exemple réussi
{
"id": "chatcmpl-9876543210",
"object": "chat.completion",
"created": 1677652288,
"model": "gpt-5.4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "I am an AI assistant that can help with writing, coding, and analysis."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 28,
"completion_tokens": 42,
"total_tokens": 70
}
}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 de Chat Completions utilisent un corps JSON plat, y compris les erreurs HTTP du fournisseur renvoyées avant le démarrage du flux SSE. Par exemple, HTTP 402 renvoie :
{
"code": 40000,
"message": "Insufficient credit. Required: 30000, Available: 20000",
"type": "api_error"
}code: code numérique d’erreur de plateforme, distinct du statut HTTP et non une chaînemessage: description d’erreur lisible par l’utilisateurtype:api_errorrequestId: identifiant facultatif de requête pour le diagnostic
| Statut HTTP | code | Signification |
|---|---|---|
| 400 | 10000 | Requête invalide |
| 401 | 20000 | Authentification absente ou invalide |
| 402 | 40000 | Crédit insuffisant |
| 403 | 20001 | Accès refusé ou modèle indisponible pour cette clé |
| 404 | 30000 | Modèle ou ressource introuvable |
| 409 | 30001 | Conflit de requête |
| 422 | 10001 | Erreur de validation |
| 429 | 40001 | Limite de débit dépassée |
| 500 | 50003 | Erreur interne |
| 502 | 50000 | Erreur du fournisseur amont |
| 503 | 50001 | Service indisponible |
| 504 | 50002 | Délai de passerelle dépassé |
Vérifiez d’abord le statut HTTP pour déterminer si la requête a réussi, puis comparez le code numérique pour le traitement propre à l’application. Ne comparez pas code à des chaînes comme "400", ne supposez pas qu’il correspond au statut HTTP et n’analysez pas message comme identifiant d’erreur stable. Un champ messages absent ou de type incorrect est rejeté avec HTTP 400 et code: 10000 avant l’appel au fournisseur.
Ce format d’erreur concerne les réponses HTTP de Chat Completions, pas les erreurs dans un flux SSE déjà démarré ni les autres protocoles API. Le catalogue de modèles et les endpoints de protocoles natifs ont leurs propres formats d’erreur documentés.