- Pour déployer une passerelle existante ou tierce pour votre organisation, consultez Déployer une passerelle LLM
- Si vous êtes un développeur individuel authentifiant Claude Code à une passerelle avec une identifiant que vous avez reçu, consultez Connecter Claude Code à une passerelle LLM
- Formats API et les points de terminaison à servir pour chacun
- En-têtes de requête : lesquels doivent atteindre l’amont et lesquels votre passerelle peut consommer
- Le bloc d’attribution du message système et comment il interagit avec la mise en cache des invites
- Transmission des fonctionnalités : ce qui se casse lorsque les en-têtes ou champs de corps sont supprimés
- Découverte des modèles
- Transmettre inchangé : le passer à l’amont octet par octet
- Consommer : la passerelle peut le lire pour le routage, l’attribution ou le suivi et n’a pas besoin de le transmettre
Formats API
Une passerelle doit exposer au moins l’un des formats API suivants aux clients Claude Code. Le format que Claude Code utilise est déterminé par la configuration du client : la variable dans la colonne Sélectionné par du tableau ci-dessous pointe Claude Code vers votre passerelle dans ce format.| Format | Sélectionné par | Points de terminaison | Transmettre inchangé |
|---|---|---|---|
| Messages Anthropic | ANTHROPIC_BASE_URL | /v1/messages, /v1/messages/count_tokens (optionnel) | En-têtes de requête anthropic-beta et anthropic-version |
| Bedrock InvokeModel | ANTHROPIC_BEDROCK_BASE_URL avec CLAUDE_CODE_USE_BEDROCK=1 | /model/{model}/invoke, /model/{model}/invoke-with-response-stream | Champs de corps de requête anthropic_beta et anthropic_version |
| Vertex rawPredict | ANTHROPIC_VERTEX_BASE_URL avec CLAUDE_CODE_USE_VERTEX=1 | :rawPredict, :streamRawPredict, count-tokens:rawPredict (optionnel) | En-têtes de requête anthropic-beta et anthropic-version, et le champ de corps de requête anthropic_version |
Foundry et Claude Platform on AWS
Microsoft Foundry et la Claude Platform on AWS implémentent le format Messages Anthropic. Claude Code les route via leurs propres variables,ANTHROPIC_FOUNDRY_BASE_URL et ANTHROPIC_AWS_BASE_URL, mais une passerelle les frontalisant implémente la ligne Messages Anthropic ci-dessus. Une passerelle frontalisant la Claude Platform on AWS doit également transmettre l’en-tête anthropic-workspace-id, que cette plateforme exige sur chaque requête.
Points de terminaison optionnels et trafic de démarrage
Les points de terminaison de comptage de jetons sont les seuls optionnels : lorsqu’ils sont absents, Claude Code estime l’utilisation du contexte localement. Les requêtes d’inférence sont envoyées à/v1/messages?beta=true, donc faites correspondre le chemin, pas l’URL complète. La méthode Vertex ajoute des suffixes au chemin du modèle de l’éditeur, comme dans /projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict.
Une passerelle voit également du trafic de démarrage au meilleur effort qu’elle peut rejeter sans rien casser : une sonde de connectivité HEAD /, et sur les passerelles au format Bedrock une requête GET /inference-profiles?type=SYSTEM_DEFINED.
Streaming
Les réponses d’inférence doivent être en streaming. Claude Code consomme les événements envoyés par le serveur au fur et à mesure qu’ils arrivent, donc une passerelle qui met en mémoire tampon les réponses complètes avant de les relayer bloque le client.Incompatibilité de format avec l’amont
Le format que le client utilise détermine ce que votre passerelle reçoit. Le mode de défaillance courant est une incompatibilité entre le format que le client envoie à votre passerelle et le format que le fournisseur amont derrière elle accepte.- Lorsque le client utilise le format Bedrock ou Vertex, Claude Code envoie uniquement le sous-ensemble de son ensemble de capacités complet que ces fournisseurs acceptent
- Lorsque le client utilise le format Messages Anthropic, Claude Code envoie l’ensemble complet, même si votre passerelle transmet à un amont Bedrock ou Vertex
En-têtes de requête
Claude Code inclut ces en-têtes sur les requêtes API. Les noms d’en-têtes ne sont pas sensibles à la casse sur le fil. Transmettezanthropic-version et anthropic-beta inchangés, plus anthropic-workspace-id lorsque l’amont est la Claude Platform on AWS ; le reste, la passerelle peut le consommer pour le routage, l’attribution et le suivi, et n’a pas besoin de le transmettre.
| En-tête | Description |
|---|---|
Authorization, x-api-key | L’identifiant de passerelle du développeur, dans un ou les deux en-têtes selon la variable d’identifiant qu’il définit |
anthropic-version | Version de l’API, actuellement 2023-06-01. Les requêtes au format Bedrock et Vertex portent également le champ de corps anthropic_version, dont la valeur est la chaîne de dialecte du fournisseur, pas la valeur de cet en-tête |
anthropic-beta | Valeurs de capacité séparées par des virgules pour la requête. Transmettez l’en-tête verbatim ; ne mettez pas en liste blanche les valeurs individuelles, car l’ensemble change avec les versions de Claude Code. Lorsque le développeur s’authentifie avec une connexion claude.ai, ce qui est possible lorsque ANTHROPIC_BASE_URL est défini sans variable d’identifiant de passerelle, cet en-tête porte également une capacité OAuth que l’amont exige, et la supprimer échoue ces requêtes avec 401 |
x-claude-code-session-id | Un identifiant unique pour la session Claude Code actuelle. Utilisez-le pour agréger toutes les requêtes d’une session sans analyser les corps de requête |
x-claude-code-agent-id | Identifiant du sous-agent qui a émis la requête, présent uniquement sur les requêtes d’un agent que Claude Code a généré dans la session. Utilisez-le avec l’ID de session pour attribuer le coût aux agents parallèles |
x-claude-code-parent-agent-id | Identifiant de l’agent qui a généré l’agent demandeur, présent uniquement pour les agents imbriqués |
ANTHROPIC_CUSTOM_HEADERS, ces en-têtes apparaissent également sur les requêtes.
Transmettre comme listes ouvertes
Traitez les en-têtes et champs de corps comme des listes ouvertes, pas fermées. Claude Code gagne des capacités au fil des versions, et elles arrivent comme de nouvelles valeursanthropic-beta, de nouveaux champs de corps de requête, et occasionnellement de nouveaux en-têtes anthropic-* ou x-claude-code-*.
Lors de la transmission à un amont au format Anthropic, transmettez les en-têtes de requête anthropic-* et les champs de corps de requête inchangés plutôt que de mettre en liste blanche ceux que vous voyez aujourd’hui. Une passerelle épinglée à une liste observée supprime l’en-tête ou le champ de la capacité suivante et la casse à la version qui l’introduit.
L’exception est un amont non-Anthropic tel que Bedrock ou Vertex, où combler la différence de schéma est le travail de la passerelle ; consultez transmission des fonctionnalités.
Bloc d’attribution du message système
Claude Code ajoute un bloc d’attribution court au message système contenant la version du client et une empreinte dérivée de la conversation. Le point de terminaisonapi.anthropic.com supprime le bloc avant le traitement, donc il n’affecte pas la mise en cache des invites de première partie ; tout autre amont le reçoit comme faisant partie de l’invite. Anthropic et les points de terminaison Claude des fournisseurs de cloud le lisent pour l’attribution, donc pour l’omettre, définissez CLAUDE_CODE_ATTRIBUTION_HEADER=0 plutôt que de le supprimer dans la passerelle.
À partir de Claude Code v2.1.181, le bloc est stable pour la durée de vie d’une conversation lorsque les requêtes sont routées via une URL de base personnalisée, donc un cache d’invite côté passerelle basé sur le corps de requête complet fonctionne sans le désactiver. Avant v2.1.181, le bloc incluait un jeton par requête ; sur ces versions, définissez CLAUDE_CODE_ATTRIBUTION_HEADER=0 si votre passerelle implémente un tel cache.
Transmission des fonctionnalités
Claude Code traite une passerelleANTHROPIC_BASE_URL comme un point de terminaison au format Anthropic et lui envoie les en-têtes bêta et champs de corps de requête qu’il envoie à api.anthropic.com, sauf un petit ensemble de diagnostics et de valeurs par défaut réservés aux connexions directes.
Les capacités qui ajoutent des champs de corps les associent à un en-tête bêta, et la paire voyage ensemble. Une passerelle qui supprime l’en-tête tout en transmettant le corps, ou transmet un corps au format Anthropic à un amont avec un schéma différent, produit des erreurs 400 dures ; seulement lorsque les deux moitiés sont absentes ensemble la fonctionnalité s’éteint silencieusement. Une passerelle qui réécrit ou rédige les corps de requête pour l’inspection du contenu casse l’appairage de la même manière que la suppression, donc inspectez sans modifier. Le tableau note où une fonctionnalité s’écarte de l’appairage.
Le streaming d’outils à grain fin est l’une des valeurs par défaut de connexion directe : il est désactivé par défaut chaque fois que les requêtes sont routées via une URL de base personnalisée, et une passerelle le reçoit lorsque les développeurs définissent CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1.
| Fonctionnalité | Paire en-tête et corps | Symptôme lorsque cassé | Correction |
|---|---|---|---|
| Raisonnement adaptatif | Pas d’en-tête bêta. Claude Code envoie thinking: {"type": "adaptive"} pour Claude 4.6 et versions ultérieures, et traite les noms de modèles qu’il ne reconnaît pas, tels que les alias de passerelle, comme des modèles actuels qui reçoivent le champ | 400 nommant le champ thinking ou la balise adaptive lorsque la version du modèle amont ne l’accepte pas | Mettez à niveau l’amont. Sur Opus 4.6 et Sonnet 4.6, les développeurs peuvent définir CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 à la place |
| Gestion du contexte | L’en-tête bêta de gestion du contexte s’associe au champ de corps context_management | 400 avec Extra inputs are not permitted. Courant lorsqu’une passerelle accepte les requêtes au format Anthropic mais les transmet à Bedrock | Transmettez les deux, ou CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
| Contexte étendu et pensée entrelacée | En-têtes bêta uniquement, pas de champ de corps | Silencieusement indisponible lorsque l’en-tête est supprimé ; l’amont ne voit jamais la demande de capacité | Transmettez anthropic-beta verbatim |
| Champs d’outil bêta | Les en-têtes bêta liés aux outils s’associent aux champs de schéma d’outil tels que strict et defer_loading | 400 nommant le champ de schéma d’outil non reconnu lorsque le corps passe sans son en-tête | Transmettez les deux, ou CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
| Effort et sorties structurées | Le champ de corps output_config porte les paramètres d’effort, de format de sortie structurée et de budget de tâche ; chacun s’associe à son propre en-tête bêta | 400 nommant output_config, souvent Extra inputs are not permitted, sur les amonts Bedrock et Vertex | Transmettez le champ et ses en-têtes ensemble |
| Comptage des jetons | Pas d’appairage bêta ; utilise le point de terminaison count_tokens | Claude Code revient à l’estimation de l’utilisation du contexte localement | Exposez le point de terminaison si vous voulez des comptages exacts |
ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES déclarent les capacités du modèle uniquement dans les configurations du fournisseur : CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX, CLAUDE_CODE_USE_FOUNDRY, et CLAUDE_CODE_USE_MANTLE. Elles n’ont aucun effet derrière une passerelle ANTHROPIC_BASE_URL.
Nouvelle tentative automatique et transmission d’erreur
Claude Code réessaie automatiquement après certains rejets en amont et désactive la capacité rejetée pour le reste de la conversation. Les rejets du champthinking, des signatures de pensée, et des messages système en milieu de conversation se rétablissent tous de cette manière. Les rejets de gestion du contexte et de champ de schéma d’outil ne réessaient pas ; ces erreurs 400 atteignent le développeur.
La logique de nouvelle tentative correspond à la formulation d’erreur de l’amont, donc transmettez les corps de réponse d’erreur inmodifiés. Une passerelle qui enveloppe les erreurs en amont dans sa propre enveloppe casse le chemin de récupération même lorsqu’elle préserve le code d’état.
Désactiver les capacités de pré-version
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 empêche Claude Code d’envoyer les capacités de pré-version et leurs champs de corps sur chaque fournisseur, y compris la gestion du contexte et les champs d’outil bêta. Il n’affecte pas le raisonnement adaptatif, qui est sélectionné par modèle plutôt que par bêta, et il ne supprime jamais la capacité OAuth que l’authentification par abonnement exige.
L’ensemble des capacités que Claude Code envoie augmente au fil des versions. Pour les chaînes d’en-tête bêta actuelles, consultez la référence des en-têtes bêta ; testez votre passerelle contre les nouvelles versions de Claude Code plutôt que de vous épingler à une liste observée.
Découverte des modèles
LorsqueANTHROPIC_BASE_URL pointe vers une passerelle qui expose le format Messages Anthropic, Claude Code peut interroger le point de terminaison /v1/models de la passerelle au démarrage et ajouter les modèles retournés au sélecteur /model.
Les développeurs l’activent en définissant CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1, dans leur propre environnement ou via les paramètres gérés. La découverte est désactivée par défaut afin que les passerelles soutenues par une clé API partagée ne surface pas chaque modèle auquel la clé peut accéder à chaque utilisateur. Cela nécessite Claude Code v2.1.129 ou version ultérieure.
Quand la découverte s’exécute
La découverte s’applique uniquement au format Messages Anthropic. Elle ne s’exécute pas lorsque :- Toute variable de fournisseur
CLAUDE_CODE_USE_*est définie, même siANTHROPIC_BASE_URLest également défini ANTHROPIC_BASE_URLn’est pas défini ou pointe versapi.anthropic.com- Le trafic non essentiel est désactivé, via
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICou la politique organisationnelle
Requête et réponse
La requête estGET /v1/models?limit=1000 avec un délai d’expiration de 3 secondes, et toute redirection est traitée comme un échec afin que l’identifiant ne puisse pas fuir vers une cible de redirection. Une passerelle qui répond lentement ou redirige /v1/models, même http vers https, échoue silencieusement la découverte ; servez le point de terminaison directement à l’URL de base configurée.
La requête de découverte envoie exactement un en-tête d’identifiant :
ANTHROPIC_AUTH_TOKENcomme jeton porteur, lorsqu’il est défini- Sinon la clé API résolue, y compris une valeur
apiKeyHelper, dans l’en-têtex-api-key
/v1/models doit accepter x-api-key pour les déploiements d’aide. Tous les en-têtes de ANTHROPIC_CUSTOM_HEADERS sont également inclus.
Claude Code lit id et le display_name optionnel de chaque entrée dans le tableau data de la réponse, et ignore les entrées dont id ne commence pas par claude ou anthropic :
Entrées du sélecteur et mise en cache
Le sélecteur est la liste de modèles interactive qui s’ouvre lorsqu’un développeur exécute/model dans Claude Code. Chaque entrée découverte est étiquetée « Depuis la passerelle » et utilise display_name lorsqu’il est fourni. Un ID découvert est ignoré uniquement lorsqu’il correspond exactement à une ligne déjà dans le sélecteur, ou lorsque les ID découvert et existant se résolvent tous deux en Fable. Les lignes intégrées sont basées sur des alias tels que sonnet, donc un ID découvert tel que claude-sonnet-4-6 ajoute sa propre ligne « Depuis la passerelle » à côté de l’entrée intégrée. Le paramètre géré availableModels limite ce que la découverte peut ajouter.
Les résultats sont mis en cache dans ~/.claude/cache/gateway-models.json, ou %USERPROFILE%\.claude\cache\gateway-models.json sur Windows, et actualisés à chaque démarrage. Si la requête échoue ou la passerelle n’implémente pas /v1/models, le sélecteur revient à la liste mise en cache du démarrage précédent ou à la liste de modèles intégrée. Si votre passerelle sert les modèles Claude sous des alias qui ne correspondent pas au filtre de découverte, les développeurs peuvent ajouter ces alias manuellement avec les variables de configuration du modèle.
Ressources connexes
Pour le reste de l’ensemble de documentation de passerelle et les références API sous-jacentes :- Aperçu des passerelles LLM : ce qu’est une passerelle et comment elle interagit avec les abonnements claude.ai
- Déployer une passerelle LLM pour votre organisation : la liste de contrôle d’administration qui utilise ce contrat
- Connecter Claude Code à une passerelle LLM : configuration par développeur et le tableau de dépannage
- Référence des en-têtes bêta : l’ensemble actuel des valeurs
anthropic-beta - API Messages : le format API qu’une passerelle au format Anthropic implémente