Passer au contenu principal
Anthropic Claude est un système de conversation IA très puissant ; il suffit de saisir une invite pour générer une réponse fluide et naturelle en quelques secondes. L’API Claude Messages est le format d’API natif officiel d’Anthropic. Contrairement au format compatible OpenAI (Chat Completion), elle adopte la structure de requête et de réponse propre à Anthropic, ce qui permet de mieux exploiter les capacités uniques de Claude, telles que l’entrée de contenu multimodal, l’appel d’outils, la réflexion approfondie (Extended Thinking) et d’autres fonctionnalités avancées. Ce document présente principalement le processus d’utilisation de l’API Claude Messages. Grâce à elle, nous pouvons utiliser une interface native cohérente avec celle d’Anthropic officiel pour appeler les fonctionnalités de conversation de Claude.

Processus de demande

Pour utiliser l’API Claude Messages, récupérez d’abord votre API Token depuis la console Ace Data Cloud, et conservez-le pour une utilisation ultérieure. Si vous n’êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion qui vous invitera à vous inscrire et à vous connecter ; une fois cela terminé, vous reviendrez automatiquement sur la page actuelle. Un seul API Token permet d’appeler tous les services de la plateforme, sans avoir besoin d’en demander un séparément pour chaque service. La première demande offre un quota gratuit, permettant une expérience gratuite ; lorsque le quota est insuffisant, vous pouvez recharger votre solde universel dans la console.
📘 Documentation complète : Claude Messages API →

Utilisation de base

Le chemin de requête de l’API Claude Messages est /v1/messages, identique à celui de l’API officielle d’Anthropic. Nous devons fournir au minimum trois paramètres obligatoires :
  • model : sélectionnez le modèle Claude à utiliser. claude-opus-5-5 est fourni uniquement via l’API Messages, prend en charge un contexte de 1 million de Token, une sortie maximale de 128K Token, et active toujours la réflexion adaptative. Le dernier modèle phare est claude-fable-5-1 (contexte de 1 million de Token, sortie maximale de 128K Token) ; l’ancien claude-fable-5 reste conservé pour la compatibilité. claude-sonnet-5-5 a rejoint l’interface de la série native Messages, prend en charge l’entrée d’images et la réflexion adaptative ; ses prix de référence officiels pour l’entrée, la sortie et la lecture du cache sont respectivement de 2, 10 et 0,20 dollars par million de Token.
  • messages : le tableau des messages d’entrée ; chaque message contient role (rôle) et content (contenu), où role prend en charge user et assistant.
  • max_tokens : le nombre maximal de tokens de sortie, utilisé pour limiter la longueur d’une réponse unique.
Paramètres optionnels couramment utilisés :
  • system : l’invite système, utilisée pour définir le comportement et le rôle du modèle.
  • temperature : le caractère aléatoire de la génération, entre 0 et 1 ; plus la valeur est élevée, plus les réponses sont diversifiées.
  • stream : indique si une réponse en streaming est utilisée ; définie sur true, elle permet un retour caractère par caractère.
  • stop_sequences : séquences d’arrêt personnalisées ; le modèle cesse de générer lorsqu’il rencontre ces textes.
  • top_p : paramètre d’échantillonnage nucléaire, utilisé avec temperature pour contrôler le caractère aléatoire de la génération.
  • top_k : échantillonne uniquement parmi les K options ayant la probabilité la plus élevée.
  • tools : définition des outils, utilisée pour permettre au modèle d’appeler des fonctions externes.
  • tool_choice : contrôle la manière dont le modèle utilise les outils fournis.
  • cache_control : crée automatiquement un point d’arrêt de cache au dernier bloc de contenu pouvant être mis en cache dans la requête ; peut également être écrit sur un bloc de contenu spécifique.

Exemple cURL

Exemple Python

Après l’appel, le résultat retourné est le suivant :
Description des champs du résultat retourné :
  • id : l’identifiant unique de ce message.
  • type : toujours message.
  • role : toujours assistant.
  • content : tableau du contenu de la réponse ; chaque élément contient type (tel que text) et le contenu correspondant.
  • model : le nom du modèle qui traite la requête.
  • stop_reason : la raison de l’arrêt. Les valeurs stables incluent end_turn, max_tokens, stop_sequence, tool_use, pause_turn (le contenu actuel de l’assistant peut être renvoyé tel quel pour continuer), refusal et model_context_window_exceeded.
  • stop_sequence : si l’arrêt est dû à une séquence d’arrêt personnalisée, affiche le texte de la séquence d’arrêt correspondante.
  • stop_details : lorsque stop_reason est refusal, peut contenir la catégorie du refus et une explication.
  • usage : statistiques d’utilisation des tokens. input_tokens correspond aux entrées non mises en cache ; cache_creation_input_tokens et cache_read_input_tokens correspondent respectivement à l’écriture et à la lecture du cache ; output_tokens est le nombre total de tokens de sortie. Si output_tokens_details.thinking_tokens est retourné, cette valeur est un sous-ensemble de output_tokens ; ne l’ajoutez pas à nouveau lors du calcul du total ou du coût. Ce détail peut être null ou omis lorsqu’aucun comptage faisant autorité n’est disponible.
  • usage.cache_creation : détail optionnel du TTL d’écriture du cache, contenant ephemeral_5m_input_tokens et ephemeral_1h_input_tokens. Lorsque l’objet existe, la somme des deux est égale à cache_creation_input_tokens ; un champ null ou omis indique qu’aucune ventilation TTL n’est disponible dans la réponse actuelle et ne doit pas être interprété comme 0.
  • usage.cost : les réponses non streaming peuvent contenir un objet de consommation de quota enregistré par Ace Data Cloud, dans lequel amount est la consommation réelle de cette requête, currency est l’unité de mesure, et list_amount est le montant avant remise (le cas échéant). Le prix de base officiel de lecture du cache pour Fable 5.1 est de 0,25 /milliondeToken,etlesprixdebased’eˊcritureducachepour5minuteset1heuresontrespectivementde12,50/million de Token, et les prix de base d’écriture du cache pour 5 minutes et 1 heure sont respectivement de 12,50 et 20 $/million de Token ; le prix réel de la plateforme est converti selon les remises du forfait.

Invite système

L’API Claude Messages prend en charge la définition d’une invite système via le champ system, utilisée pour définir le comportement, le rôle et le contexte du modèle.

Exemple Python

En définissant le prompt system, vous pouvez contrôler précisément le rôle et le comportement de Claude.

Réponse en streaming

Cette interface prend également en charge les réponses en streaming ; définissez le paramètre stream sur true pour obtenir un retour progressif, ce qui est particulièrement adapté à l’implémentation d’un affichage caractère par caractère sur une page web.

Exemple Python

La réponse en streaming est renvoyée au format Server-Sent Events (SSE), chaque ligne étant préfixée par event: et data:. Les types d’événements de streaming incluent :
  • message_start : début du message, contenant les informations de base du message et le nom du modèle.
  • content_block_start : début du bloc de contenu.
  • content_block_delta : mise à jour incrémentielle du bloc de contenu, contenant les nouveaux fragments de texte générés.
  • content_block_stop : fin du bloc de contenu.
  • message_delta : mise à jour incrémentielle au niveau du message, contenant stop_reason et les informations finales de usage. La valeur de référence de output_tokens_details.thinking_tokens doit uniquement être lue depuis le dernier message_delta.usage, ne l’accumulez pas entre les événements.
  • message_stop : fin du message.
L’effet de sortie est le suivant :
Vous pouvez constater que, dans la réponse en streaming, l’événement content_block_delta contient le contenu textuel généré progressivement ; en concaténant tous les text_delta, vous pouvez obtenir la réponse complète.

Exemple JavaScript

Conversation multi-tours

Si vous souhaitez intégrer une fonctionnalité de conversation multi-tours, vous devez alterner les messages avec les rôles user et assistant dans le tableau messages, en transmettant également l’historique des conversations précédentes.

Exemple Python

Le résultat renvoyé est le suivant :
En transmettant l’historique complet de la conversation dans messages, Claude peut fournir des réponses précises en tenant compte du contexte.

Modèle de réflexion approfondie

Le thinking et le thinking summary de Claude sont deux concepts différents : le modèle peut effectuer un raisonnement interne, mais l’API ne renvoie pas la chaîne de pensée brute. Lorsqu’il est nécessaire d’afficher le processus de raisonnement, l’API renvoie un résumé traité. Il est actuellement recommandé d’utiliser l’adaptive thinking pour le modèle actuel, et de contrôler l’investissement global de raisonnement via output_config.effort :
Le bloc thinking dans la réponse se présente comme suit :
  • display: "summarized" renvoie un résumé de réflexion lisible ; ce n’est pas la chaîne de pensée brute.
  • display: "omitted" renvoie thinking: "", mais conserve toujours une signature opaque pour prendre en charge les conversations ultérieures.
  • display: "updates" est le mode beta d’Anthropic, qui nécessite anthropic-beta: thinking-display-updates-2026-08-18. La définition officielle est de masquer le corps du raisonnement et d’afficher de brèves mises à jour de progression entre les appels d’outils. La plateforme transmet ce paramètre et l’en-tête de requête beta tels quels, sans forcer leur réécriture en summarized ; le contenu réel de la sortie dépend de la prise en charge du modèle sélectionné.
  • thinking, output_config, effort, les paramètres d’échantillonnage et les nouveaux champs d’extension sont transmis tels quels. La plateforme ne maintient pas d’énumérations de valeurs ni de restrictions de combinaisons codées en dur par modèle, et ne réécrit pas automatiquement les modes thinking ; l’acceptation de ces paramètres est déterminée par le modèle sélectionné, et les erreurs de paramètres renvoyées par le modèle seront transmises au client.
  • Les valeurs par défaut de display pour Fable 5.1, Fable 5, Opus 5, Sonnet 5, Opus 4.8 et Opus 4.7 sont omitted ; Opus 4.6, Sonnet 4.6 et les modèles antérieurs prenant en charge thinking utilisent summarized par défaut.
  • Display n’affecte que le contenu retourné et la latence de streaming, ne désactive pas le raisonnement et ne réduit pas la facturation des tokens thinking.
  • L’activation de thinking par défaut et la valeur par défaut de display sont deux questions indépendantes. Opus 5 et Sonnet 5 activent adaptive thinking par défaut ; pour Opus 5, omettre thinking équivaut à adaptive, et omettre output_config.effort équivaut à high. Opus 4.8, 4.7 et 4.6 nécessitent une activation explicite.
  • Thinking et le corps final partagent le budget de sortie max_tokens. Si le budget est trop faible, thinking peut consommer la majeure partie du quota, laissant le corps vide ou tronqué ; augmentez max_tokens, ou utilisez l’effort low / medium pour contrôler l’investissement dans le raisonnement.
  • Pour les modèles qui autorisent la désactivation de thinking, vous pouvez transmettre thinking: {"type":"disabled"}. Les nouveaux modes tels que between_tools ainsi que les combinaisons d’effort dépendent du modèle sélectionné ; la plateforme ne les rejettera pas à l’avance selon les anciennes règles de modèle.
  • Un budget de réflexion fixe peut être transmis via budget_tokens ; les nouveaux modèles utilisent généralement thinking.type=adaptive et output_config.effort. La prise en charge d’un budget fixe ou de la désactivation de la réflexion dépend des capacités actuelles du modèle sélectionné.
  • Lors de conversations multi-tours et d’appels d’outils, le bloc thinking complet et la signature renvoyés par l’assistant doivent être retransmis tels quels ; ne modifiez pas et ne générez pas vous-même de signature.
  • La transmission directe des paramètres ne signifie pas que chaque modèle prend en charge toutes les fonctionnalités. Les appels inter-protocoles nécessitent toujours une conversion, et la portée de prise en charge ainsi que les erreurs pour des contenus comme redacted_thinking sont déterminées par le service de modèle qui traite réellement la requête.
Dans les requêtes en streaming, summarized produit thinking_delta ; omitted ne produit pas thinking_delta, et conserve uniquement le cycle de vie du bloc thinking et signature_delta.

Modèles visuels

Claude prend en charge les entrées multimodales et peut traiter simultanément du texte et des images. Dans l’API Messages, les capacités visuelles peuvent être utilisées en définissant content au format tableau et en transmettant des blocs de contenu d’image.

Utiliser des images encodées en Base64

Utiliser des images URL

Exemple cURL

Les formats d’image pris en charge incluent : image/jpeg, image/png, image/gif, image/webp.

Documents et PDF

Les PDF utilisent des blocs de contenu document et prennent en charge deux sources stables : Base64 et URL. Les sources Base64 doivent utiliser application/pdf :
Les sources URL s’écrivent {"type":"url","url":"https://example.com/report.pdf"}. document prend également en charge text/plain et les sources content composées de blocs text/image ; les champs optionnels incluent title, context et citations. Les sources file_id de l’API Files constituent une fonctionnalité beta distincte et ne font pas partie du contrat stable de cette interface.

Mise en cache des prompts

Le cache_control de niveau supérieur placera automatiquement le point d’arrêt du cache sur le dernier bloc pouvant être mis en cache :
Lorsque vous devez contrôler précisément la position, vous pouvez également écrire le même cache_control sur les blocs de contenu text, image, document, tool_use, tool_result ou sur la définition de l’outil. ttl prend en charge 5m (par défaut) et 1h ; veuillez déterminer l’écriture et l’atteinte du cache via usage.cache_creation_input_tokens et usage.cache_read_input_tokens. Lorsque la réponse fournit usage.cache_creation, alors ephemeral_5m_input_tokens + ephemeral_1h_input_tokens = cache_creation_input_tokens. Si cache_creation est null ou omis, cela indique qu’il n’existe qu’un total d’écriture dans le cache, sans répartition TTL faisant autorité ; dans ce cas, ne considérez aucun bucket comme étant connu à 0, la facturation et les totaux restent basés sur le champ aggregate. Exemple de résultat retourné :

Appel d’outils (Tool Use)

L’API Claude Messages prend nativement en charge la fonctionnalité d’appel d’outils, permettant au modèle d’appeler vos outils/fonctions prédéfinis lorsque nécessaire.

Exemple Python

Lorsque le modèle décide d’appeler un outil, le champ content dans le résultat retourné contient un bloc de contenu de type tool_use :
Notez que stop_reason est tool_use, ce qui indique que le modèle doit appeler un outil. Après avoir reçu ce résultat, vous devez exécuter la fonction outil et renvoyer le résultat au modèle sous la forme d’un tool_result :
Le modèle générera une réponse finale en langage naturel sur la base du résultat retourné par l’outil.

Différences avec l’API Chat Completion

Ace Data Cloud fournit simultanément deux formats d’API Claude, dont les principales différences sont les suivantes : Le champ usage.input_tokens de l’API Messages ne représente que les entrées non mises en cache ; cache_read_input_tokens et cache_creation_input_tokens sont des buckets de facturation indépendants ; les trois sont calculés séparément selon les prix correspondants. Si votre système est déjà intégré à une API au format OpenAI, vous pouvez utiliser l’API Chat Completion pour basculer de manière transparente. Si vous devez utiliser toutes les capacités natives de Claude, il est recommandé d’utiliser l’API Messages.

Gestion des erreurs

Les réponses d’erreur de l’interface publique utilisent l’enveloppe de la plateforme Ace Data Cloud : error.code est un code d’erreur stable, error.message est une description, et trace_id est utilisé pour diagnostiquer les requêtes. Les statuts HTTP courants incluent :
  • 400 : les paramètres de la requête ou le contenu du protocole sont invalides.
  • 401 : le jeton d’autorisation est invalide, absent ou expiré.
  • 403 : accès interdit, solde insuffisant ou quota limité.
  • 404 : l’API ou le modèle n’existe pas.
  • 413 : le corps de la requête est trop volumineux.
  • 429 : trop de requêtes.
  • 500 / 503 / 504 : erreur de service, indisponibilité temporaire ou délai de traitement dépassé.

Exemple de réponse d’erreur

Cette structure d’erreur est le contrat d’exécution d’Ace Data Cloud et n’est pas équivalente à l’enveloppe d’erreur officielle d’Anthropic ; veuillez la traiter selon le statut HTTP et error.code.

Conclusion

Grâce à ce document, vous avez déjà appris comment utiliser l’API Claude Messages pour appeler les fonctionnalités de conversation de Claude au format natif d’Anthropic. L’API Messages prend en charge de nombreuses fonctionnalités, notamment les conversations de base, les invites système, les réponses en streaming, les conversations à plusieurs tours, la réflexion approfondie, la compréhension visuelle, les PDF, la mise en cache des invites et l’appel d’outils. Si vous avez des questions, n’hésitez pas à contacter notre équipe de support technique.