SUB&SUB · Docs
Langue
Thème

Référence de l'API

SUB&SUB expose un relais multi-fournisseurs sur https://api.subnsub.com/v1. Les clients OpenAI appellent /v1/chat/completions ; les clients Anthropic appellent /v1/messages. La même clé sk-cf-... route les deux — choisis le modèle dans le corps de la requête et le relais choisit l'upstream.

Disponibilité du service

Comptes existants uniquement Les nouvelles inscriptions peuvent utiliser le compte partagé et SUB&SUB Tools, mais ne peuvent ni ouvrir la console API, ni créer de clé, ni ajouter du crédit API, ni appeler le relais. Cette section sera mise à jour lors de la réouverture de l’API.

Démarrage rapide

Pour un compte existant autorisé à utiliser l’API, trois éléments sont nécessaires :

  1. URL de base : https://api.subnsub.com/v1 (clients OpenAI) ou https://api.subnsub.com (clients Anthropic — le SDK ajoute lui-même /v1/messages)
  2. Clé API : sk-cf-... émise depuis la console
  3. Modèle : l'un des 18 modèles pris en charge, par ex. gpt-5.4-mini, claude-opus-5 ou gemini-3-flash

Authentification

Chaque requête doit porter un en-tête Authorization: Bearer sk-cf-.... Les clés sont émises depuis la console et stockées sous forme de hachages SHA-256 — une fois que tu quittes l'écran de création, le texte clair est perdu pour toujours, alors enregistre-le immédiatement.

Astuce Génère une clé par intégration (chatbot, plugin d'IDE, traitement par lots). Révoquer une clé fuitée dans la console prend effet en quelques secondes.

Endpoints

La surface publique stable est décrite ci-dessous et dans le document OpenAPI 3.1 lisible par machine. Les champs non répertoriés peuvent être transmis au fournisseur, mais ne font pas automatiquement partie du contrat de compatibilité de SUB&SUB.

POST /v1/chat/completions

POST/v1/chat/completions

Envoie une requête de complétion de chat. Le format de la requête correspond à l'API Chat Completions d'OpenAI — les SDK OpenAI fonctionnent sans modification.

ParamètreTypeDescription
modelstringUn ID de modèle gpt-* ou claude-* répertorié. Les modèles Gemini sont disponibles uniquement via Messages.
messagesarrayHistorique de la conversation. Chaque élément : {role, content} avec rolesystem / user / assistant.
streambooleanSi true, la réponse est envoyée sous forme de chunks SSE. Voir Streaming.
stream_optionsobjectOptionnel. Le relais force toujours {include_usage: true} vers l'upstream pour que le chunk final porte le bloc d'usage des tokens — le surcharger n'a aucun effet.
max_tokensintegerLimite la longueur de la complétion. Par défaut, le maximum du modèle.
temperaturenumber0 – 2. Plus élevé = plus aléatoire.

POST /v1/responses

POST/v1/responses

OpenAI Responses API — le format de requête OpenAI le plus récent (client.responses.create(...)). Fonctionne nativement avec les modèles gpt-* et via le même pont de compatibilité que chat/completions avec claude-*. Les modèles Gemini utilisent /v1/messages. L'utilisation est facturée selon les tokens d'entrée et de sortie au tarif du modèle.

ParamètreTypeDescription
modelstringUn ID de modèle gpt-* ou claude-* répertorié. Les modèles Gemini sont disponibles uniquement via Messages.
inputstring | arrayL'invite - une chaîne simple ou la liste d'éléments structurés définie par Responses API.
max_output_tokensintegerLimite la longueur de réponse (raisonnement + sortie visible combinés).
reasoningobject{"effort": "..."} — les cinq mêmes valeurs que reasoning_effort.
streambooleanSi true, diffuse la séquence de réponses standard SSE : response.created, response.output_text.delta, …, response.completed.
backgroundbooleanNon pris en charge. background: true renvoie 400 unsupported_background_mode — le relais ne sert qu'à des courses synchrones.
À noter Le suffixe de recherche Web :online n'a aucun effet sur ce point de terminaison : le suffixe est supprimé mais aucun contexte de recherche n'est injecté (les requêtes sont extraites de messages, que les requêtes Responses ne transportent pas). Utilisez /v1/chat/completions ou /v1/messages pour recherche Web.

Exemple Responses exécutable :

curl https://api.subnsub.com/v1/responses \
  -H "Authorization: Bearer sk-cf-xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4-mini",
    "input": "Explain exponential backoff in two sentences."
  }'

POST /v1/messages

POST/v1/messages

Endpoint Anthropic natif pour les modèles claude-*, avec un accès compatible Messages aux deux modèles gemini-* répertoriés. Le SDK Anthropic fonctionne sans modification avec ce chemin. Utilisez https://api.subnsub.com comme URL de base et authentifiez-vous avec x-api-key (Authorization-Bearer fonctionne aussi).

ParamètreTypeDescription
modelstringUn ID de modèle claude-* ou gemini-* répertorié (voir Modèles disponibles). Gemini permet la génération ici, mais pas /v1/messages/count_tokens. Un modèle OpenAI renvoie 400 invalid_request_error.
max_tokensintegerRequis par Anthropic — limite la longueur de la réponse de l'assistant.
messagesarrayHistorique de la conversation, format Anthropic : {role, content} avec roleuser / assistant.
streambooleanSi true, renvoie la séquence d'événements SSE standard d'Anthropic : message_start, content_block_delta, message_delta, message_stop.
thinkingobjectTransmis textuellement à Anthropic. Utilisez {"type":"adaptive"} lorsque cette option est prise en charge. Il n'existe pas d'ID de modèle -thinking synthétique.
cache_controlobjectLe prompt-caching est pris en charge. Les tokens d'écriture de cache sont facturés à 1.25× et les tokens de lecture de cache à 0.10× du tarif d'entrée du tier.
À noter Les demandes Claude sont traitées directement par les comptes officiels Anthropic. Utilisez les identifiants de modèle officiels exacts répertoriés ci-dessous.

Exemple Anthropic Messages exécutable :

curl https://api.subnsub.com/v1/messages \
  -H "x-api-key: sk-cf-xxxxxxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

POST /v1/messages/count_tokens

POST/v1/messages/count_tokens

Comptez les tokens d'un prompt Claude avant de l'envoyer. Utilisez les mêmes champs que pour /v1/messages. Cet endpoint n'est pas facturé et ne prend pas en charge Gemini. Le suffixe :online est retiré, mais les résultats de recherche ne sont ni récupérés ni comptés.

curl https://api.subnsub.com/v1/messages/count_tokens \
  -H "x-api-key: sk-cf-xxxxxxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Count this prompt."}]
  }'

GET /v1/models

GET/v1/models

Liste les modèles réellement appelables. Lorsque tous les fournisseurs configurés sont disponibles, le relais renvoie 18 ID publics vérifiés, soit la même liste autorisée par les endpoints POST. Les modèles d'un fournisseur indisponible sont omis ; si tous les upstreams sont injoignables, il renvoie 502 models_unreachable.

# sample response (truncated)
{
  "object": "list",
  "data": [
    { "id": "gpt-5.4-mini",      "type": "model", ... },
    { "id": "gpt-5.4",           "type": "model", ... },
    { "id": "claude-sonnet-5",     "type": "model", ... },
    { "id": "claude-opus-5",       "type": "model", ... },
    ...
  ]
}

Contrat de compatibilité

Compatible OpenAI ne signifie pas que tous les champs de tous les modèles upstream sont garantis sur chaque route. Trois niveaux de prise en charge s’appliquent :

StatutDétail
Documenté et stableGénération de texte sur les quatre points de terminaison ci-dessus ; réponses synchrones et en streaming ; contrôles de raisonnement documentés ; cache de prompts Anthropic ; :online sur Chat Completions et Messages ; authentification, mesure et formats d’erreur documentés.
Transmission, selon le modèleAppels d’outils/fonctions, outils stricts, sortie structurée / JSON Schema, contrôles d’échantillonnage, séquences d’arrêt, contenu multipartie (images ou documents compris) et limites de contexte/sortie. L’edge transmet ces champs sans validation locale, mais la prise en charge et la forme exacte de la réponse varient selon le modèle et le protocole. Testez précisément votre modèle et votre payload avant la production ; aucune normalisation entre fournisseurs n’est garantie.
Non proposéExécutions Responses en arrière-plan ; :online sur Responses ; API OpenAI de génération d’images, audio, Realtime, Batch, Files, Embeddings et Moderation ; alias Claude synthétiques en -thinking ; et effort de raisonnement OpenAI minimal.
Astuce Considérez openapi.json et cette page comme le contrat pris en charge. Un champ accepté aujourd’hui par un fournisseur peut y être retiré sans devenir une garantie permanente de SUB&SUB.

Modèles disponibles

Trois familles upstream : 7 modèles OpenAI utilisent des comptes ChatGPT partagés, 9 modèles Claude des comptes Anthropic officiels, et 2 modèles Gemini le pool d'abonnement Antigravity via l'endpoint compatible Messages. La même clé fonctionne pour les trois.

OpenAI

ID du modèleFamilleTierNotes
gpt-5.4-mini GPT-5.4Mini Rapide & économique. Défaut recommandé pour le chat & le coding.
gpt-5.4 GPT-5.4StandardGPT-5.4 pleine taille — plus lent, raisonnement plus solide.
gpt-5.4-2026-03-05GPT-5.4StandardInstantané daté de gpt-5.4.
gpt-5.5 GPT-5.5Premium Nouveau modèle phare.
gpt-5.6-luna GPT-5.6Luna Léger GPT-5.6 — entre Mini et Standard.
gpt-5.6-terra GPT-5.6StandardTaille moyenne GPT-5.6 — même tarif que gpt-5.4.
gpt-5.6-sol GPT-5.6Premium Top GPT-5.6 — même tarif que gpt-5.5.

Anthropic

ID du modèleFamilleTierNotes
claude-haiku-4-5-20251001 Haiku 4.5 Mini Le plus petit Claude — même tarif par token que gpt-5.4-mini.
claude-sonnet-4-5-20250929 Sonnet 4.5 StandardClaude de milieu de gamme — même tarif par token que gpt-5.4.
claude-sonnet-4-6 Sonnet 4.6 StandardNouveau réglage de Sonnet — tier Standard, même tarif que sonnet-4.5.
claude-sonnet-5 Sonnet 5 Sonnet 5 IntroDernier Sonnet ; le prix de lancement s’applique jusqu’au 31 août 2026.
claude-opus-4-5-20251101 Opus 4.5 Ultra Claude de pointe. Facturé au tarif public d'Anthropic — sans marge (voir Tarifs).
claude-opus-4-6 Opus 4.6 Ultra Nouveau réglage d'Opus.
claude-opus-4-7 Opus 4.7 Ultra Instantané d'Opus précédent.
claude-opus-4-8 Opus 4.8 Ultra Dernier instantané d'Opus.
claude-opus-5 Opus 5 Ultra Le tout dernier modèle phare Opus. Servi par des comptes Anthropic officiels au niveau Ultra.

Gemini

ID du modèleFamilleTierNotes
gemini-3.1-proGemini 3.1 ProStandardModèle Gemini plus performant. Disponible via /v1/messages.
gemini-3-flashGemini 3 FlashStandardModèle Gemini à latence réduite. Disponible via /v1/messages.
Gemini prend actuellement en charge la génération de texte uniquement via POST /v1/messages. Chat Completions, Responses et /v1/messages/count_tokens renvoient 400 invalid_request_error pour ces modèles.
À noter Le catalogue Claude utilise les identifiants de modèles officiels Anthropic. La mise en cache des invites est prise en charge : le cache écrit la facture à 1,25 × et lit à 0,10 × le débit d'entrée du niveau (voir Pricing).
Non disponible Les identifiants OpenAI retirés (gpt-5.2* et gpt-5.3-codex*), l'alias gpt-5.6 nu (utilisez les variantes nommées ci-dessus), les variantes OpenAI Pro/image/audio/realtime, les identifiants de notation par points (par exemple claude-sonnet-4.5) et les identifiants de modèle synthétiques -thinking ne sont pas disponibles. Utilisez les identifiants exacts ci-dessus et le champ thinking natif de Anthropic.

Effort de raisonnement

Chaque modèle OpenAI ci-dessus est un modèle de raisonnement — le backend peut dépenser plus ou moins de jetons de « réflexion » avant d'émettre une sortie visible. Définissez reasoning_effort sur le corps de la demande OpenAI /v1/chat/completions (ou reasoning: {"effort": ...} sur /v1/responses) pour contrôler le budget. Pour Claude, utilisez les champs Anthropic-natifs thinking et output_config.effort — voir la section /v1/messages. Les modèles OpenAI acceptent les mêmes cinq valeurs d'effort :

ValeurComportement
none Aucune réflexion — directement à la réponse. Le moins cher et le plus rapide.
low Une courte passe de raisonnement.
medium Défaut si tu ne passes pas le champ. Équilibré.
high Raisonnement plus approfondi. Recommandé pour le coding non trivial / les problèmes à plusieurs étapes.
xhigh Effort maximal. Le plus lent et le plus coûteux ; réserve-le aux analyses difficiles où tu en as vraiment besoin.
# Two equivalent forms — pick whichever your SDK supports
{
  "model": "gpt-5.4-mini",
  "reasoning_effort": "high",
  "messages": [ ... ]
}

{
  "model": "gpt-5.5",
  "reasoning": { "effort": "xhigh" },
  "messages": [ ... ]
}
Coût Les tokens de réflexion comptent comme des tokens de sortie pour la facturation — plus d'effort = plus de tokens de sortie = une facture plus élevée sur le même prompt. Le tarif par token ne change pas.
À noter Le protocole OpenAI définit aussi 'minimal', mais les modèles de ce relais le rejettent : « 'minimal' is not supported with this model ». Tiens-t'en aux cinq valeurs ci-dessus.

Streaming

Définis "stream": true pour recevoir des Server-Sent Events. Le chunk final porte un bloc usage (nous forçons stream_options.include_usage en upstream pour que les comptes de tokens soient toujours émis), puis un data: [DONE] littéral ferme le flux.

# Streaming format (line by line)
data: {"id":"resp_...","choices":[{"delta":{"content":"Hi"}}]}

data: {"id":"resp_...","choices":[{"delta":{"content":"!"}}]}

data: {"id":"resp_...","choices":[],"usage":{"prompt_tokens":18,"completion_tokens":11,"total_tokens":29}}

data: [DONE]

Exemple Python de streaming exécutable :

from openai import OpenAI

client = OpenAI(
    api_key="sk-cf-xxxxxxxxxxxx",
    base_url="https://api.subnsub.com/v1",
)

stream = client.chat.completions.create(
    model="gpt-5.4-mini",
    messages=[{"role": "user", "content": "Hello"}],
    stream=True,
)
for chunk in stream:
    text = chunk.choices[0].delta.content if chunk.choices else None
    if text:
        print(text, end="", flush=True)

Ajoute :online à n'importe quel ID de modèle pris en charge par l'endpoint et le relais lancera une recherche web avant de transmettre au modèle, en préfixant la conversation avec les résultats pour que la réponse s'appuie sur des données fraîches. Le suffixe fonctionne sur /v1/chat/completions et /v1/messages (ce dernier exige toujours une base claude-*) ; aucun champ de requête spécifique à la recherche n'est requis.

# Same call as before — just :online on the model
curl https://api.subnsub.com/v1/chat/completions \
  -H "Authorization: Bearer sk-cf-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4-mini:online",
    "messages": [
      {"role": "user", "content": "What did Anthropic ship this week?"}
    ]
  }'

Comment ça marche : le relais retire :online, prend le message utilisateur le plus récent comme requête (limité à 400 caractères), appelle Tavily pour un maximum de 3 résultats avec le texte de page extrait lorsqu'il est disponible, plus un résumé optionnel généré par Tavily, puis les préfixe à ce même tour utilisateur sous forme de bloc <search_results> clairement délimité avant d'envoyer la requête à l'upstream. L'appel de recherche a un délai d'expiration de 8 secondes. Les résultats sont délibérément injectés dans le rôle utilisateur — jamais dans le prompt système — afin que des extraits non fiables ne puissent pas être élevés au rang d'instructions de priorité système.

Le bloc <search_results> ressemble à ceci. Il est précédé d'une instruction sur une ligne indiquant au modèle de traiter le bloc comme des données externes non fiables et de citer les éléments numérotés en ligne :

<search_results query="What did Anthropic ship this week?" retrieved="2026-05-21">
Summary: <short LLM-generated synthesis of the result set>

[1] Anthropic launches Opus 4.8
URL: https://www.anthropic.com/news/opus-4-8
<extracted page text, or short snippet if extraction failed — up to ~2000 chars>

[2] ...
</search_results>
ComportementDétail
CoûtAucun supplément aujourd'hui — tu paies le tarif par token normal du modèle ; le relais absorbe l'appel de recherche. Le bloc <search_results> injecté compte bien comme des tokens d'entrée, alors attends-toi à une facture de tokens de prompt plus élevée que pour la même question sans :online.
Mode d'échecSouple. Si Tavily expire ou échoue, la requête continue vers le modèle sans contexte de recherche (tu obtiens quand même une réponse, simplement non étayée). Le seul échec dur est 503 search_unavailable lorsque la recherche n'est pas du tout configurée sur le relais.
count_tokens/v1/messages/count_tokens retire le suffixe mais n'appelle jamais Tavily — le compte reflète ton prompt original, pas le prompt augmenté.
Multi-toursSeul le dernier tour utilisateur est interrogé & augmenté ; les tours précédents restent intacts. Pour rechercher à nouveau, envoie un nouveau message utilisateur avec :online toujours sur le modèle.

Quand utiliser :online

Le relais effectue un seul appel Tavily par requête et injecte les résultats — ce n'est pas une boucle de recherche agentique. Le modèle ne décide pas de relancer une recherche en fonction de ce qu'il voit, comme le font Perplexity Sonar ou l'outil de navigation de ChatGPT. Planifie en tenant compte de cette limitation :

Bon usageMauvais usage
Faits sensibles au temps (actualités, prix, numéros de version, dates de sortie)Code privé ou collé qui n'est pas sur le web public — ajoute du bruit au prompt sans étayage
Localiser une doc ou une annonce officielleMaths, raisonnement, traduction, écriture créative — rien à étayer
Tout ce que tu vérifierais autrement avec une recherche GoogleConnaissances stables déjà présentes dans les données d'entraînement (« qu'est-ce qu'un arbre binaire »)

Formule le dernier message utilisateur comme une requête de recherche autonome. La recherche s'effectue sur le texte littéral de ton tour utilisateur le plus récent (limité à 400 caractères), donc des relances conversationnelles comme « et qu'en est-il de la dernière version ? » deviennent des requêtes inutiles sans contexte. Dans un chat multi-tours, redonne le sujet quand tu ajoutes :online — par ex. « dernière version du SDK Python Anthropic » plutôt que « la dernière ».

Pour les questions nécessitant une synthèse en plusieurs étapes (comparaison, recherche approfondie), décompose-les en plusieurs tours et ajoute :online à chacun. Le modèle lira les résultats frais de chaque tour ; tu orientes manuellement la requête suivante. Note que le bloc <search_results> injecté n'est envoyé qu'à l'upstream — il n'est pas renvoyé à ton client et n'est pas conservé pour la requête suivante, donc si un tour ultérieur dépend de détails de sources antérieures, demande au modèle de les résumer dans sa réponse visible. Le mode recherche en une seule fois n'est pas pris en charge.

Astuce Combine avec un effort de raisonnement élevé (reasoning_effort: "high") pour que le modèle pèse réellement les sources retournées plutôt que de se reposer sur le premier résultat. L'instruction injectée demande au modèle de citer les sources numérotées sous la forme [1], [2] en ligne, donc la sortie portera généralement de telles citations — bien que le modèle ne soit pas strictement tenu de respecter ce format.

Erreurs

L'enveloppe dépend de l'endpoint que tu as appelé — le relais renvoie les erreurs dans le protocole correspondant au SDK de l'appelant, et les erreurs upstream sont transmises telles quelles.

Chemins OpenAI (/v1/chat/completions, /v1/responses, /v1/models) — enveloppe OpenAI :

{ "error": { "message": "...", "type": "...", "code": "..." } }

Chemins Anthropic (/v1/messages, /v1/messages/count_tokens) — enveloppe Anthropic :

{ "type": "error", "error": { "type": "...", "message": "..." } }

L'enveloppe Anthropic utilise un format différent — pas de champ code, et le discriminateur type: "error" est au niveau racine (avec l'error.type interne donnant la catégorie, par ex. authentication_error, invalid_request_error, permission_error, api_error). Les SDK Anthropic analysent déjà ce format ; les gestionnaires d'erreurs du SDK OpenAI standard ne le feront pas, alors appelle /v1/messages avec un SDK Anthropic (ou fais du HTTP brut).

Les codes de statut sont les codes HTTP canoniques dans les deux protocoles :

StatutOpenAI code / Anthropic error.typeSignification
401invalid_api_key / authentication_errorClé sk-cf-... manquante ou inconnue.
402insufficient_balance / permission_errorLe solde du compte est négatif. Recharge dans l'onglet facturation de la console.
403key_revoked / permission_errorLa clé a été révoquée.
403account_closed / permission_errorLe compte n'est pas activé pour l'accès API : les inscriptions après la date limite de service du 08/06/2026 n'incluent pas le service API.
400model_not_available / invalid_request_errorLe model que tu as envoyé n'est pas dans le catalogue vérifié, ou est incorrect pour l'endpoint (par ex. un modèle OpenAI sur /v1/messages) — vérifie Modèles disponibles.
400unsupported_background_mode / —background: true sur /v1/responses — le relais ne dessert que les courses synchrones. Enveloppe OpenAI uniquement.
429rate_limit_exceeded / rate_limit_errorLa capacité upstream partagée est temporairement limitée. Respectez retry-after lorsqu’il est présent, puis réessayez avec un backoff exponentiel et du jitter.
503Aucun compte upstream ne sert actuellement la requête — généralement une fenêtre de limitation de débit transitoire à l'échelle du pool. Réessaie après un court backoff.
503search_unavailable / api_errorTu as utilisé :online mais la recherche web n'est pas configurée sur ce relais. Voir Recherche web.
502upstream_unreachable / api_errorLe relais n'a pas pu atteindre le backend. Réessaie après un court délai.
500server_error / api_errorLe relais a échoué avant ou après le contact avec l’upstream. Ne réessayez que si l’opération peut être répétée sans risque ; sinon, consultez d’abord l’historique d’utilisation.

Nouvelles tentatives et fiabilité

Limitez le nombre de tentatives. Le relais repose sur une capacité upstream partagée et les requêtes de génération ne sont pas idempotentes.

Tarifs & facturation

Paiement à l'usage, facturé par token en microdollars (1 micro = $0.000001 = 1/10,000 de cent) pour que les requêtes inférieures au cent soient suivies précisément. Les tarifs sont par 1M tokens, par tier — voir le tableau des modèles pour savoir à quel tier chaque modèle correspond.

TierModèlesEntrée / 1MSortie / 1M
Mini gpt-5.4-mini, claude-haiku-4-5-20251001 $0.20$1.60
Luna gpt-5.6-luna $0.30$2.40
Standardgpt-5.4, gpt-5.4-2026-03-05, gpt-5.6-terra, claude-sonnet-4-5-20250929, claude-sonnet-4-6, gemini-3.1-pro, gemini-3-flash$0.75$6.00
Premium gpt-5.5, gpt-5.6-sol $1.10$8.80
Sonnet 5 Introclaude-sonnet-5 $2.00$10.00
Ultra claude-opus-4-5-20251101, claude-opus-4-6, claude-opus-4-7, claude-opus-4-8, claude-opus-5$5.00$25.00

Les tarifs Ultra correspondent aux prix catalogue publiés par Anthropic. Sonnet 5 utilise le tarif de lancement de $2/$10 jusqu'au 31 août 2026 ; son prix standard publié ensuite est de $3/$15. Les autres niveaux restent sous les tarifs upstream grâce au pool d'abonnements.

Les jetons de raisonnement (lorsque vous définissez reasoning_effort sur OpenAI, ou le champ thinking natif de Anthropic sur Claude) comptent comme des jetons output au taux de niveau du modèle - il n'y a pas de supplément distinct pour un effort élevé, mais une requête réfléchie peut facilement émettre 10 à 50 fois plus de jetons de sortie qu'un sans effort, donc le billet d'un dollar évolue avec lui.

Le prompt-caching Anthropic est facturé comme une ligne distincte : écritures de cache à 1.25× et lectures de cache à 0.10× du tarif d'entrée du tier. Ainsi, un cache hit haiku-4.5 coûte 0.20 × 0.10 = $0.02 per 1M tokens, et un cache hit sonnet-4.5 coûte 0.75 × 0.10 = $0.075 per 1M tokens. Les tokens de cache sont détaillés dans le relevé de facturation de chaque requête — la console affiche le détail.

Le solde est déduit en temps réel à mesure que chaque requête se termine — pour les requêtes en streaming, le règlement s'exécute après l'arrivée du chunk [DONE]. Consulte ton solde en direct et les règlements par requête sur /console#billing.

Recharge La console prend en charge Stripe Checkout — carte et Link. Les crédits n'expirent jamais.

Limites de débit

Pas de limites de débit par clé aujourd'hui. La capacité upstream partagée et le throttling côté fournisseur s'appliquent toujours ; si tu les atteins, le relais renvoie 429 avec un en-tête retry-after. Les limites RPM / TPM par clé sont prévues.

État et assistance

Documentation révisée pour la dernière fois le 1er août 2026.