API Claude : Guide Pratique Python & TypeScript (2026)
By Dorian Laurenceau
API Claude : Guide Complet, Messages, Batch, SDKs et Intégrations
📅 Dernière révision : 24 avril 2026. Mise à jour avec les retours et observations d'avril 2026.
📚 Guides spécialisés : Tool Use | Extended Thinking | Vision | Computer Use | Evals | Bedrock | Vertex AI | Prompt Caching | Hackathon
Pourquoi Utiliser l'API Claude ?
L'API Claude est le moyen le plus direct d'intégrer l'intelligence artificielle d'Anthropic dans vos applications. Contrairement à l'interface web claude.ai, l'API vous donne un contrôle total sur :
- →Le modèle utilisé (Opus, Sonnet, Haiku)
- →Les paramètres de génération (température, max tokens, stop sequences)
- →Les fonctionnalités avancées (tool use, vision, extended thinking, streaming)
- →L'architecture d'intégration (temps réel, batch, webhooks)
L'API Claude en production : ce qui compte vraiment
L'API Claude est solide, bien documentée et prête à shipper ; elle a aussi des gotchas opérationnels que les pages marketing ne font pas remonter. Les threads sur r/ClaudeAI, r/LocalLLaMA, r/ChatGPTCoding et r/ExperiencedDevs couvrent ce que les équipes heurtent vraiment.
Ce que les docs API Anthropic font bien :
- →Shape requête/réponse propre. L'API Messages est plus simple que Chat Completions d'OpenAI à quelques égards utiles (paramètre system top-level, blocs de contenu explicites).
- →Le prompt caching est production-ready et réduit vraiment le coût pour les workflows long-contexte. Mesurez avant et après ; les économies se composent.
- →Le message batching pour les workloads non-urgents est une remise de 50% que la plupart des équipes n'utilisent pas et devraient.
- →Le tool use est first-class et bien spécifié.
- →Extended thinking sur Claude 3.7+ donne du raisonnement visible pour évaluation et debugging.
Ce qui attrape les équipes en production :
- →Les rate limits sont par organisation, pas par clé. Les workloads lourds ont besoin des tiers entreprise ou de Bedrock / Vertex AI pour des quotas plus hauts.
- →Le comptage de tokens diffère de celui d'OpenAI. Le tokenizer est documenté, mais les estimations de coût copiées d'OpenAI-land seront fausses.
- →Backpressure de streaming. Les longues réponses streaming ont besoin d'une vraie gestion SSE ; le buffering chez les proxies (Cloudflare, NGINX) casse le streaming de façons subtiles.
- →Retries et idempotence. Implémentez le backoff exponentiel ; le SDK officiel gère la plupart des cas, mais les workflows batchés ont besoin de soin supplémentaire.
- →Ambiguïté du filtre de contenu. Certains refus de sécurité sont durs à distinguer des réponses légitimes « je ne sais pas » sans inspection. Loggez les réponses brutes pour diagnostic.
- →Pas d'endpoint embeddings intégré. Associez avec Voyage AI, les embeddings OpenAI ou Cohere pour le RAG.
Ce que les équipes de production font vraiment :
- →Utiliser les SDKs officiels (Python, TypeScript, Go). Les appels HTTP écrits à la main ratent la logique retry/streaming/caching.
- →Abstraire le fournisseur avec LiteLLM ou similaire pour que switcher vers Bedrock, Vertex ou un autre vendeur ne requière pas de changements de code.
- →Instrumenter tout. Langfuse, Helicone, LangSmith ou PostHog LLM analytics rendent le debugging et l'attribution de coût tractables.
- →Cacher agressivement. Associez le prompt caching avec du caching au niveau requête (Redis, Cloudflare KV) pour les prompts idempotents.
- →Évaluer en continu. promptfoo, Braintrust ou des harnais d'éval home-grown tournent sur les PRs.
- →Fixer des budgets durs. Plafonds de tokens par-requête, limites de dépense par-utilisateur, budgets mensuels par-feature. Sans ça, un bug de boucle peut brûler des milliers en une nuit.
Le cadrage honnête : l'API Claude est une des APIs LLM les mieux ingéniées disponibles, et elle se comporte comme un vrai service de production, pas une preview de recherche. La discipline opérationnelle autour (caching, instrumentation, évals, budgets, retries) est où la plupart des équipes sous-investissent. Construisez l'échafaudage une fois ; l'API elle-même est la partie facile.
Architecture de l'API
L'API Claude repose sur une architecture REST simple avec un seul endpoint principal :
POST https://api.anthropic.com/v1/messages
Chaque requête inclut :
- →Un modèle (
claude-sonnet-4-20250514,claude-opus-4-20250918, etc.) - →Des messages (conversation sous forme de tableau)
- →Des paramètres optionnels (température, max_tokens, tools, etc.)
import anthropic
client = anthropic.Anthropic() # Utilise ANTHROPIC_API_KEY
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "Explique les microservices en 3 phrases."}
]
)
print(message.content[0].text)
Authentification et Configuration
Obtenir une Clé API
- →Créez un compte sur console.anthropic.com
- →Naviguez vers Settings > API Keys
- →Cliquez Create Key et nommez-la descriptivelement
- →Copiez la clé (elle ne sera plus affichée)
Configurer la Clé API
# Variable d'environnement (recommandé)
export ANTHROPIC_API_KEY="sk-ant-api03-..."
# Ou dans un fichier .env
echo 'ANTHROPIC_API_KEY=sk-ant-api03-...' >> .env
# Python - Automatique via variable d'environnement
client = anthropic.Anthropic()
# Python - Explicite
client = anthropic.Anthropic(api_key="sk-ant-api03-...")
// TypeScript - Automatique via variable d'environnement
const client = new Anthropic();
// TypeScript - Explicite
const client = new Anthropic({ apiKey: "sk-ant-api03-..." });
L'API Messages en Détail
L'API Messages est le cœur de l'interaction avec Claude. Voici la structure complète d'une requête :
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
temperature=0.7,
system="Tu es un expert en architecture logicielle.",
messages=[
{
"role": "user",
"content": "Quels sont les avantages des microservices ?"
},
{
"role": "assistant",
"content": "Les microservices offrent plusieurs avantages clés..."
},
{
"role": "user",
"content": "Et les inconvénients ?"
}
],
stop_sequences=["\n\nHuman:"]
)
print(response.content[0].text)
print(f"Tokens: {response.usage.input_tokens} in / {response.usage.output_tokens} out")
Paramètres Clés
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
model | string | ID du modèle à utiliser | Requis |
max_tokens | int | Nombre maximum de tokens en sortie | Requis |
messages | array | Historique de conversation | Requis |
system | string | Prompt système | Aucun |
temperature | float | Créativité (0.0 - 1.0) | 1.0 |
top_p | float | Nucleus sampling | 1.0 |
top_k | int | Top-K sampling | Aucun |
stop_sequences | array | Séquences d'arrêt | Aucune |
stream | bool | Activer le streaming | false |
tools | array | Outils disponibles pour Claude | Aucun |
metadata | object | Métadonnées (ex: user_id) | Aucune |
Structure de la Réponse
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Les microservices offrent..."
}
],
"model": "claude-sonnet-4-20250514",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 42,
"output_tokens": 156
}
}
Streaming
Le streaming permet d'afficher la réponse de Claude en temps réel, token par token. Indispensable pour les interfaces utilisateur interactives.
import anthropic
client = anthropic.Anthropic()
with client.messages.stream(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Écris un poème sur le code."}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const stream = client.messages.stream({
model: "claude-sonnet-4-20250514",
max_tokens: 1024,
messages: [{ role: "user", content: "Écris un poème sur le code." }],
});
for await (const event of stream) {
if (
event.type === "content_block_delta" &&
event.delta.type === "text_delta"
) {
process.stdout.write(event.delta.text);
}
}
Événements de Streaming
| Événement | Description |
|---|---|
message_start | Début du message, contient les métadonnées |
content_block_start | Début d'un bloc de contenu |
content_block_delta | Fragment de texte (le contenu réel) |
content_block_stop | Fin d'un bloc de contenu |
message_delta | Mise à jour du message (stop_reason, usage) |
message_stop | Fin du message |
API Batch : Traitement en Masse
L'API Batch permet d'envoyer jusqu'à 100 000 requêtes dans un seul lot, avec un coût réduit de 50% et un délai de traitement allant jusqu'à 24 heures.
import anthropic
client = anthropic.Anthropic()
# Créer un batch
batch = client.batches.create(
requests=[
{
"custom_id": "req-1",
"params": {
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Résume cet article : ..."}
]
}
},
{
"custom_id": "req-2",
"params": {
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Traduis ce texte : ..."}
]
}
}
]
)
# Vérifier le statut
status = client.batches.retrieve(batch.id)
print(f"Statut: {status.processing_status}")
# Récupérer les résultats quand c'est prêt
if status.processing_status == "ended":
for result in client.batches.results(batch.id):
print(f"{result.custom_id}: {result.result.message.content[0].text}")
Quand Utiliser l'API Batch ?
| Cas d'usage | Messages API | Batch API |
|---|---|---|
| Chatbot temps réel | ✅ | ❌ |
| Analyse de 10 000 documents | ❌ | ✅ |
| Traduction de contenu en masse | ❌ | ✅ |
| Classification de tickets support | ⚠️ (coûteux) | ✅ |
| Assistant interactif | ✅ | ❌ |
| Génération de rapports périodiques | ⚠️ | ✅ |
SDKs Officiels
Anthropic fournit des SDKs pour les principaux langages de programmation :
| SDK | Langage | Installation | Maintenu par |
|---|---|---|---|
anthropic | Python | pip install anthropic | Anthropic |
@anthropic-ai/sdk | TypeScript/JS | npm install @anthropic-ai/sdk | Anthropic |
anthropic-java | Java | Maven/Gradle | Anthropic |
anthropic-go | Go | go get github.com/anthropics/anthropic-sdk-go | Anthropic |
anthropic-ruby | Ruby | gem install anthropic | Anthropic |
Exemple Java
import com.anthropic.client.AnthropicClient;
import com.anthropic.models.*;
AnthropicClient client = AnthropicClient.builder()
.apiKey(System.getenv("ANTHROPIC_API_KEY"))
.build();
MessageCreateParams params = MessageCreateParams.builder()
.model("claude-sonnet-4-20250514")
.maxTokens(1024)
.addUserMessage("Bonjour Claude !")
.build();
Message message = client.messages().create(params);
System.out.println(message.content().get(0).text());
Exemple Go
package main
import (
"context"
"fmt"
"github.com/anthropics/anthropic-sdk-go"
)
func main() {
client := anthropic.NewClient()
message, err := client.Messages.New(context.Background(),
anthropic.MessageNewParams{
Model: anthropic.ModelClaudeSonnet4_20250514,
MaxTokens: 1024,
Messages: []anthropic.MessageParam{
anthropic.NewUserMessage(
anthropic.NewTextBlock("Bonjour Claude !"),
),
},
},
)
if err != nil {
panic(err)
}
fmt.Println(message.Content[0].Text)
}
Gestion d'Erreurs
L'API Claude utilise des codes HTTP standard et des messages d'erreur descriptifs.
| Code HTTP | Signification | Action recommandée |
|---|---|---|
| 400 | Requête invalide | Vérifiez les paramètres |
| 401 | Clé API invalide | Vérifiez votre clé API |
| 403 | Permission refusée | Vérifiez les permissions du modèle |
| 429 | Rate limit atteint | Attendez et réessayez avec backoff |
| 500 | Erreur serveur | Réessayez après quelques secondes |
| 529 | API surchargée | Réessayez avec exponential backoff |
Gestion Robuste des Erreurs
import anthropic
import time
client = anthropic.Anthropic()
def call_claude_with_retry(messages, max_retries=3):
for attempt in range(max_retries):
try:
return client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=messages
)
except anthropic.RateLimitError:
wait = 2 ** attempt # Exponential backoff
print(f"Rate limited. Attente de {wait}s...")
time.sleep(wait)
except anthropic.APIStatusError as e:
if e.status_code >= 500:
time.sleep(1)
continue
raise
raise Exception("Nombre maximum de tentatives atteint")
Rate Limits
Les rate limits protègent la stabilité de l'API et varient selon votre tier d'utilisation.
| Tier | Requêtes/min | Tokens entrée/min | Tokens sortie/min |
|---|---|---|---|
| Tier 1 (par défaut) | 4 000 | 400 000 | 80 000 |
| Tier 2 | 8 000 | 800 000 | 160 000 |
| Tier 3 | 16 000 | 1 600 000 | 320 000 |
| Tier 4 | 32 000 | 3 200 000 | 640 000 |
Les headers de réponse incluent vos limites actuelles :
anthropic-ratelimit-requests-limit: 4000
anthropic-ratelimit-requests-remaining: 3999
anthropic-ratelimit-requests-reset: 2026-03-10T12:00:30Z
anthropic-ratelimit-tokens-limit: 400000
anthropic-ratelimit-tokens-remaining: 399800
Tarification
| Modèle | Entrée ($/M tokens) | Sortie ($/M tokens) | Cache Write | Cache Read |
|---|---|---|---|---|
| Claude Opus 4.6 | 15.00 | 75.00 | 18.75 | 1.50 |
| Claude Sonnet 4 | 3.00 | 15.00 | 3.75 | 0.30 |
| Claude Haiku 3.5 | 0.80 | 4.00 | 1.00 | 0.08 |
Calcul rapide : Une conversation typique (500 tokens in + 500 tokens out) avec Sonnet coûte environ $0.009, moins d'un centime.
Patterns Courants
Conversation Multi-tours
conversation = []
def chat(user_message):
conversation.append({"role": "user", "content": user_message})
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
system="Tu es un assistant de développement Python expert.",
messages=conversation
)
assistant_message = response.content[0].text
conversation.append({"role": "assistant", "content": assistant_message})
return assistant_message
# Utilisation
print(chat("Comment créer une API REST avec FastAPI ?"))
print(chat("Ajoute de l'authentification JWT."))
print(chat("Maintenant ajoute des tests."))
Sortie Structurée (JSON)
import json
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{
"role": "user",
"content": """Analyse ce texte et retourne un JSON structuré :
"Le produit est excellent, livraison rapide mais emballage abîmé."
Format attendu :
{"sentiment": "positif|négatif|mixte", "aspects": [...], "score": 0-10}"""
}]
)
result = json.loads(response.content[0].text)
print(result)
# {"sentiment": "mixte", "aspects": [...], "score": 7}
System Prompt avec Contexte
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
system="""Tu es un assistant pour la plateforme e-commerce "TechShop".
Règles :
- Réponds toujours en français
- Recommande uniquement des produits du catalogue
- Si tu ne connais pas la réponse, redirige vers le support
Catalogue actuel :
- MacBook Pro M4 : 2499€
- iPhone 16 Pro : 1299€
- iPad Air M3 : 799€""",
messages=[
{"role": "user", "content": "Quel ordinateur portable me recommandez-vous ?"}
]
)
Accès via les Clouds
L'API Claude est également disponible via les principaux fournisseurs cloud :
| Plateforme | Avantage principal | Guide dédié |
|---|---|---|
| Amazon Bedrock | Intégration AWS native, facturation unifiée | Guide Bedrock |
| Google Vertex AI | Intégration GCP native, model garden | Guide Vertex AI |
| API directe | Accès immédiat, dernières fonctionnalités | Ce guide |
Les règles d'or
- →Utilisez des variables d'environnement pour les clés API, jamais en dur dans le code
- →Implémentez le retry avec backoff exponentiel pour gérer les erreurs transitoires
- →Monitorez votre usage via la console Anthropic pour éviter les surprises
- →Utilisez le streaming pour les interfaces utilisateur interactives
- →Préférez l'API Batch pour les traitements en masse (50% d'économie)
- →Activez le prompt caching pour les prompts systèmes répétitifs
- →Choisissez le bon modèle : Haiku pour les tâches simples, Sonnet pour l'usage général, Opus pour le raisonnement complexe
Ressources
| Ressource | Lien |
|---|---|
| Documentation officielle | docs.anthropic.com |
| Console Anthropic | console.anthropic.com |
| SDK Python | github.com/anthropics/anthropic-sdk-python |
| SDK TypeScript | github.com/anthropics/anthropic-sdk-typescript |
| Cookbook | github.com/anthropics/anthropic-cookbook |
- →Sorties structurées et mode strict, Garantissez des sorties JSON valides avec le paramètre strict
Module 0 — Prompting Fundamentals
Build your first effective prompts from scratch with hands-on exercises.
Dorian Laurenceau
Full-Stack Developer & Learning DesignerFull-stack web developer and learning designer. I spent 4 years as a freelance full-stack developer and 4 years teaching React, JavaScript, HTML/CSS and WordPress to adult learners. Today I design learning paths in web development and AI, grounded in learning science. I founded learn-prompting.fr to make AI practical and accessible, and built the Bluff app to gamify political transparency.
Weekly AI Insights
Tools, techniques & news — curated for AI practitioners. Free, no spam.
Free, no spam. Unsubscribe anytime.
→Related Articles
FAQ
Combien coûte l'API Claude ?+
Les prix varient selon le modèle : Claude 4.6 Opus coûte 15$/M tokens en entrée et 75$/M en sortie. Claude Sonnet est à 3$/M en entrée et 15$/M en sortie. Le prompt caching réduit les coûts jusqu'à 90%.
Comment obtenir une clé API Claude ?+
Créez un compte sur console.anthropic.com, accédez à Settings > API Keys, puis générez une nouvelle clé. Ajoutez des crédits à votre compte pour commencer à utiliser l'API.
Quelle est la différence entre l'API Messages et l'API Batch ?+
L'API Messages traite les requêtes en temps réel (réponse en quelques secondes). L'API Batch traite des lots de requêtes de manière asynchrone, avec un coût réduit de 50% et un délai de traitement allant jusqu'à 24 heures.
Quels SDKs sont disponibles pour l'API Claude ?+
Anthropic fournit des SDKs officiels pour Python, TypeScript/JavaScript, Java, Go et Ruby. Des SDKs communautaires existent pour d'autres langages comme Rust, PHP et C#.
Quelles sont les rate limits de l'API Claude ?+
Les rate limits par défaut sont de 4 000 requêtes/minute et 400 000 tokens/minute pour le tier 1. Vous pouvez demander une augmentation via la console Anthropic en fonction de votre usage.
Quel est le prix d'un token Claude API ?+
Les prix varient par modèle : Haiku 4.5 coûte 0,80$/M tokens en entrée et 4$/M en sortie. Sonnet 4.6 coûte 3$/M en entrée et 15$/M en sortie. Opus 4.6 coûte 15$/M en entrée et 75$/M en sortie. Le prompt caching réduit les coûts de 90% sur les tokens en cache.
Ai-je besoin de Claude Pro pour utiliser l'API ?+
Non. L'API Claude et l'abonnement Claude Pro sont deux produits séparés. L'API nécessite une clé API (créée sur console.anthropic.com) et fonctionne avec un modèle de paiement à l'usage. Claude Pro est un abonnement mensuel pour l'interface web claude.ai.
Comment utiliser l'API Anthropic en Python ?+
Installez le SDK avec 'pip install anthropic', puis créez un client avec votre clé API. Un appel basique : client.messages.create(model='claude-sonnet-4-6-20260610', max_tokens=1024, messages=[{'role': 'user', 'content': 'Votre question'}]). Consultez notre section 'Premier appel API' pour un tutoriel complet.