Tutoriel
Comment utiliser Claude Sonnet 4.6 via l'API hiapi
Ce que vous allez construire
Un exemple d'intégration fonctionnel : appeler Claude Sonnet 4.6 via l'API Chat Completions compatible OpenAI de hiapi — une seule requête suffit pour renvoyer une véritable complétion, et nous couvrons également les modèles de production que vous utiliserez réellement une fois la démo validée (sortie en streaming, appel d'outils, réflexion adaptative).
Prérequis : une clé API hiapi. Récupérez-la depuis la console — c'est une chaîne sk-..., et la même clé fonctionne pour tous les modèles activés sur votre compte, pas seulement celui-ci.
Tout ce qui suit a été vérifié en exécution réelle contre l'API en direct au moment de la rédaction.
Exemple minimal fonctionnel
Claude Sonnet 4.6 est un modèle texte sur le point de terminaison standard Chat Completions — et non le flux asynchrone /v1/tasks que hiapi utilise pour les modèles d'image/vidéo/audio. Une requête, une réponse, sans polling.
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer sk-<your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [
{"role": "user", "content": "Explain how an HTTP cache works in three short paragraphs."}
]
}'
Réponse (tronquée) :
{
"id": "msg_bdrk_011Cf8Bo25qCVFFQF5ETk8Wf",
"model": "claude-sonnet-4-6",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "..." },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 13, "completion_tokens": 4, "total_tokens": 17 }
}
Le même appel en Python avec uniquement requests :
import requests
resp = requests.post(
"https://api.hiapi.ai/v1/chat/completions",
headers={"Authorization": "Bearer sk-<your-api-key>"},
json={
"model": "claude-sonnet-4-6",
"messages": [
{"role": "user", "content": "Explain how an HTTP cache works in three short paragraphs."}
],
},
timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])
print(data["usage"]) # prompt_tokens / completion_tokens / total_tokens
Comme la structure est compatible OpenAI, ce code fonctionne aussi sans modification avec les SDK officiels openai Python/JS — il suffit de pointer base_url vers https://api.hiapi.ai/v1 et de passer votre clé hiapi.
Modèles de production
Sortie en streaming
Définissez "stream": true et lisez les Server-Sent Events. Chaque bloc porte un fragment delta.content ; le flux se termine sur le dernier bloc avec finish_reason: "stop", suivi de la sentinelle [DONE] :
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer sk-<your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "Count 1 to 3"}],
"stream": true
}'
data: {"choices":[{"delta":{"content":"","role":"assistant"},"finish_reason":null,"index":0}]}
data: {"choices":[{"delta":{"content":"Here"},"finish_reason":null,"index":0}]}
data: {"choices":[{"delta":{"content":" you"},"finish_reason":null,"index":0}]}
data: {"choices":[{"delta":{},"finish_reason":"stop","index":0}]}
data: [DONE]
Accumulez choices[0].delta.content à travers les blocs pour reconstituer le texte complet.
Appel d'outils
Déclarez les fonctions de la même manière qu'avec OpenAI, puis rejouez au tour suivant le message tool_calls de l'assistant ainsi qu'un message de résultat tool :
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer sk-<your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "What is the status of task demo-123?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_task_status",
"description": "Look up a task by ID.",
"parameters": {
"type": "object",
"properties": {"task_id": {"type": "string"}},
"required": ["task_id"],
"additionalProperties": false
}
}
}],
"tool_choice": "auto"
}'
La réponse renvoie finish_reason: "tool_calls", avec le nom de la fonction et les arguments encodés en JSON dans choices[0].message.tool_calls. Exécutez votre fonction localement, puis renvoyez le résultat dans la requête suivante sous forme de message role: "tool" avec un tool_call_id correspondant — le modèle reprend à partir de là.
Réflexion adaptative
Claude Sonnet 4.6 prend en charge une étape de raisonnement activable à la demande. Ajoutez "thinking": {"type": "adaptive"} et choisissez le niveau d'effort via output_config.effort (low, medium, high ou max) :
{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "Compare two approaches and state the trade-offs."}],
"thinking": {"type": "adaptive"},
"output_config": {"effort": "high"}
}
La trace de raisonnement lisible est renvoyée via choices[0].message.reasoning_content ; le tableau brut reasoning_details porte des métadonnées de signature que vous devez conserver tel quel si vous poursuivez la conversation et entrez dans l'appel d'outils — ne le parsez pas, ne l'affichez pas et n'inventez rien, transmettez-le simplement tel quel dans la requête suivante.
Gestion des erreurs
Un échec d'authentification renvoie un HTTP 401 avec une enveloppe d'erreur hiapi_error :
{
"error": {
"code": "permission_denied",
"message": "This API key is invalid. Check that it is correct or use another API key and try again.",
"type": "hiapi_error"
}
}
Vérifiez response.status_code avant d'accéder à response.json()["choices"], et si une escalade est nécessaire, consignez error.request_id — l'équipe support peut ainsi retrouver l'appel précis.
Idempotence et nouvelles tentatives
Les appels Chat Completions ne sont pas idempotents par ID de requête comme le sont les tâches /v1/tasks — une requête réessayée est une nouvelle complétion. Pour le trafic de production, enveloppez l'appel avec vos propres nouvelles tentatives avec backoff pour gérer les 5xx/timeouts, et fixez une limite max_tokens pour éviter qu'une tempête de nouvelles tentatives n'entraîne une facturation illimitée.
Lectures associées
- Référence du modèle Claude Sonnet 4.6 — tableau complet des paramètres, schéma de réponse et davantage d'exemples de requêtes directement issus de la documentation hiapi.
- Authentification — comment fonctionnent les clés API hiapi et comment les renouveler.
- Tarifs hiapi — tarifs par token en temps réel pour Claude Sonnet 4.6 et tous les autres modèles activés.
Questions fréquentes
claude-sonnet-4-6 est-il l'ID de modèle exact que je dois envoyer ?
Oui — envoyez la chaîne brute claude-sonnet-4-6 dans le champ model. hiapi la route vers Claude Sonnet 4.6 d'Anthropic derrière une interface compatible OpenAI, donc aucun préfixe spécifique au fournisseur n'est nécessaire.
Cela utilise-t-il le même flux /v1/tasks que les modèles d'image et de vidéo de hiapi ?
Non. Les modèles texte comme Claude Sonnet 4.6 utilisent le point de terminaison synchrone POST /v1/chat/completions — une requête, une réponse (ou un flux SSE). /v1/tasks est réservé aux modèles média (image, vidéo, audio), qui s'exécutent en asynchrone et renvoient une URL interrogeable ou un callback.
Puis-je utiliser le SDK OpenAI au lieu de curl/requests natifs ?
Oui. Comme le point de terminaison est compatible OpenAI, pointez simplement base_url du SDK officiel openai vers https://api.hiapi.ai/v1 et passez votre clé hiapi comme api_key — le chat de base, le streaming ou l'appel d'outils ne nécessitent aucune autre modification de code.
Claude Sonnet 4.6 prend-il en charge les entrées d'image ?
Oui, via des blocs de contenu — définissez le content du message comme un tableau contenant un bloc type: "image_url" dont image_url.url pointe vers une URL d'image publique, en parallèle de vos blocs texte.
Que se passe-t-il si j'omets thinking ?
Selon la version actuelle, la réflexion adaptative est activable à la demande — omettez le champ thinking (ou définissez thinking.type sur disabled) et le modèle répondra directement, sans reasoning_content dans la réponse.
Où puis-je consulter la tarification actuelle avant de lancer de gros volumes ? La page de tarification de hiapi liste les tarifs par token en temps réel pour Claude Sonnet 4.6 — consultez-la avant d'établir un budget, car les tarifs peuvent changer et cet article ne code pas en dur un chiffre potentiellement obsolète.
Articles similaires
Voir tous les articles →-
Tutoriel
Comment appeler hailuo-2.3-fast/image-to-video via l'API HiAPI : curl et Python en pratique
La première requête exploitable du palier image-vers-vidéo rapide et économique — de l'ID du modèle au téléchargement du MP4
-
Tutoriel
Comment appeler hailuo-2.3/text-to-video via l'API HiAPI : curl, Python et exemples de requêtes exécutables
-
Tutoriel
Utiliser Kandinsky 6.0 Pro texte-vers-vidéo sur HiAPI : tutoriel curl et Python
Démonstration pratique axée sur la requête : construire l'appel du prompt au clip vidéo, soumettre la requête, interroger l'état d'achèvement et télécharger le résultat