En bref : selon la documentation Claude, l'API Claude de premier niveau accepte désormais des requêtes Messages et Token Counting jusqu'à 128 Mo (contre 32 Mo). Batch monte à 256 Mo et la Files API à 500 Mo. Cela ne concerne que l'API d'Anthropic : Amazon Bedrock reste à 20 Mo, Claude sur Vertex géré par Google à 30 Mo, et Claude Platform on AWS, Google Cloud géré par Anthropic et Microsoft Foundry à 32 Mo. Les passerelles tierces fixent aussi leurs plafonds.
Nous avons testé des requêtes Messages de 10 Mo à 130 Mo avec notre propre clé :
- jusqu'à environ 50 Mo, tout a répondu 200 en 5 à 9 secondes ;
- à partir d'environ 54 Mo, nous avons reçu 413, et les plus grosses requêtes étaient refusées en 1 seconde environ.
Face à une 413, ne changez pas de modèle : mesurez le corps de la requête, puis réduisez les images, découpez les PDF et retirez les anciennes captures. La fenêtre de contexte n'a pas grandi : tenir dans 128 Mo ne veut pas dire tenir en tokens.
Créer une API Key et utiliser Claude dans Claude Code →
Reconnaître 413 request_too_large
L'API officielle renvoie HTTP 413 avec le type d'erreur request_too_large :
{
"type": "error",
"error": {
"type": "request_too_large",
"message": "Request exceeds the maximum allowed number of bytes."
}
}
Selon la page officielle des erreurs, sur l'API Claude de premier niveau cette erreur est renvoyée par Cloudflare avant que la requête n'atteigne les serveurs de l'API. Donc :
- la requête n'a jamais atteint le modèle, aucune sortie, aucun token consommé ;
- relancer la même requête ne sert à rien, il faut réduire le corps ;
- c'est un autre problème que 400
invalid_request_error(format), 429 (limite de débit) ou 529 (surcharge).
Via une passerelle tierce, le corps de la 413 change. Nous en avons vu deux formes : le message propre à la passerelle (en chinois, « corps de requête trop volumineux, réduisez le contenu et réessayez ») et bad response status code 413, qui signifie que l'amont a renvoyé 413. Traitez les deux comme « requête trop grosse ». Pour les autres erreurs, voir le dépannage des erreurs Claude Haiku 5.5.
Mesurez d'abord votre requête :
import json
body = json.dumps(payload).encode()
print(f"{len(body) / 1024 / 1024:.1f} MB")
Limites par plateforme
| Accès | Taille max. de requête |
|---|---|
| API Claude : Messages, Token Counting | 128 Mo |
| API Claude : Message Batches | 256 Mo |
| API Claude : envoi Files API | 500 Mo |
| API Claude : Sessions, Agents, Environments | 32 Mo |
| Claude Platform on AWS | 32 Mo |
| Claude sur Google Cloud (géré par Anthropic) | 32 Mo |
| Microsoft Foundry | 32 Mo |
| Claude sur Google Cloud (géré par Google, Vertex) | 30 Mo |
| Amazon Bedrock | 20 Mo |
| Notre passerelle (notre test) | passe jusqu'à environ 50 Mo, 413 dès environ 54 Mo |
Chiffres tirés de la vue d'ensemble officielle de l'API ; la documentation précise que celle de chaque plateforme cloud fait foi. Selon AlphaSignal, la hausse vise les requêtes chargées en images.
D'autres limites s'ajoutent à la taille (selon la doc Vision et la doc PDF) :
- chaque image fait au plus 8000×8000 px ; au-delà de 20 images dans une requête, le grand côté de chaque image doit rester sous 3000 px (2000 px auparavant, selon AlphaSignal), sinon
invalid_request_errormentionnant many-image requests ; - jusqu'à 600 images par requête, 100 pour les modèles à contexte de 200K ;
- 600 pages de PDF par requête, 100 si la fenêtre de contexte est inférieure à 1M tokens ;
- le base64 ajoute environ un tiers : un PNG de 3 Mo devient environ 4 Mo.
Solution 1 : compresser et sous-échantillonner les images
Le modèle ne lit pas votre pleine résolution. Selon la documentation, Claude 4.7 et les modèles suivants ramènent le grand côté à 2576 px, les autres à 1568 px. Envoyer des captures 4K multiplie seulement les octets. Redimensionnez avant l'envoi :
from PIL import Image
import base64, io
def shrink(path, max_side=1568, quality=80):
im = Image.open(path).convert("RGB")
im.thumbnail((max_side, max_side))
buf = io.BytesIO()
im.save(buf, "JPEG", quality=quality, optimize=True)
return base64.b64encode(buf.getvalue()).decode()
Repères :
- convertir les captures en JPEG (qualité 75 à 85), bien plus léger que le PNG ;
- grand côté à 1568 px, 2576 px seulement pour du petit texte ;
- au-delà de 20 images, toujours sous 3000 px ;
- envoyer une image une seule fois dans la conversation, puis y faire référence en texte.
Solution 2 : envoyer les gros PDF par file_id de la Files API
Sur l'API officielle, envoyez le fichier à la Files API (500 Mo par fichier), puis référencez le file_id dans Messages : le corps ne contient plus qu'un identifiant.
curl https://api.anthropic.com/v1/files \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: files-api-2025-04-14" \
-F "file=@report.pdf"
# -> {"id": "file_011C...", ...}
{"type": "document", "source": {"type": "file", "file_id": "file_011C..."}}
Selon la documentation, les conversations multi-tours et les agents renvoient tout l'historique à chaque tour, donc les images base64 repartent à chaque fois ; avec file_id, le corps reste léger.
Si votre passerelle ne prend pas en charge la Files API (l'appel d'envoi sur notre passerelle a renvoyé 400 lors de ce test), découpez le PDF en parties de 100 pages au plus, sous la limite de requête :
qpdf report.pdf --pages . 1-100 -- part1.pdf
qpdf report.pdf --pages . 101-200 -- part2.pdf
Chaque page de PDF est traitée comme une image : baisser la résolution des images d'un PDF scanné le réduit beaucoup.
Solution 3 : sessions computer use et Claude Code longues, retirer les anciennes captures
Computer use et les agents à captures tombent le plus souvent sur la 413 : chaque étape ajoute une capture dans tool_result, chaque tour renvoie tout l'historique, et après quelques dizaines d'étapes le corps dépasse 100 Mo. Selon la documentation, les captures dans tool_result comptent aussi dans le seuil des 20 images.
À faire :
- ne garder que les dernières captures et remplacer les anciennes par une ligne de texte (« étape 12 : page des réglages ouverte ») ;
- dans votre propre boucle d'agent, résumer l'historique toutes les N étapes ;
- dans Claude Code, lancer
/compactou ouvrir une nouvelle session pour les tâches longues. Pour le déclenchement de la compaction, voir la compaction automatique de Claude Code.
Pour brancher Claude Code sur un point d'accès tiers, la configuration globale va dans ~/.claude/settings.json :
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "VOTRE_API_KEY"
},
"model": "claude-sonnet-5-5"
}
L'adresse est https://api.aicodewith.ai, sans /v1. Étapes complètes : configurer une API tierce dans Claude Code ; pour les changements de version d'API et de SDK du 21 octobre, voir la migration Claude API 2026-10-21.
Test : quelle taille accepte notre passerelle
Méthode : claude-sonnet-5-5, max_tokens 16, une requête Messages avec plusieurs images base64 (images de 16×16 px complétées d'octets de remplissage pour limiter les tokens), de 10 Mo à 130 Mo, envoyée en POST à https://api.aicodewith.ai/v1/messages.
| Taille du corps | Statut | Durée |
|---|---|---|
| 4,8 Mo | 200 | environ 14 s |
| 10,1 Mo | 200 | environ 5 s |
| 40,3 Mo | 200 | environ 6 s |
| 50,3 Mo | 200 | environ 9 s |
| 52,0 Mo | 200 | environ 9 s |
| 53,7 Mo | 413 | environ 6 s |
| 60,4 Mo | 413 | environ 10 s |
| 75,5 Mo | 413 | environ 1 s |
| 98,8 Mo | 413 | environ 4 s |
| 129,6 Mo | 413 | environ 1 s |
Résultat : lors de notre test, les requêtes Messages via notre passerelle ont renvoyé 200 jusqu'à environ 52 Mo et 413 dès environ 54 Mo, en dessous des 128 Mo officiels. Un échange avec quelques images, quelques captures ou un PDF de quelques dizaines de pages en est très loin ; pour envoyer des dizaines de Mo, les trois solutions ci-dessus sont plus sûres. Quelques requêtes ont perdu la connexion pendant l'envoi et sont passées au renvoi. Nous avons supprimé le script et les fichiers de test ensuite.
Créer une API Key et connecter Claude à Claude Code →
FAQ
Avec 128 Mo, puis-je envoyer plus de contenu ?
La limite en octets a grandi, pas la fenêtre de contexte. Une grande image ramenée à la résolution de travail du modèle a un nombre de tokens fixe : les octets en plus sont de la bande passante perdue. Le texte bute sur la fenêtre de contexte bien avant 128 Mo.
Quelle différence entre 413 et 400 « prompt is too long » ?
413 : trop d'octets, la requête est arrêtée avant le modèle. prompt is too long : trop de tokens pour la fenêtre de contexte, la requête a bien atteint l'API. Réduisez les octets dans le premier cas, le contenu ou l'historique dans le second.
Pourquoi encore une 413 sur Bedrock ?
Bedrock est limité à 20 Mo et Vertex géré par Google à 30 Mo ; les 128 Mo ne valent que pour l'API Claude de premier niveau. Compressez selon la limite de la plateforme.
Batch permet-il des requêtes plus grosses ?
Un lot entier peut faire 256 Mo, mais chaque élément reste une requête Messages. Batch sert aux traitements hors ligne en volume, pas à contourner la taille par requête.
Relancer corrige-t-il la 413 ?
Non. Le même corps est refusé à chaque fois ; réduisez-le d'abord.



